humanize-4.16.0/.pre-commit-config.yaml0000644000000000000000000000354015220765405014641 0ustar00repos: - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.15.9 hooks: - id: ruff-check args: [--exit-non-zero-on-fix] - repo: https://github.com/psf/black-pre-commit-mirror rev: 26.3.1 hooks: - id: black - repo: https://github.com/pre-commit/pre-commit-hooks rev: v6.0.0 hooks: - id: check-added-large-files - id: check-case-conflict - id: check-merge-conflict - id: check-json - id: check-toml - id: check-yaml - id: debug-statements - id: end-of-file-fixer - id: forbid-submodules - id: requirements-txt-fixer - id: trailing-whitespace exclude: \.github/ISSUE_TEMPLATE\.md|\.github/PULL_REQUEST_TEMPLATE\.md - repo: https://github.com/python-jsonschema/check-jsonschema rev: 0.37.1 hooks: - id: check-github-workflows - id: check-renovate - repo: https://github.com/rhysd/actionlint rev: v1.7.12 hooks: - id: actionlint - repo: https://github.com/zizmorcore/zizmor-pre-commit rev: v1.23.1 hooks: - id: zizmor - repo: https://github.com/tox-dev/pyproject-fmt rev: v2.21.0 hooks: - id: pyproject-fmt - repo: https://github.com/abravalheri/validate-pyproject rev: v0.25 hooks: - id: validate-pyproject - repo: https://github.com/tox-dev/tox-ini-fmt rev: 1.7.1 hooks: - id: tox-ini-fmt - repo: https://github.com/google/yamlfmt rev: v0.21.0 hooks: - id: yamlfmt - repo: https://github.com/rbubley/mirrors-prettier rev: v3.8.1 hooks: - id: prettier args: [--prose-wrap=always, --print-width=88] exclude: \.github/ISSUE_TEMPLATE\.md|\.github/PULL_REQUEST_TEMPLATE\.md - repo: meta hooks: - id: check-hooks-apply - id: check-useless-excludes ci: autoupdate_schedule: quarterly humanize-4.16.0/.readthedocs.yml0000644000000000000000000000060715220765405013447 0ustar00# Read the Docs configuration file # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # Project page: https://readthedocs.org/projects/python-humanize/ version: 2 mkdocs: configuration: mkdocs.yml build: os: ubuntu-22.04 tools: python: "3" commands: - pip install -U tox - tox -e docs - mkdir _readthedocs - mv site _readthedocs/html humanize-4.16.0/.yamlfmt.yaml0000644000000000000000000000005515220765405012771 0ustar00formatter: retain_line_breaks_single: true humanize-4.16.0/RELEASING.md0000644000000000000000000000161215220765405012211 0ustar00# Release checklist - [ ] Get `main` to the appropriate code release state. [GitHub Actions](https://github.com/python-humanize/humanize/actions) should be running cleanly for all merges to `main`. [![GitHub Actions status](https://github.com/python-humanize/humanize/workflows/Test/badge.svg)](https://github.com/python-humanize/humanize/actions) - [ ] Edit release draft, adjust text if needed: https://github.com/python-humanize/humanize/releases - [ ] Check next tag is correct, amend if needed - [ ] Publish release - [ ] Check the tagged [GitHub Actions build](https://github.com/python-humanize/humanize/actions/workflows/release.yml) has released to [PyPI](https://pypi.org/project/humanize/#history) - [ ] Check installation: ```bash pip3 uninstall -y humanize && pip3 install -U humanize && python3 -c "import humanize; print(humanize.__version__)" ``` humanize-4.16.0/mkdocs.yml0000644000000000000000000000153315220765405012363 0ustar00site_name: humanize site_url: https://humanize.readthedocs.io repo_url: https://github.com/python-humanize/humanize theme: name: material palette: - media: "(prefers-color-scheme: light)" scheme: default toggle: icon: material/toggle-switch-off-outline name: Switch to dark mode - media: "(prefers-color-scheme: dark)" scheme: slate toggle: icon: material/toggle-switch name: Switch to light mode nav: - Home: index.md - Number: number.md - Time: time.md - Filesize: filesize.md - Lists: lists.md - Internationalisation: i18n.md plugins: - search - mkdocstrings: - include-markdown markdown_extensions: - pymdownx.highlight: use_pygments: true pygments_lang_class: true - pymdownx.superfences extra_css: - css/code_select.css watch: - src/humanize humanize-4.16.0/requirements-mypy.txt0000644000000000000000000000006415220765405014636 0ustar00mypy==2.1.0 pytest types-freezegun types-setuptools humanize-4.16.0/tox.ini0000644000000000000000000000123715220765405011674 0ustar00[tox] requires = tox>=4.32 env_list = docs lint mypy py{py3} py{310-315} py{314-315}t [testenv] extras = tests pass_env = FORCE_COLOR commands = {envpython} -m pytest \ --cov humanize \ --cov tests \ --cov-report html \ --cov-report term \ --cov-report xml \ {posargs} [testenv:docs] deps = -r docs/requirements.txt commands = mkdocs build [testenv:lint] skip_install = true deps = prek commands = prek run --all-files --show-diff-on-failure [testenv:mypy] deps = -r requirements-mypy.txt commands = mypy . {posargs} [pytest] addopts = --color=yes --doctest-modules humanize-4.16.0/.github/CONTRIBUTING.md0000644000000000000000000000075215220765405014153 0ustar00# Contributing ## Linting Linting is run on the CI using [prek](https://prek.j178.dev//), and can be run locally: ```sh pip install prek prek install # optional: to run when you commit, on just the staged changes prek 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/python-humanize/humanize#localization). humanize-4.16.0/.github/FUNDING.yml0000644000000000000000000000005115220765405013527 0ustar00github: hugovk tidelift: "pypi/humanize" humanize-4.16.0/.github/ISSUE_TEMPLATE.md0000644000000000000000000000067215220765405014430 0ustar00### 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 ``` humanize-4.16.0/.github/PULL_REQUEST_TEMPLATE.md0000644000000000000000000000007215220765405015516 0ustar00Fixes # Changes proposed in this pull request: * * * humanize-4.16.0/.github/SECURITY.md0000644000000000000000000000022015220765405013501 0ustar00# Security policy Security reports can be made via [Tidelift](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure. humanize-4.16.0/.github/labels.yml0000644000000000000000000000363615220765405013713 0ustar00# 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: 0366d6 description: "For dependencies" name: dependencies - 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: d65e88 description: "Deploy and release" name: release - color: fbca04 description: "Unit tests, linting, CI, etc." name: testing humanize-4.16.0/.github/release-drafter.yml0000644000000000000000000000157415220765405015515 0ustar00name-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" autolabeler: - label: "changelog: skip" branch: - "/pre-commit-ci-update-config/" template: | $CHANGES version-resolver: major: labels: - "changelog: Removed" minor: labels: - "changelog: Added" - "changelog: Changed" - "changelog: Deprecated" - "enhancement" patch: labels: - "changelog: Fixed" - "bug" default: minor humanize-4.16.0/.github/renovate.json0000644000000000000000000000105615220765405014436 0ustar00{ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": ["config:recommended", ":semanticCommitsDisabled"], "labels": ["changelog: skip", "dependencies"], "minimumReleaseAge": "7 days", "packageRules": [ { "groupName": "github-actions", "matchManagers": ["github-actions"], "separateMajorMinor": false }, { "groupName": "docs/requirements.txt", "matchFileNames": ["docs/requirements.txt"], "separateMajorMinor": false } ], "schedule": ["on the first day of the month"] } humanize-4.16.0/.github/workflows/benchmark.yml0000644000000000000000000000175615220765405016441 0ustar00name: Benchmark on: [push, pull_request, workflow_dispatch] permissions: {} env: FORCE_COLOR: 1 PIP_DISABLE_PIP_VERSION_CHECK: 1 jobs: benchmarks: runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Set up Python 3.14 uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: "3.14" allow-prereleases: true - name: Install gettext run: | sudo apt install gettext - name: Generate translation binaries run: | scripts/generate-translation-binaries.sh - name: Install dependencies run: pip install -e ".[tests]" - name: Run benchmarks uses: CodSpeedHQ/action@3194d9a39c4d46684cb44bf7207fc56626aad8fd # v4.15.1 with: mode: simulation run: pytest tests/test_benchmarks.py --codspeed humanize-4.16.0/.github/workflows/docs.yml0000644000000000000000000000116315220765405015427 0ustar00name: Docs on: [push, pull_request, workflow_dispatch] permissions: {} env: FORCE_COLOR: 1 jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Set up Python uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: "3.x" - name: Install uv uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 - name: Docs run: | uvx --with tox-uv tox -e docs humanize-4.16.0/.github/workflows/labels.yml0000644000000000000000000000103315220765405015735 0ustar00name: Sync labels on: push: branches: - main paths: - .github/labels.yml workflow_dispatch: jobs: sync: permissions: pull-requests: write runs-on: ubuntu-slim steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - uses: micnncim/action-label-syncer@3abd5ab72fda571e69fffd97bd4e0033dd5f495c # v1.3.0 with: prune: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} humanize-4.16.0/.github/workflows/lint.yml0000644000000000000000000000155115220765405015446 0ustar00name: Lint on: [push, pull_request, workflow_dispatch] permissions: {} env: FORCE_COLOR: 1 RUFF_OUTPUT_FORMAT: github jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - uses: j178/prek-action@bdca6f102f98e2b4c7029491a53dfd366469e33d # v2.0.4 mypy: runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: "3.x" - name: Install uv uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 - name: Mypy run: uvx --with tox-uv tox -e mypy humanize-4.16.0/.github/workflows/release-drafter.yml0000644000000000000000000000243415220765405017546 0ustar00name: Release drafter on: push: # branches to consider in the event; optional, defaults to all branches: - main # pull_request event is required only for autolabeler pull_request: # Only following types are handled by the action, but one can default to all as well types: [opened, reopened, synchronize] # pull_request_target event is required for autolabeler to support PRs from forks # pull_request_target: # types: [opened, reopened, synchronize] workflow_dispatch: jobs: update_release_draft: if: | github.event.repository.fork == false && github.event_name != 'pull_request' permissions: # write permission is required to create a GitHub Release contents: write runs-on: ubuntu-slim steps: # Drafts your next release notes as pull requests are merged into "main" - uses: release-drafter/release-drafter@693d20e7c1ce1a81d3a41962f85914253b518449 # v7.3.1 autolabeler: if: | github.event.repository.fork == false && github.event_name == 'pull_request' permissions: # write permission is required for autolabeler pull-requests: write runs-on: ubuntu-slim steps: - uses: release-drafter/release-drafter/autolabeler@693d20e7c1ce1a81d3a41962f85914253b518449 # v7.3.1 humanize-4.16.0/.github/workflows/release.yml0000644000000000000000000000427515220765405016126 0ustar00name: Release on: push: branches: [main] tags: ["*"] pull_request: branches: [main] release: types: - published workflow_dispatch: permissions: {} env: FORCE_COLOR: 1 jobs: # Always build & lint package. build-package: name: Build & verify package runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 persist-credentials: false - name: Install gettext run: | sudo apt install gettext - name: Generate translation binaries run: | scripts/generate-translation-binaries.sh - uses: hynek/build-and-inspect-python-package@d44ca7d91762de7a7d5436ddae667c6da6d1c3df # v2.18.0 # Upload to Test PyPI on every commit on main. release-test-pypi: name: Publish in-dev package to test.pypi.org if: | github.event.repository.fork == false && github.event_name == 'push' && github.ref == 'refs/heads/main' runs-on: ubuntu-latest needs: build-package permissions: id-token: write steps: - name: Download packages built by build-and-inspect-python-package uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: Packages path: dist - name: Upload package to Test PyPI uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0 with: repository-url: https://test.pypi.org/legacy/ # Upload to real PyPI on GitHub Releases. release-pypi: name: Publish released package to pypi.org if: | github.event.repository.fork == false && github.event.action == 'published' runs-on: ubuntu-latest needs: build-package permissions: id-token: write steps: - name: Download packages built by build-and-inspect-python-package uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: Packages path: dist - name: Upload package to PyPI uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0 humanize-4.16.0/.github/workflows/require-pr-label.yml0000644000000000000000000000115015220765405017643 0ustar00name: Require PR label on: pull_request: types: [opened, reopened, labeled, unlabeled, synchronize] jobs: label: runs-on: ubuntu-slim permissions: issues: write pull-requests: write steps: - uses: mheap/github-action-required-labels@0ac283b4e65c1fb28ce6079dea5546ceca98ccbe # v5.5.2 with: mode: minimum count: 1 labels: | changelog: Added changelog: Changed changelog: Deprecated changelog: Fixed changelog: Removed changelog: Security changelog: skip humanize-4.16.0/.github/workflows/test.yml0000644000000000000000000000372315220765405015462 0ustar00name: Test on: [push, pull_request, workflow_dispatch] permissions: {} env: FORCE_COLOR: 1 PIP_DISABLE_PIP_VERSION_CHECK: 1 jobs: test: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: python-version: - "pypy3.11" - "3.15t" - "3.15" - "3.14t" - "3.14" - "3.13" - "3.12" - "3.11" - "3.10" os: [windows-latest, macos-latest, ubuntu-latest] steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.python-version }} allow-prereleases: true - name: Set PYTHON_GIL if: endsWith(matrix.python-version, 't') run: | echo "PYTHON_GIL=0" >> "$GITHUB_ENV" - 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 uv uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 - name: Generate translation binaries run: | scripts/generate-translation-binaries.sh - name: Tox tests run: | uvx --python ${{ matrix.python-version }} --with tox-uv tox -e py - name: Upload coverage uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1 with: flags: ${{ matrix.os }} name: ${{ matrix.os }} Python ${{ matrix.python-version }} success: needs: test runs-on: ubuntu-latest name: Test successful steps: - name: Success run: echo Test successful humanize-4.16.0/docs/filesize.md0000644000000000000000000000004215220765405013436 0ustar00# Filesize ::: humanize.filesize humanize-4.16.0/docs/i18n.md0000644000000000000000000000005215220765405012404 0ustar00# Internationalisation ::: humanize.i18n humanize-4.16.0/docs/index.md0000644000000000000000000000042415220765405012737 0ustar00# humanize Welcome to the humanize API reference. - [Number](number.md) - [Time](time.md) - [Filesize](filesize.md) - [Lists](lists.md) - [I18n](i18n.md) {% include-markdown "../README.md" start="" end="" comments=false %} humanize-4.16.0/docs/lists.md0000644000000000000000000000003415220765405012763 0ustar00# Lists ::: humanize.lists humanize-4.16.0/docs/number.md0000644000000000000000000000003615220765405013117 0ustar00# Number ::: humanize.number humanize-4.16.0/docs/requirements.txt0000644000000000000000000000017615220765405014576 0ustar00mkdocs==1.6.1 mkdocs-include-markdown-plugin mkdocs-material mkdocstrings[python]==1.0.4 pygments pymdown-extensions==10.21.3 humanize-4.16.0/docs/time.md0000644000000000000000000000003215220765405012561 0ustar00# Time ::: humanize.time humanize-4.16.0/docs/css/code_select.css0000644000000000000000000000037515220765405015066 0ustar00/* Don't allow to select >>> in ```pycon``` code blocks */ .language-pycon .gp, .language-pycon .go { user-select: none; } /* Hide "Copy to clipboard" buttons in ```pycon``` code blocks */ .highlight.language-pycon .md-clipboard { display: none; } humanize-4.16.0/scripts/generate-translation-binaries.sh0000755000000000000000000000031415220765405020322 0ustar00set -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 humanize-4.16.0/scripts/update-translations.sh0000755000000000000000000000072115220765405016405 0ustar00set -e # extract new phrases xgettext --from-code=UTF-8 -o humanize.pot -k'_' -k'N_' -k'P_:1c,2' -k'NS_:1,2' -k'_ngettext:1,2' -l python src/humanize/*.py for d in src/humanize/locale/*/; do locale="$(basename $d)" echo "$locale" # add them to locale files msgmerge -U src/humanize/locale/$locale/LC_MESSAGES/humanize.po humanize.pot # compile to binary .mo msgfmt --check -o src/humanize/locale/$locale/LC_MESSAGES/humanize{.mo,.po} done humanize-4.16.0/src/humanize/__init__.py0000644000000000000000000000206015220765405015074 0ustar00"""Main package for humanize.""" from __future__ import annotations __lazy_modules__ = { "humanize._version", "humanize.filesize", "humanize.i18n", "humanize.lists", "humanize.number", "humanize.time", } from humanize.filesize import naturalsize from humanize.i18n import activate, deactivate, decimal_separator, thousands_separator from humanize.lists import natural_list from humanize.number import ( apnumber, clamp, fractional, intcomma, intword, metric, ordinal, scientific, ) from humanize.time import ( naturaldate, naturalday, naturaldelta, naturaltime, precisedelta, ) from ._version import __version__ __all__ = [ "__version__", "activate", "apnumber", "clamp", "deactivate", "decimal_separator", "fractional", "intcomma", "intword", "metric", "natural_list", "naturaldate", "naturalday", "naturaldelta", "naturalsize", "naturaltime", "ordinal", "precisedelta", "scientific", "thousands_separator", ] humanize-4.16.0/src/humanize/_version.py0000644000000000000000000000101215220765405015155 0ustar00# file generated by vcs-versioning # don't change, don't track in version control from __future__ import annotations __all__ = [ "__version__", "__version_tuple__", "version", "version_tuple", "__commit_id__", "commit_id", ] version: str __version__: str __version_tuple__: tuple[int | str, ...] version_tuple: tuple[int | str, ...] commit_id: str | None __commit_id__: str | None __version__ = version = '4.16.0' __version_tuple__ = version_tuple = (4, 16, 0) __commit_id__ = commit_id = None humanize-4.16.0/src/humanize/filesize.py0000644000000000000000000000547615220765405015165 0ustar00"""Bits and bytes related humanization.""" from __future__ import annotations __lazy_modules__ = {"humanize.i18n", "math"} from math import log from humanize.i18n import _gettext as _ suffixes = { "decimal": ( "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB", "RB", "QB", ), "binary": ( "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB", "RiB", "QiB", ), "gnu": "KMGTPEZYRQ", } def naturalsize( value: float | str, binary: bool = False, gnu: bool = False, format: str = "%.1f", ) -> str: """Format a number of bytes like a human-readable filesize (e.g. 10 kB). By default, decimal suffixes (kB, MB) are used. Non-GNU modes are compatible with jinja2's `filesizeformat` filter. Examples: ```pycon >>> 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' >>> naturalsize(10**28) '10.0 RB' >>> naturalsize(10**34 * 3) '30000.0 QB' >>> naturalsize(-4096, True) '-4.0 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") % int(bytes_) if abs_bytes < base: return f"{int(bytes_)}B" if gnu else _("%d Bytes") % int(bytes_) exp = int(min(log(abs_bytes, base), len(suffix))) # The suffix is chosen from the unrounded byte count, but `format` rounds the # mantissa afterward; rounding can push it up to `base` (e.g. 999999 is # 999.999 kB, which formats to "1000.0 kB"). When that happens and a larger # suffix is available, step up one suffix so the result reads "1.0 MB". if exp < len(suffix) and abs(float(format % (abs_bytes / (base**exp)))) >= base: exp += 1 space = "" if gnu else " " ret: str = format % (bytes_ / (base**exp)) + space + _(suffix[exp - 1]) return ret humanize-4.16.0/src/humanize/i18n.py0000644000000000000000000001174415220765405014125 0ustar00"""Activate, get and deactivate translations.""" from __future__ import annotations import gettext as gettext_module from threading import local TYPE_CHECKING = False if TYPE_CHECKING: import os import pathlib __all__ = ["activate", "deactivate", "decimal_separator", "thousands_separator"] _TRANSLATIONS: dict[str | None, gettext_module.NullTranslations] = { None: gettext_module.NullTranslations() } _CURRENT = local() # Mapping of locale to thousands separator _THOUSANDS_SEPARATOR: dict[str | None, str] = { "de_DE": ".", "fr_FR": " ", "it_IT": ".", "pt_BR": ".", "hu_HU": " ", "lv": " ", } # Mapping of locale to decimal separator _DECIMAL_SEPARATOR: dict[str | None, str] = { "de_DE": ",", "fr_FR": ".", "it_IT": ",", "pt_BR": ",", "hu_HU": ",", "lv": ",", } def _get_default_locale_path() -> pathlib.Path | None: package = __spec__ and __spec__.parent if not package: return None import importlib.resources with importlib.resources.as_file(importlib.resources.files(package)) as pkg: return pkg / "locale" def get_translation() -> gettext_module.NullTranslations: return _TRANSLATIONS.get(getattr(_CURRENT, "locale", None), _TRANSLATIONS[None]) def activate( locale: str | None, path: str | os.PathLike[str] | None = None ) -> gettext_module.NullTranslations: """Activate internationalisation. Set `locale` as current locale. Search for locale in directory `path`. Args: locale (str | None): Language name, e.g. `en_GB`. If `None`, defaults to no translation. Similar to calling ``deactivate()``. path (str | pathlib.Path): Path to search for locales. Returns: dict: Translations. Raises: FileNotFoundError: If humanize cannot find the locale folder. """ if locale is None or locale.startswith("en"): _CURRENT.locale = None return _TRANSLATIONS[None] if path is None: path = _get_default_locale_path() if path is None: msg = ( "Humanize cannot determinate the default location of the 'locale' folder. " "You need to pass the path explicitly." ) raise FileNotFoundError(msg) if locale not in _TRANSLATIONS: translation = gettext_module.translation("humanize", path, [locale]) _TRANSLATIONS[locale] = translation _CURRENT.locale = locale return _TRANSLATIONS[locale] def deactivate() -> None: """Deactivate internationalisation.""" _CURRENT.locale = None def _gettext(message: str) -> str: """Get translation. Args: message (str): Text to translate. Returns: str: Translated text. """ return get_translation().gettext(message) def _pgettext(msgctxt: str, message: str) -> str: """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. """ return get_translation().pgettext(msgctxt, message) def _ngettext(message: str, plural: str, num: int) -> str: """Plural version of _gettext. Args: message (str): Singular text to translate. plural (str): Plural text to translate. num (int): 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: str) -> str: """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: str, plural: str) -> tuple[str, str]: """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. """ return _THOUSANDS_SEPARATOR.get(getattr(_CURRENT, "locale", None), ",") def decimal_separator() -> str: """Return the decimal separator for a locale, default to dot. Returns: str: Decimal separator. """ return _DECIMAL_SEPARATOR.get(getattr(_CURRENT, "locale", None), ".") humanize-4.16.0/src/humanize/lists.py0000644000000000000000000000163715220765405014504 0ustar00"""Lists related humanization.""" from __future__ import annotations TYPE_CHECKING = False if TYPE_CHECKING: from typing import Any __all__ = ["natural_list"] def natural_list(items: list[Any]) -> str: """Natural list. Convert a list of items into a human-readable string with commas and 'and'. Examples: >>> natural_list(["one", "two", "three"]) 'one, two and three' >>> natural_list(["one", "two"]) 'one and two' >>> natural_list(["one"]) 'one' Args: items (list): An iterable of items. Returns: str: A string with commas and 'and' in the right places. """ if not items: return "" if len(items) == 1: return str(items[0]) elif len(items) == 2: return f"{str(items[0])} and {str(items[1])}" else: return ", ".join([str(item) for item in items[:-1]]) + f" and {str(items[-1])}" humanize-4.16.0/src/humanize/number.py0000644000000000000000000003705315220765405014637 0ustar00"""Humanizing functions for numbers.""" from __future__ import annotations __lazy_modules__ = {"bisect"} import bisect from .i18n import _gettext as _ from .i18n import _ngettext, decimal_separator, thousands_separator from .i18n import _ngettext_noop as NS_ from .i18n import _pgettext as P_ TYPE_CHECKING = False if TYPE_CHECKING: from typing import TypeAlias # This type can be better defined by typing.SupportsFloat # but that's a Python 3.8 only typing option. NumberOrString: TypeAlias = float | str _SUPERSCRIPT_MAP = { "0": "⁰", "1": "¹", "2": "²", "3": "³", "4": "⁴", "5": "⁵", "6": "⁶", "7": "⁷", "8": "⁸", "9": "⁹", "-": "⁻", } _SUPERSCRIPT_TRANS = str.maketrans(_SUPERSCRIPT_MAP) _ORDINAL_SUFFIXES = ("th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th") _APNUMBER_WORDS = ( "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", ) def _format_not_finite(value: float) -> str: """Utility function to handle infinite and nan cases.""" import math if math.isnan(value): return "NaN" if math.isinf(value) and value < 0: return "-Inf" if math.isinf(value) and value > 0: return "+Inf" return "" def ordinal(value: NumberOrString, gender: str = "male") -> str: """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 else will return the output of str(value). 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([1, 2, 3]) == "[1, 2, 3]" True ``` Args: value (int, str, float): Integer to convert. gender (str): Gender for translations. Accepts either "male" or "female". Returns: str: Ordinal string. """ import math try: if not math.isfinite(float(value)): return _format_not_finite(float(value)) value = int(value) except (TypeError, ValueError): return str(value) gender = "male" if gender == "male" else "female" digit = 0 if value % 100 in (11, 12, 13) else value % 10 return f"{value}{P_(f'{digit} ({gender})', _ORDINAL_SUFFIXES[digit])}" def intcomma(value: NumberOrString, ndigits: int | None = None) -> str: """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("14308.40", 1) '14,308.4' >>> intcomma(None) 'None' ``` 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. """ import math thousands_sep = thousands_separator() decimal_sep = decimal_separator() try: if isinstance(value, str): value = value.replace(thousands_sep, "").replace(decimal_sep, ".") if not math.isfinite(float(value)): return _format_not_finite(float(value)) if "." in value: value = float(value) else: value = int(value) else: if not math.isfinite(float(value)): return _format_not_finite(float(value)) float(value) except (TypeError, ValueError): return str(value) if ndigits is not None: result = f"{value:,.{ndigits}f}" else: result = f"{value:,}" if thousands_sep != "," or decimal_sep != ".": result = result.translate(str.maketrans(",.", thousands_sep + decimal_sep)) return result 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: NumberOrString, format: str = "%.1f") -> str: """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", 1_200_000 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) 'None' >>> 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`. """ import math try: if not math.isfinite(float(value)): return _format_not_finite(float(value)) value = int(value) except (TypeError, ValueError): return str(value) if value < 0: value *= -1 negative_prefix = "-" else: negative_prefix = "" if value < powers[0]: return f"{negative_prefix}{value}" ordinal = bisect.bisect_right(powers, value) largest_ordinal = ordinal == len(powers) # Consider the biggest power of 10 that is smaller than value ordinal -= 1 power = powers[ordinal] chopped = value / power rounded_value = float(format % chopped) if not largest_ordinal and rounded_value * power == powers[ordinal + 1]: # After rounding, we end up just at the next power ordinal += 1 rounded_value = 1.0 singular, plural = human_powers[ordinal] unit = _ngettext(singular, plural, math.ceil(rounded_value)) decimal_sep = decimal_separator() number = (format % rounded_value).replace(".", decimal_sep) return f"{negative_prefix}{number} {unit}" def apnumber(value: NumberOrString) -> str: """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) 'None' ``` 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, then `str(value)` is returned. """ import math try: if not math.isfinite(float(value)): return _format_not_finite(float(value)) value = int(value) except (TypeError, ValueError): return str(value) if not 0 <= value < 10: return str(value) return _(_APNUMBER_WORDS[value]) def fractional(value: NumberOrString) -> str: """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 * or the str output of the value, if it could not be converted 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) 'None' ``` Args: value (int, float, str): Integer to convert. Returns: str: Fractional number as a string. """ import math try: number = float(value) if not math.isfinite(number): return _format_not_finite(number) except (TypeError, ValueError): return str(value) from fractions import Fraction 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}" if not whole_number: return f"{numerator:.0f}/{denominator:.0f}" # int() truncates toward zero, so for a negative number both # whole_number and numerator carry the minus sign, which prints as # "-1 -3/10". The sign already rides on the whole part; absorb it # from the fractional part so the result reads as a normal mixed # fraction. return f"{whole_number:.0f} {abs(numerator):.0f}/{denominator:.0f}" def scientific(value: NumberOrString, precision: int = 2) -> str: """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) 'None' ``` 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ⁿ. """ import math try: value = float(value) if not math.isfinite(value): return _format_not_finite(value) except (ValueError, TypeError): return str(value) fmt = f"{{:.{int(precision)}e}}" n = fmt.format(value) part1, part2 = n.split("e") # Normalise exponent: int() strips the "+" sign and leading zeros, # while preserving "-" and a single "0" for 10⁰. return part1 + " x 10" + str(int(part2)).translate(_SUPERSCRIPT_TRANS) def clamp( value: float, format: str = "{:}", floor: float | None = None, ceil: float | None = None, floor_token: str = "<", ceil_token: str = ">", ) -> str: """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 that 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 is larger than ceil or smaller than floor, the output will be prepended with a token indicating as such. """ import math if value is None: return None if not math.isfinite(value): return _format_not_finite(value) 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) if callable(format): return token + format(value) msg = ( "Invalid format. Must be either a valid formatting string, or a function " "that accepts value and returns a string." ) raise ValueError(msg) def metric(value: float, unit: str = "", precision: int = 3) -> str: """Return a value with a metric SI unit-prefix appended. Examples: ```pycon >>> metric(1500, "V") '1.50 kV' >>> metric(2e8, "W") '200 MW' >>> metric(220e-6, "F") '220 μF' >>> metric(1e-14, precision=4) '10.00 f' ``` The unit prefix is always chosen so that non-significant zero digits are required. i.e. `123,000` will become `123k` instead of `0.123M` and `1,230,000` will become `1.23M` instead of `1230K`. For numbers that are either too huge or too tiny to represent without resorting to either leading or trailing zeroes, it falls back to `scientific()`. ```pycon >>> metric(1e40) '1.00 x 10⁴⁰' ``` Args: value (int, float): Input number. unit (str): Optional base unit. precision (int): The number of digits the output should contain. Returns: str: """ import math if not math.isfinite(value): return _format_not_finite(value) exponent = int(math.floor(math.log10(abs(value)))) if value != 0 else 0 if exponent >= 33 or exponent < -30: return scientific(value, precision - 1) + unit old_bucket = exponent // 3 * 3 value /= 10**old_bucket digits = int(max(0, precision - exponent % 3 - 1)) if exponent < 30 and round(abs(value), digits) >= 1000: exponent += 3 - exponent % 3 new_bucket = exponent // 3 * 3 value /= 10 ** (new_bucket - old_bucket) digits = int(max(0, precision - exponent % 3 - 1)) if exponent >= 3: ordinal_ = "kMGTPEZYRQ"[exponent // 3 - 1] elif exponent < 0: ordinal_ = "mμnpfazyrq"[(-exponent - 1) // 3] else: ordinal_ = "" value_ = format(value, f".{digits}f") if not (unit or ordinal_) or unit in ("°", "′", "″"): space = "" else: space = " " return f"{value_}{space}{ordinal_}{unit}" humanize-4.16.0/src/humanize/py.typed0000644000000000000000000000000015220765405014452 0ustar00humanize-4.16.0/src/humanize/time.py0000644000000000000000000005130615220765405014302 0ustar00"""Time humanizing functions. These are largely borrowed from Django's `contrib.humanize`. """ from __future__ import annotations __lazy_modules__ = {"humanize.i18n", "humanize.number"} from enum import Enum from functools import total_ordering from .i18n import _gettext as _ from .i18n import _ngettext from .number import intcomma TYPE_CHECKING = False if TYPE_CHECKING: import datetime as dt from collections.abc import Iterable from typing import Any __all__ = [ "naturaldate", "naturalday", "naturaldelta", "naturaltime", "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: Any) -> Any: if self.__class__ is other.__class__: return self.value < other.value return NotImplemented def _now() -> dt.datetime: import datetime as dt return dt.datetime.now() def _abs_timedelta(delta: dt.timedelta) -> dt.timedelta: """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: Any, *, now: dt.datetime | None = None, precise: bool = False ) -> tuple[Any, Any]: """Turn a value into a date and a timedelta which represents how long ago it was. If that's not possible, return `(None, value)`. """ import datetime as dt 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 = value if precise else round(value) delta = dt.timedelta(seconds=value) date = now - delta except (ValueError, TypeError): return None, value return date, _abs_timedelta(delta) def naturaldelta( value: dt.timedelta | float, months: bool = True, minimum_unit: str = "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. The timedelta will be rounded to the nearest unit that makes sense. Args: value (datetime.timedelta, int or float): 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. 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 (cannot be float due to 'inf' or 'nan'). 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:: ```pycon >>> 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" True ``` """ import datetime as dt tmp = Unit[minimum_unit.upper()] if tmp not in (Unit.SECONDS, Unit.MILLISECONDS, Unit.MICROSECONDS): msg = f"Minimum unit '{minimum_unit}' not supported" raise ValueError(msg) min_unit = tmp if isinstance(value, dt.timedelta): delta = value else: try: int(value) # Explicitly don't support string such as "NaN" or "inf" value = float(value) delta = dt.timedelta(seconds=value) except (ValueError, TypeError): return str(value) use_months = months delta = abs(delta) years = delta.days // 365 days = delta.days % 365 num_months = round(days / 30.5) if years == 0 and days < 1: if delta.seconds == 0: if min_unit == Unit.MICROSECONDS and delta.microseconds < 1000: return ( _ngettext("%d microsecond", "%d microseconds", delta.microseconds) % delta.microseconds ) if min_unit == Unit.MILLISECONDS or ( min_unit == Unit.MICROSECONDS and 1000 <= delta.microseconds < 1_000_000 ): milliseconds = delta.microseconds / 1000 return ( _ngettext("%d millisecond", "%d milliseconds", int(milliseconds)) % milliseconds ) return _("a moment") if delta.seconds == 1: return _("a second") if delta.seconds < 60: return _ngettext("%d second", "%d seconds", delta.seconds) % delta.seconds if 60 <= delta.seconds < 3600: minutes = round(delta.seconds / 60) if minutes == 1: return _("a minute") if minutes == 60: return _("an hour") return _ngettext("%d minute", "%d minutes", minutes) % minutes if 3600 <= delta.seconds: hours = round(delta.seconds / 3600) if hours == 1: return _("an hour") if hours == 24: return _("a day") 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 if num_months == 0: return _ngettext("%d day", "%d days", days) % days if num_months == 1: return _("a month") if num_months == 12: return _("a year") return _ngettext("%d month", "%d months", num_months) % num_months elif years == 1: if num_months == 0 and days == 0: return _("a year") if num_months == 0: return _ngettext("1 year, %d day", "1 year, %d days", days) % days if use_months: if num_months == 1: return _("1 year, 1 month") if num_months == 12: years += 1 return _ngettext("%d year", "%d years", years) % years return ( _ngettext("1 year, %d month", "1 year, %d months", num_months) % num_months ) return _ngettext("1 year, %d day", "1 year, %d days", days) % days return _ngettext("%d year", "%d years", years).replace("%d", "%s") % intcomma(years) def naturaltime( value: dt.datetime | dt.timedelta | float, future: bool = False, months: bool = True, minimum_unit: str = "seconds", when: dt.datetime | None = 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. The time will be rounded to the nearest unit that makes sense. Args: value (datetime.datetime, datetime.timedelta, int or float): A `datetime`, a `timedelta`, or a number of seconds. future (bool): Ignored for `datetime`s and `timedelta`s, where the tense is always figured out based on the current time. For integers and floats, 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. """ import datetime as dt value = _convert_aware_datetime(value) when = _convert_aware_datetime(when) now = when or _now() date, delta = _date_and_delta(value, now=now) if date is None: return str(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 str(ago % delta) def _convert_aware_datetime( value: dt.datetime | dt.timedelta | float | None, ) -> Any: """Convert aware datetime to naive datetime and pass through any other type.""" if value is None: return None import datetime as dt if isinstance(value, dt.datetime) and value.tzinfo is not None: value = dt.datetime.fromtimestamp(value.timestamp()) return value def naturalday(value: dt.date | dt.datetime, format: str = "%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`. """ import datetime as dt try: # When value is a tz-aware datetime, compute "today" in that timezone # so the comparison uses the correct local date. if isinstance(value, dt.datetime) and value.tzinfo is not None: today = dt.datetime.now(value.tzinfo).date() else: today = dt.date.today() value = dt.date(value.year, value.month, value.day) except AttributeError: # Passed value wasn't date-ish return str(value) except (OverflowError, ValueError): # Date arguments out of range return str(value) delta = value - today if delta.days == 0: return _("today") if delta.days == 1: return _("tomorrow") if delta.days == -1: return _("yesterday") return value.strftime(format) def naturaldate(value: dt.date | dt.datetime) -> str: """Like `naturalday`, but append a year for dates more than ~five months away.""" import datetime as dt original_value = value try: if isinstance(value, dt.datetime) and value.tzinfo is not None: today = dt.datetime.now(value.tzinfo).date() else: today = dt.date.today() value = dt.date(value.year, value.month, value.day) except AttributeError: # Passed value wasn't date-ish return str(value) except (OverflowError, ValueError): # Date arguments out of range return str(value) delta = _abs_timedelta(value - today) if delta.days >= 5 * 365 / 12: return naturalday(original_value, "%b %d %Y") return naturalday(original_value) def _quotient_and_remainder( value: float, divisor: float, unit: Unit, minimum_unit: Unit, suppress: Iterable[Unit], format: str, ) -> tuple[float, float]: """Divide `value` by `divisor`, returning the quotient and remainder. If `unit` is `minimum_unit`, the quotient will be the rounding of `value / divisor` according to the `format` string and the remainder will be zero. The rationale 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, [], "%0.2f") (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.2f") (0, 36) In other cases, return the quotient and remainder as `divmod` would do it. >>> _quotient_and_remainder(36, 24, Unit.DAYS, Unit.HOURS, [], "%0.2f") (1, 12) """ if unit == minimum_unit: return _rounding_by_fmt(format, value / divisor), 0 if unit in suppress: return 0, value # Convert the remainder back to integer is necessary for months. 1 month is 30.5 # days on average, but if we have 31 days, we want to count is as a whole month, # and not as 1 month plus a remainder of 0.5 days. q, r = divmod(value, divisor) return q, int(r) def _suitable_minimum_unit(min_unit: Unit, suppress: Iterable[Unit]) -> Unit: """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 greater 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 msg = "Minimum unit is suppressed and no suitable replacement was found" raise ValueError(msg) return min_unit def _suppress_lower_units(min_unit: Unit, suppress: Iterable[Unit]) -> set[Unit]: """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 unit in Unit: if unit == min_unit: break suppress.add(unit) return suppress def precisedelta( value: dt.timedelta | float | None, minimum_unit: str = "seconds", suppress: Iterable[str] = (), format: str = "%0.2f", ) -> str: """Return a precise representation of a timedelta or number of seconds. ```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, precise=True) if date is None: return str(value) suppress_set = {Unit[s.upper()] for s in suppress} # Find a suitable minimum unit (it can be greater than the one that the # user gave us, if that one is suppressed). min_unit = Unit[minimum_unit.upper()] min_unit = _suitable_minimum_unit(min_unit, suppress_set) del minimum_unit # Expand the suppressed units list/set to include all the units # that are below the minimum unit suppress_set = _suppress_lower_units(min_unit, suppress_set) # handy aliases days = delta.days secs = delta.seconds usecs = delta.microseconds MILLISECONDS = Unit.MILLISECONDS SECONDS = Unit.SECONDS MINUTES = Unit.MINUTES HOURS = Unit.HOURS DAYS = Unit.DAYS MONTHS = Unit.MONTHS YEARS = Unit.YEARS # 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_set, format ) months, days = _quotient_and_remainder( days, 30.5, MONTHS, min_unit, suppress_set, format ) secs = days * 24 * 3600 + secs days, secs = _quotient_and_remainder( secs, 24 * 3600, DAYS, min_unit, suppress_set, format ) hours, secs = _quotient_and_remainder( secs, 3600, HOURS, min_unit, suppress_set, format ) minutes, secs = _quotient_and_remainder( secs, 60, MINUTES, min_unit, suppress_set, format ) usecs = secs * 1e6 + usecs secs, usecs = _quotient_and_remainder( usecs, 1e6, SECONDS, min_unit, suppress_set, format ) msecs, usecs = _quotient_and_remainder( usecs, 1000, MILLISECONDS, min_unit, suppress_set, format ) # Due to rounding, it could be that a unit is high enough to be promoted to a higher # unit. Example: 59.9 minutes was rounded to 60 minutes, and thus it should become 0 # minutes and one hour more. if msecs >= 1_000 and SECONDS not in suppress_set: msecs -= 1_000 secs += 1 if secs >= 60 and MINUTES not in suppress_set: secs -= 60 minutes += 1 if minutes >= 60 and HOURS not in suppress_set: minutes -= 60 hours += 1 if hours >= 24 and DAYS not in suppress_set: hours -= 24 days += 1 # When adjusting we should not deal anymore with fractional days as all rounding has # been already made. We promote 31 days to an extra month. if days >= 31 and MONTHS not in suppress_set: days -= 31 months += 1 if months >= 12 and YEARS not in suppress_set: months -= 12 years += 1 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), ] import math texts: list[str] = [] for unit, fmt in zip(reversed(Unit), fmts): singular_txt, plural_txt, fmt_value = fmt if fmt_value > 0 or (not texts and unit == min_unit): _fmt_value = 2 if 1 < fmt_value < 2 else int(fmt_value) fmt_txt = _ngettext(singular_txt, plural_txt, _fmt_value) if unit == min_unit and math.modf(fmt_value)[0] > 0: fmt_txt = fmt_txt.replace("%d", format) elif unit == YEARS: if math.modf(fmt_value)[0] == 0: fmt_value = int(fmt_value) fmt_txt = fmt_txt.replace("%d", "%s") texts.append(fmt_txt % intcomma(fmt_value)) continue texts.append(fmt_txt % fmt_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) def _rounding_by_fmt(format: str, value: float) -> float | int: """Round a number according to the string format provided. The string format is the old printf-style string formatting. If we are using a format which truncates the value, such as "%d" or "%i", the returned value will be of type `int`. If we are using a format which rounds the value, such as "%.2f" or even "%.0f", we will return a float. """ result = format % value try: value = int(result) except ValueError: value = float(result) return value humanize-4.16.0/src/humanize/locale/ar/LC_MESSAGES/humanize.mo0000644000000000000000000001256215220765405020576 0ustar00Þ•D<a\àáð ?Tg|� ” ž ª ¸ Ä ÒÞ"ý  0 > J X d r ~ Œ ˜ ¦ ² À Ì Ú æ ô )08H\bg lzŠ�£§»¿×ï  ! % 7 = C L ^ b l ¹q E+ Mq “¿ �S Wá A9 W{ CÓ !*;C KU�]}ß] m y ƒ � ™ ¥ ¯ » Å Ñ Û ç ñ ý   $/8 ?JQIZm¤  (=3Gq¹mÂ0y9³…¼yBm¼*m3¡/¨ Ø ãîa÷ Ydk5<>+=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: 2026-04-07 22:42+0300 Last-Translator: AYMENJD Language-Team: Arabic Language: Arabic (عربي) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5; %d يوم%d يوم%d يومين%d أيام%d يومًا%d يوم%d ساعة%d ساعة%d ساعتين%d ساعات%d ساعة%d ساعة%d ميكروثانية%d ميكروثانية%d ميكروثانيتين%d ميكروثوانٍ%d ميكروثانية%d ميكروثانية%d مللي ثانية%d مللي ثانية%d مللي ثانيتين%d مللي ثوانٍ%d مللي ثانية%d مللي ثانية%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 من الآن صفر صفر أولى أولسنة و %d يومسنة و %d يومسنة و %d يومينسنة و %d أيامسنة و %d يومًاسنة و %d يومسنة و %d شهرسنة و %d شهرسنة و %d شهرينسنة و %d أشهرسنة و %d شهرسنة و %d شهرسنة وشهر ثانية ثاني ثالثة ثالث رابعة رابع خامسة خامس سادسة سادس سابعة سابع ثامنة ثامن تاسعة تاسعيومدقيقةلحظةشهرثانيةسنةساعةمليارمليارمليارينملياراتمليارمليارديسيليونديسيليونديسيليونينديسيليوناتديسيليونديسيليونثمانيةخمسةأربعةجوجلجوجلجوجلينجوجلاتجوجلجوجلمليونمليونمليونينملايينمليونمليونتسعةنونيليوننونيليوننونيليونيننونيليوناتنونيليوننونيليونالآنأوكتيليونأوكتيليونأوكتيليونينأوكتيليوناتأوكتيليونأوكتيليونواحدكوادريليونكوادريليونكوادريليونينكوادريليوناتكوادريليونكوادريليونكوينتليونكوينتليونكوينتليونينكوينتليوناتكوينتليونكوينتليونسبتيليونسبتيليونسبتيليونينسبتيليوناتسبتيليونسبتيليونسبعةسكستليونسكستليونسكستليونينسكستليوناتسكستليونسكستليونستةألفألفألفينآلافألفألفثلاثةاليومغدًاتريليونتريليونتريليونينتريليوناتتريليونتريليوناثنانأمسصفرhumanize-4.16.0/src/humanize/locale/ar/LC_MESSAGES/humanize.po0000644000000000000000000002272015220765405020576 0ustar00# Arabic (عربي) translations for humanize package. # Copyright (C) 2022-2026. # This file is distributed under the same license as the humanize package. # AYMENJD , 2022-2026. # YazeedT, 2023. # msgid "" msgstr "" "Project-Id-Version: humanize\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-08 19:22+0200\n" "PO-Revision-Date: 2026-04-07 22:42+0300\n" "Last-Translator: AYMENJD \n" "Language-Team: Arabic \n" "Language: Arabic (عربي)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" #: src/humanize/number.py:84 msgctxt "0 (male)" msgid "th" msgstr " صفر" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr " أول" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr " ثاني" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr " ثالث" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr " رابع" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr " خامس" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr " سادس" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr " سابع" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr " ثامن" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr " تاسع" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr " صفر" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr " أولى" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr " ثانية" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr " ثالثة" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr " رابعة" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr " خامسة" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr " سادسة" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr " سابعة" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr " ثامنة" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr " تاسعة" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "ألف" msgstr[1] "ألف" msgstr[2] "ألفين" msgstr[3] "آلاف" msgstr[4] "ألف" msgstr[5] "ألف" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "مليون" msgstr[1] "مليون" msgstr[2] "مليونين" msgstr[3] "ملايين" msgstr[4] "مليون" msgstr[5] "مليون" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "مليار" msgstr[1] "مليار" msgstr[2] "مليارين" msgstr[3] "مليارات" msgstr[4] "مليار" msgstr[5] "مليار" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "تريليون" msgstr[1] "تريليون" msgstr[2] "تريليونين" msgstr[3] "تريليونات" msgstr[4] "تريليون" msgstr[5] "تريليون" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "كوادريليون" msgstr[1] "كوادريليون" msgstr[2] "كوادريليونين" msgstr[3] "كوادريليونات" msgstr[4] "كوادريليون" msgstr[5] "كوادريليون" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "كوينتليون" msgstr[1] "كوينتليون" msgstr[2] "كوينتليونين" msgstr[3] "كوينتليونات" msgstr[4] "كوينتليون" msgstr[5] "كوينتليون" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "سكستليون" msgstr[1] "سكستليون" msgstr[2] "سكستليونين" msgstr[3] "سكستليونات" msgstr[4] "سكستليون" msgstr[5] "سكستليون" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "سبتيليون" msgstr[1] "سبتيليون" msgstr[2] "سبتيليونين" msgstr[3] "سبتيليونات" msgstr[4] "سبتيليون" msgstr[5] "سبتيليون" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "أوكتيليون" msgstr[1] "أوكتيليون" msgstr[2] "أوكتيليونين" msgstr[3] "أوكتيليونات" msgstr[4] "أوكتيليون" msgstr[5] "أوكتيليون" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "نونيليون" msgstr[1] "نونيليون" msgstr[2] "نونيليونين" msgstr[3] "نونيليونات" msgstr[4] "نونيليون" msgstr[5] "نونيليون" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "ديسيليون" msgstr[1] "ديسيليون" msgstr[2] "ديسيليونين" msgstr[3] "ديسيليونات" msgstr[4] "ديسيليون" msgstr[5] "ديسيليون" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "جوجل" msgstr[1] "جوجل" msgstr[2] "جوجلين" msgstr[3] "جوجلات" msgstr[4] "جوجل" msgstr[5] "جوجل" #: src/humanize/number.py:301 msgid "zero" msgstr "صفر" #: src/humanize/number.py:302 msgid "one" msgstr "واحد" #: src/humanize/number.py:303 msgid "two" msgstr "اثنان" #: src/humanize/number.py:304 msgid "three" msgstr "ثلاثة" #: src/humanize/number.py:305 msgid "four" msgstr "أربعة" #: src/humanize/number.py:306 msgid "five" msgstr "خمسة" #: src/humanize/number.py:307 msgid "six" msgstr "ستة" #: src/humanize/number.py:308 msgid "seven" msgstr "سبعة" #: src/humanize/number.py:309 msgid "eight" msgstr "ثمانية" #: src/humanize/number.py:310 msgid "nine" msgstr "تسعة" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d ميكروثانية" msgstr[1] "%d ميكروثانية" msgstr[2] "%d ميكروثانيتين" msgstr[3] "%d ميكروثوانٍ" msgstr[4] "%d ميكروثانية" msgstr[5] "%d ميكروثانية" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d مللي ثانية" msgstr[1] "%d مللي ثانية" msgstr[2] "%d مللي ثانيتين" msgstr[3] "%d مللي ثوانٍ" msgstr[4] "%d مللي ثانية" msgstr[5] "%d مللي ثانية" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "لحظة" #: src/humanize/time.py:167 msgid "a second" msgstr "ثانية" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d ثانية" msgstr[1] "%d ثانية" msgstr[2] "%d ثانيتين" msgstr[3] "%d ثوانٍ" msgstr[4] "%d ثانية" msgstr[5] "%d ثانية" #: src/humanize/time.py:173 msgid "a minute" msgstr "دقيقة" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d دقيقة" msgstr[1] "%d دقيقة" msgstr[2] "%d دقيقتين" msgstr[3] "%d دقائق" msgstr[4] "%d دقيقة" msgstr[5] "%d دقيقة" #: src/humanize/time.py:180 msgid "an hour" msgstr "ساعة" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d ساعة" msgstr[1] "%d ساعة" msgstr[2] "%d ساعتين" msgstr[3] "%d ساعات" msgstr[4] "%d ساعة" msgstr[5] "%d ساعة" #: src/humanize/time.py:188 msgid "a day" msgstr "يوم" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d يوم" msgstr[1] "%d يوم" msgstr[2] "%d يومين" msgstr[3] "%d أيام" msgstr[4] "%d يومًا" msgstr[5] "%d يوم" #: src/humanize/time.py:197 msgid "a month" msgstr "شهر" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d شهر" msgstr[1] "%d شهر" msgstr[2] "%d شهرين" msgstr[3] "%d أشهر" msgstr[4] "%d شهر" msgstr[5] "%d شهر" #: src/humanize/time.py:203 msgid "a year" msgstr "سنة" #: src/humanize/time.py:206 src/humanize/time.py:217 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "سنة و %d يوم" msgstr[1] "سنة و %d يوم" msgstr[2] "سنة و %d يومين" msgstr[3] "سنة و %d أيام" msgstr[4] "سنة و %d يومًا" msgstr[5] "سنة و %d يوم" #: src/humanize/time.py:210 msgid "1 year, 1 month" msgstr "سنة وشهر" #: src/humanize/time.py:213 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "سنة و %d شهر" msgstr[1] "سنة و %d شهر" msgstr[2] "سنة و %d شهرين" msgstr[3] "سنة و %d أشهر" msgstr[4] "سنة و %d شهر" msgstr[5] "سنة و %d شهر" #: src/humanize/time.py:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d سنة" msgstr[1] "%d سنة" msgstr[2] "%d سنتين" msgstr[3] "%d سنوات" msgstr[4] "%d سنة" msgstr[5] "%d سنة" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "%s من الآن" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "قبل %s" #: src/humanize/time.py:260 msgid "now" msgstr "الآن" #: src/humanize/time.py:284 msgid "today" msgstr "اليوم" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "غدًا" #: src/humanize/time.py:290 msgid "yesterday" msgstr "أمس" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s و %s" humanize-4.16.0/src/humanize/locale/bn_BD/LC_MESSAGES/humanize.mo0000644000000000000000000000777115220765405021146 0ustar00Þ•@Y€��¡Àßô- 4 > J X d r~"�À Ð Þ ê ø    , 8 F R ` l z † ” ¦¯¸ÀÉÐØèîóøý1I_e{‘—�¦¸ ¼ÆJË %0 [V I² %ü " 1< n ˆ Ÿ *­ Ø ß æ í ô 7 F c j q x  † � ” › ¢ © ° · ¾ Å Ì Ó ä û  ) F W +n š ¡ ® ¸ ¿ 7É OOX=¨ æIð:%A g q~7— ÏÙé8$='9012)@ 7; ?(! .: 4/ -# +>*<3%65&",%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 hourbillionbillioneightfivefourninenowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-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 মাস১ বছর, ১ মাসতমতমতমতমতমতমতমতমতমতমতমতমতমতমতমতমএক দিনএক মিনিটএক মুহুর্তএক মাসএক সেকেন্ডএক বছরএক ঘন্টা%d বিলিয়ন%d বিলিয়নআটপাঁচচারনয়এখন%d ওকটিলিয়ন%d ওকটিলিয়নএক%d কোয়াড্রিলিয়ন%d কোয়াড্রিলিয়ন%d কুইন্টিলিয়ন%d কুইন্টিলিয়ন%d সেপটিলিয়ন%d সেপটিলিয়নসাত%d সেক্সটিলিয়ন%d সেক্সটিলিয়নছয়%d হাজার%d হাজারতিনআজকেআগামীকাল%d ট্রিলিয়ন%d ট্রিলিয়নদুইগতকালশুন্যhumanize-4.16.0/src/humanize/locale/bn_BD/LC_MESSAGES/humanize.po0000644000000000000000000001651215220765405021142 0ustar00# 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. # Zarif Ahnaf , 2023 # msgid "" msgstr "" "Project-Id-Version: humanize\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-08 19:22+0200\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:84 msgctxt "0 (male)" msgid "th" msgstr "তম" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "তম" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "তম" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "তম" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "তম" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "তম" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "তম" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "তম" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "তম" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "তম" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "তম" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "তম" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "তম" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "তম" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "তম" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "তম" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "তম" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "তম" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "তম" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "তম" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "%d হাজার" msgstr[1] "%d হাজার" #: src/humanize/number.py:179 #, fuzzy msgid "million" msgid_plural "million" msgstr[0] "%d মিলিয়ন" msgstr[1] "%d মিলিয়ন" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "%d বিলিয়ন" msgstr[1] "%d বিলিয়ন" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "%d ট্রিলিয়ন" msgstr[1] "%d ট্রিলিয়ন" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "%d কোয়াড্রিলিয়ন" msgstr[1] "%d কোয়াড্রিলিয়ন" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "%d কুইন্টিলিয়ন" msgstr[1] "%d কুইন্টিলিয়ন" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "%d সেক্সটিলিয়ন" msgstr[1] "%d সেক্সটিলিয়ন" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "%d সেপটিলিয়ন" msgstr[1] "%d সেপটিলিয়ন" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "%d ওকটিলিয়ন" msgstr[1] "%d ওকটিলিয়ন" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:188 #, fuzzy msgid "decillion" msgid_plural "decillion" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:301 msgid "zero" msgstr "শুন্য" #: src/humanize/number.py:302 msgid "one" msgstr "এক" #: src/humanize/number.py:303 msgid "two" msgstr "দুই" #: src/humanize/number.py:304 msgid "three" msgstr "তিন" #: src/humanize/number.py:305 msgid "four" msgstr "চার" #: src/humanize/number.py:306 msgid "five" msgstr "পাঁচ" #: src/humanize/number.py:307 msgid "six" msgstr "ছয়" #: src/humanize/number.py:308 msgid "seven" msgstr "সাত" #: src/humanize/number.py:309 msgid "eight" msgstr "আট" #: src/humanize/number.py:310 msgid "nine" msgstr "নয়" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d মাইক্রোসেকেন্ড" msgstr[1] "%d মাইক্রোসেকেন্ড" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d মিলিসেকেন্ড" msgstr[1] "%d মিলিসেকেন্ড" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "এক মুহুর্ত" #: src/humanize/time.py:167 msgid "a second" msgstr "এক সেকেন্ড" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d সেকেন্ড" msgstr[1] "%d সেকেন্ড" #: src/humanize/time.py:173 msgid "a minute" msgstr "এক মিনিট" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d মিনিট" msgstr[1] "%d মিনিট" #: src/humanize/time.py:180 msgid "an hour" msgstr "এক ঘন্টা" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d ঘন্টা" msgstr[1] "%d ঘন্টা" #: src/humanize/time.py:188 msgid "a day" msgstr "এক দিন" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d দিন" msgstr[1] "%d দিন" #: src/humanize/time.py:197 msgid "a month" msgstr "এক মাস" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d মাস" msgstr[1] "%d মাস" #: src/humanize/time.py:203 msgid "a year" msgstr "এক বছর" #: src/humanize/time.py:206 src/humanize/time.py:217 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "%d বছর" msgstr[1] "%d বছর" #: src/humanize/time.py:210 msgid "1 year, 1 month" msgstr "১ বছর, ১ মাস" #: src/humanize/time.py:213 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "১ বছর, %d মাস" msgstr[1] "১ বছর, %d মাস" #: src/humanize/time.py:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d বছর" msgstr[1] "%d বছর" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "আজ থেকে %s সময় পরে" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s সময় আগে" #: src/humanize/time.py:260 msgid "now" msgstr "এখন" #: src/humanize/time.py:284 msgid "today" msgstr "আজকে" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "আগামীকাল" #: src/humanize/time.py:290 msgid "yesterday" msgstr "গতকাল" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s আর %s" humanize-4.16.0/src/humanize/locale/ca_ES/LC_MESSAGES/humanize.mo0000644000000000000000000000642115220765405021143 0ustar00Þ•C4YL°±ÀÑð$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àbilionsbilionsdosahirzerohumanize-4.16.0/src/humanize/locale/ca_ES/LC_MESSAGES/humanize.po0000644000000000000000000001454015220765405021147 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "º" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "º" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "º" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "º" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "º" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "º" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "º" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "º" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "º" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "º" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "º" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "º" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "º" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "milió" msgstr[1] "milió" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "mil milions" msgstr[1] "mil milions" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "bilions" msgstr[1] "bilions" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "quadrilió" msgstr[1] "quadrilió" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "quintillió" msgstr[1] "quintillió" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sextilió" msgstr[1] "sextilió" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "septilió" msgstr[1] "septilió" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "octilió" msgstr[1] "octilió" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "nonilió" msgstr[1] "nonilió" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "decilió" msgstr[1] "decilió" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:301 msgid "zero" msgstr "zero" #: src/humanize/number.py:302 msgid "one" msgstr "un" #: src/humanize/number.py:303 msgid "two" msgstr "dos" #: src/humanize/number.py:304 msgid "three" msgstr "tres" #: src/humanize/number.py:305 msgid "four" msgstr "quatre" #: src/humanize/number.py:306 msgid "five" msgstr "cinc" #: src/humanize/number.py:307 msgid "six" msgstr "sis" #: src/humanize/number.py:308 msgid "seven" msgstr "set" #: src/humanize/number.py:309 msgid "eight" msgstr "vuit" #: src/humanize/number.py:310 msgid "nine" msgstr "nou" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microsegon" msgstr[1] "%d microsegons" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d mil·lisegons" msgstr[1] "%d mil·lisegons" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "un moment" #: src/humanize/time.py:167 msgid "a second" msgstr "un segon" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d segon" msgstr[1] "%d segons" #: src/humanize/time.py:173 msgid "a minute" msgstr "un minut" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minut" msgstr[1] "%d minuts" #: src/humanize/time.py:180 msgid "an hour" msgstr "una hora" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" msgstr[1] "%d hores" #: src/humanize/time.py:188 msgid "a day" msgstr "un dia" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dia" msgstr[1] "%d dies" #: src/humanize/time.py:197 msgid "a month" msgstr "un mes" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mes" msgstr[1] "%d mesos" #: src/humanize/time.py:203 msgid "a year" msgstr "un any" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 any, 1 mes" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d any" msgstr[1] "%d anys" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "en %s" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "fa %s" #: src/humanize/time.py:260 msgid "now" msgstr "ara" #: src/humanize/time.py:284 msgid "today" msgstr "avui" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "demà" #: src/humanize/time.py:290 msgid "yesterday" msgstr "ahir" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s i %s" humanize-4.16.0/src/humanize/locale/da_DK/LC_MESSAGES/humanize.mo0000644000000000000000000000662215220765405021136 0ustar00Þ•D<a\àáð ?Tg|� ” ž ª ¸ Ä ÒÞ"ý  0 > J X d r ~ Œ ˜ ¦ ² À Ì Ú æ ô )08H\bg lzŠ�£§»¿×ï  ! % 7 = C L ^ b l Qq à Ò ã  ! 6 L b p y ‚ Œ � ’ • ˜ #µ Ù é ì ï ò õ ø û þ           ) 5 ? H O W i  „ ˆ � › ­ ° Æ É ß â ü  . 2 J O _ c i r „ ‡ Ž 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-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årnulhumanize-4.16.0/src/humanize/locale/da_DK/LC_MESSAGES/humanize.po0000644000000000000000000001466015220765405021142 0ustar00# 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: \n" "POT-Creation-Date: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr ":e" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr ":t" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr ":e" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr ":e" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr ":t" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr ":e" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "tusind" msgstr[1] "thousand" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "million" msgstr[1] "millioner" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "billion" msgstr[1] "billioner" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "billion" msgstr[1] "billioner" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "quadrillion" msgstr[1] "quadrillioner" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "quintillion" msgstr[1] "quintillioner" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sextillion" msgstr[1] "sextillioner" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "septillion" msgstr[1] "septillioner" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "octillion" msgstr[1] "octillioner" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "nonillion" msgstr[1] "nonillioner" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "decillion" msgstr[1] "decillioner" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:301 msgid "zero" msgstr "nul" #: src/humanize/number.py:302 msgid "one" msgstr "en" #: src/humanize/number.py:303 msgid "two" msgstr "to" #: src/humanize/number.py:304 msgid "three" msgstr "tre" #: src/humanize/number.py:305 msgid "four" msgstr "fire" #: src/humanize/number.py:306 msgid "five" msgstr "fem" #: src/humanize/number.py:307 msgid "six" msgstr "seks" #: src/humanize/number.py:308 msgid "seven" msgstr "syv" #: src/humanize/number.py:309 msgid "eight" msgstr "otte" #: src/humanize/number.py:310 msgid "nine" msgstr "ni" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikrosekund" msgstr[1] "%d mikrosekunder" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d millsekund" msgstr[1] "%d millsekunder" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "et øjeblik" #: src/humanize/time.py:167 msgid "a second" msgstr "en anden" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d sekund" msgstr[1] "%d sekunder" #: src/humanize/time.py:173 msgid "a minute" msgstr "en minut" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minut" msgstr[1] "%d minutter" #: src/humanize/time.py:180 msgid "an hour" msgstr "en time" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d time" msgstr[1] "%d timer" #: src/humanize/time.py:188 msgid "a day" msgstr "en dag" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dag" msgstr[1] "%d dage" #: src/humanize/time.py:197 msgid "a month" msgstr "en måned" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d måned" msgstr[1] "%d måneder" #: src/humanize/time.py:203 msgid "a year" msgstr "et år" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 år, 1 måned" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d år" msgstr[1] "%d år" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "%s fra nu" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s siden" #: src/humanize/time.py:260 msgid "now" msgstr "nu" #: src/humanize/time.py:284 msgid "today" msgstr "i dag" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "i morgen" #: src/humanize/time.py:290 msgid "yesterday" msgstr "i går" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s og %s" humanize-4.16.0/src/humanize/locale/de_DE/LC_MESSAGES/humanize.mo0000644000000000000000000000643415220765405021135 0ustar00Þ•B,Y< ¡°ÁÖéþ   , : F T`"¢ ² À Ì Ú æ ô    ( 4 B N \ h v‚ˆ‘𢫲ºÊÞäé îü %)=AYq‡�£§¹¿ÅÎà äîpód s ˆ � ° Ç Ø ß é õ ÷ ù û (ý ,& S ] _ a c e g i k m o q s u w y { } … ‘ œ ¦ ³ ¼ È Ý ú ÿ   * / I O j o „ ˜ ² ¹ Ð Ö æ ë ñ ø    :"?%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: 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 StundeMilliardeMilliardenQuintilliardeQuintilliardenachtfünfvierGoogolGoogolMillionMillionenneunQuintillionQuintillionenjetztQuadrillardeQuadrillardeneinsBilliardeBilliardenTrillionTrillionenQuadrillionQuadrillionensiebenTrilliardeTrilliardensechsTausendTausenddreiheutemorgenBillionBillionenzweigesternnullhumanize-4.16.0/src/humanize/locale/de_DE/LC_MESSAGES/humanize.po0000644000000000000000000001503315220765405021133 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "Tausend" msgstr[1] "Tausend" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "Million" msgstr[1] "Millionen" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "Milliarde" msgstr[1] "Milliarden" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "Billion" msgstr[1] "Billionen" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "Billiarde" msgstr[1] "Billiarden" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "Trillion" msgstr[1] "Trillionen" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "Trilliarde" msgstr[1] "Trilliarden" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "Quadrillion" msgstr[1] "Quadrillionen" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "Quadrillarde" msgstr[1] "Quadrillarden" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "Quintillion" msgstr[1] "Quintillionen" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "Quintilliarde" msgstr[1] "Quintilliarden" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "Googol" msgstr[1] "Googol" #: src/humanize/number.py:301 msgid "zero" msgstr "null" #: src/humanize/number.py:302 msgid "one" msgstr "eins" #: src/humanize/number.py:303 msgid "two" msgstr "zwei" #: src/humanize/number.py:304 msgid "three" msgstr "drei" #: src/humanize/number.py:305 msgid "four" msgstr "vier" #: src/humanize/number.py:306 msgid "five" msgstr "fünf" #: src/humanize/number.py:307 msgid "six" msgstr "sechs" #: src/humanize/number.py:308 msgid "seven" msgstr "sieben" #: src/humanize/number.py:309 msgid "eight" msgstr "acht" #: src/humanize/number.py:310 msgid "nine" msgstr "neun" #: src/humanize/time.py:152 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d Mikrosekunde" msgstr[1] "%d Mikrosekunden" #: src/humanize/time.py:161 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d Millisekunde" msgstr[1] "%d Millisekunden" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "ein Moment" #: src/humanize/time.py:167 msgid "a second" msgstr "eine Sekunde" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d Sekunde" msgstr[1] "%d Sekunden" #: src/humanize/time.py:173 msgid "a minute" msgstr "eine Minute" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d Minute" msgstr[1] "%d Minuten" #: src/humanize/time.py:180 msgid "an hour" msgstr "eine Stunde" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d Stunde" msgstr[1] "%d Stunden" #: src/humanize/time.py:188 msgid "a day" msgstr "ein Tag" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d Tag" msgstr[1] "%d Tage" #: src/humanize/time.py:197 msgid "a month" msgstr "ein Monat" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d Monat" msgstr[1] "%d Monate" #: src/humanize/time.py:203 msgid "a year" msgstr "ein Jahr" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "ein Monat" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d Jahr" msgstr[1] "%d Jahre" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "%s ab jetzt" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "vor %s" #: src/humanize/time.py:260 msgid "now" msgstr "jetzt" #: src/humanize/time.py:284 msgid "today" msgstr "heute" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "morgen" #: src/humanize/time.py:290 msgid "yesterday" msgstr "gestern" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s und %s" humanize-4.16.0/src/humanize/locale/el_GR/LC_MESSAGES/humanize.mo0000644000000000000000000000674715220765405021174 0ustar00Þ•.Œ=üðñ&9N_ f p|"›¾ÎÔÝæî÷þ*05 :HX]qu‰�¥½ÓÙïó , 0:Œ?Ìê76n„ —¤K¼G &P w ‰ › ¯ ¿ ß ï 9ý K7 ƒ Œ — }¦ -$ R O] ­ K¶  O OY K© õ Gþ F M m v ƒ =Ž Ì Ó Ü & .%*"($ +) '- , #!%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 now1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 montha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: humanize Report-Msgid-Bugs-To: PO-Revision-Date: 2022-08-05 01:09+0300 Last-Translator: Isaak Tsalicoglou Language-Team: Greek Language: el MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Generated-By: Isaak Tsalicoglou X-Generator: Mousepad 0.5.9 %d ημέρα%d ημέρες%d ώρα%d ώρες%d λεπτό%d λεπτά%d μήνα%d μήνες%d δευτερόλεπτο%d δευτερόλεπτα%d έτος%d έτηπριν από %s%s και %sσε %s από τώραένα έτος και %d ημέραένα έτος και %d ημέρεςένα έτος και %d μήναένα έτος και %d μήνεςένα έτος και ένα μήναμία ημέραένα λεπτόμια στιγμήένα μήναένα δευτερόλεπτοένα έτοςμία ώραδισεκατομμύριοδισεκατομμύριαδεκάκις εκατομμύριοδεκάκις εκατομμύριαοκτώπέντετέσσεραδέκα τριακονταδυάκις εκατομμύριοδέκα τριακονταδυάκις εκατομμύριαεκατομμύριοεκατομμύριαεννέαεννεάκις εκατομμύριοεννεάκις εκατομμύριατώραοκτάκις εκατομμύριοοκτάκις εκατομμύριαένατετράκις εκατομμύριοτετράκις εκατομμύριαπεντάκις εκατομμύριοπεντάκις εκατομμύριαεπτάκις εκατομμύριοεπτάκις εκατομμύριαεπτάεξάκις εκατομμύριοεξάκις εκατομμύριαέξιχιλιάδαχιλιάδεςτρίασήμερααύριοτρισεκατομμύριοτρισεκατομμύριαδύοχθεςμηδένhumanize-4.16.0/src/humanize/locale/el_GR/LC_MESSAGES/humanize.po0000644000000000000000000002121315220765405021160 0ustar00# Greek translations for PACKAGE package. # Copyright (C) 2022 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Isaak Tsalicoglou , 2022. # msgid "" msgstr "" "Project-Id-Version: humanize\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-08 19:22+0200\n" "PO-Revision-Date: 2022-08-05 01:09+0300\n" "Last-Translator: Isaak Tsalicoglou \n" "Language-Team: Greek \n" "Language: el\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: Isaak Tsalicoglou\n" "X-Generator: Mousepad 0.5.9\n" #: src/humanize/number.py:84 msgctxt "0 (male)" msgid "th" msgstr "" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "χιλιάδα" msgstr[1] "χιλιάδες" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "εκατομμύριο" msgstr[1] "εκατομμύρια" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "δισεκατομμύριο" msgstr[1] "δισεκατομμύρια" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "τρισεκατομμύριο" msgstr[1] "τρισεκατομμύρια" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "τετράκις εκατομμύριο" msgstr[1] "τετράκις εκατομμύρια" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "πεντάκις εκατομμύριο" msgstr[1] "πεντάκις εκατομμύρια" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "εξάκις εκατομμύριο" msgstr[1] "εξάκις εκατομμύρια" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "επτάκις εκατομμύριο" msgstr[1] "επτάκις εκατομμύρια" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "οκτάκις εκατομμύριο" msgstr[1] "οκτάκις εκατομμύρια" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "εννεάκις εκατομμύριο" msgstr[1] "εννεάκις εκατομμύρια" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "δεκάκις εκατομμύριο" msgstr[1] "δεκάκις εκατομμύρια" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "δέκα τριακονταδυάκις εκατομμύριο" msgstr[1] "δέκα τριακονταδυάκις εκατομμύρια" #: src/humanize/number.py:301 msgid "zero" msgstr "μηδέν" #: src/humanize/number.py:302 msgid "one" msgstr "ένα" #: src/humanize/number.py:303 msgid "two" msgstr "δύο" #: src/humanize/number.py:304 msgid "three" msgstr "τρία" #: src/humanize/number.py:305 msgid "four" msgstr "τέσσερα" #: src/humanize/number.py:306 msgid "five" msgstr "πέντε" #: src/humanize/number.py:307 msgid "six" msgstr "έξι" #: src/humanize/number.py:308 msgid "seven" msgstr "επτά" #: src/humanize/number.py:309 msgid "eight" msgstr "οκτώ" #: src/humanize/number.py:310 msgid "nine" msgstr "εννέα" #: src/humanize/time.py:152 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d εκατομμυριοστό του δευτερολέπτου" msgstr[1] "%d εκατομμυριοστά του δευτερολέπτου" #: src/humanize/time.py:161 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d χιλιοστό του δευτερολέπτου" msgstr[1] "%d χιλιοστά του δευτερολέπτου" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "μια στιγμή" #: src/humanize/time.py:167 msgid "a second" msgstr "ένα δευτερόλεπτο" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d δευτερόλεπτο" msgstr[1] "%d δευτερόλεπτα" #: src/humanize/time.py:173 msgid "a minute" msgstr "ένα λεπτό" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d λεπτό" msgstr[1] "%d λεπτά" #: src/humanize/time.py:180 msgid "an hour" msgstr "μία ώρα" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d ώρα" msgstr[1] "%d ώρες" #: src/humanize/time.py:188 msgid "a day" msgstr "μία ημέρα" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d ημέρα" msgstr[1] "%d ημέρες" #: src/humanize/time.py:197 msgid "a month" msgstr "ένα μήνα" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d μήνα" msgstr[1] "%d μήνες" #: src/humanize/time.py:203 msgid "a year" msgstr "ένα έτος" #: src/humanize/time.py:206 src/humanize/time.py:217 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "ένα έτος και %d ημέρα" msgstr[1] "ένα έτος και %d ημέρες" #: src/humanize/time.py:210 msgid "1 year, 1 month" msgstr "ένα έτος και ένα μήνα" #: src/humanize/time.py:213 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "ένα έτος και %d μήνα" msgstr[1] "ένα έτος και %d μήνες" #: src/humanize/time.py:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d έτος" msgstr[1] "%d έτη" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "σε %s από τώρα" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "πριν από %s" #: src/humanize/time.py:260 msgid "now" msgstr "τώρα" #: src/humanize/time.py:284 msgid "today" msgstr "σήμερα" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "αύριο" #: src/humanize/time.py:290 msgid "yesterday" msgstr "χθες" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s και %s" #~ msgctxt "0 (male)" #~ msgid "ος" #~ msgstr "." #~ msgctxt "1 (male)" #~ msgid "ος" #~ msgstr "." #~ msgctxt "2 (male)" #~ msgid "ος" #~ msgstr "." #~ msgctxt "3 (male)" #~ msgid "ος" #~ msgstr "." #~ msgctxt "4 (male)" #~ msgid "ος" #~ msgstr "." #~ msgctxt "5 (male)" #~ msgid "ος" #~ msgstr "." #~ msgctxt "6 (male)" #~ msgid "ος" #~ msgstr "." #~ msgctxt "7 (male)" #~ msgid "ος" #~ msgstr "." #~ msgctxt "8 (male)" #~ msgid "ος" #~ msgstr "." #~ msgctxt "9 (male)" #~ msgid "ος" #~ msgstr "." #~ msgctxt "0 (female)" #~ msgid "η" #~ msgstr "." #~ msgctxt "1 (female)" #~ msgid "η" #~ msgstr "." #~ msgctxt "2 (female)" #~ msgid "η" #~ msgstr "." #~ msgctxt "3 (female)" #~ msgid "η" #~ msgstr "." #~ msgctxt "4 (female)" #~ msgid "η" #~ msgstr "." #~ msgctxt "5 (female)" #~ msgid "η" #~ msgstr "." #~ msgctxt "6 (female)" #~ msgid "η" #~ msgstr "." #~ msgctxt "7 (female)" #~ msgid "η" #~ msgstr "." #~ msgctxt "8 (female)" #~ msgid "η" #~ msgstr "." #~ msgctxt "9 (female)" #~ msgid "η" #~ msgstr "." humanize-4.16.0/src/humanize/locale/eo/LC_MESSAGES/humanize.mo0000644000000000000000000000642115220765405020574 0ustar00Þ•C4YL°±ÀÑð-> E O [ i u ƒ�"®Ñ á ï û   # / = I W c q } ‹ — ¥±·ÀÉÑÚáéù  +;@TXlpˆ ¶¼ÒÖèîôý   \"  � ¡ À Õ ê    & . 1 4 7 : $[ € ‘ ” — š �   £ ¦ © ¬ ¯ ² µ ¸ » ¾ Á Æ Í Õ Ü ä é î     # / ? D X \ t x Œ   ¶ º Ð Ô Ü à è ð    ;#@&8345 (C>:/B'  .= 71 -? *+A)06$"9<2%!,%d day%d days%d hour%d hours%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: 2023-05-02 10:50-0700 Last-Translator: Adam Milner Language-Team: Esperanto Language: eo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %d tago%d tagoj%d horo%d horoj%d milisekundo%d milisekundoj%d minuto%d minutoj%d monato%d monotoj%d sekundo%d sekundoj%d jaro%d jarojantaŭ %s%s kaj %spost %s-a-a-a-a1 jaro, %d tago1 jaro, %d tagoj1 jaro, %d monato1 jaro, %d monatoj1 jaro, 1 monato-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-atagominutomomentomonatosekundojarohoromiliardomiliardosesiliardosesiliardookkvinkvargugloguglomilionomiliononaŭsesilionosesiliononunkvariliardokvariliardounuduiliardoduiliardotriilionotriilionokvarilionokvarilionoseptriiliardotriiliardosesmilmiltrihodiaŭmorgaŭduilionoduilionoduhieraŭnulhumanize-4.16.0/src/humanize/locale/eo/LC_MESSAGES/humanize.po0000644000000000000000000001462415220765405020603 0ustar00# Esperanto translations for PACKAGE package. # Copyright (C) 2023 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Adam Milner , 2023. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-05-02 10:46-0700\n" "PO-Revision-Date: 2023-05-02 10:50-0700\n" "Last-Translator: Adam Milner \n" "Language-Team: Esperanto \n" "Language: eo\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:84 msgctxt "0 (male)" msgid "th" msgstr "-a" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "-a" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "-a" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "-a" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "-a" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "-a" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "-a" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "-a" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "-a" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "-a" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "-a" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "-a" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "-a" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "-a" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "-a" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "-a" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "-a" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "-a" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "-a" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "-a" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "mil" msgstr[1] "mil" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "miliono" msgstr[1] "miliono" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "miliardo" msgstr[1] "miliardo" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "duiliono" msgstr[1] "duiliono" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "duiliardo" msgstr[1] "duiliardo" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "triiliono" msgstr[1] "triiliono" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "triiliardo" msgstr[1] "triiliardo" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "kvariliono" msgstr[1] "kvariliono" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "kvariliardo" msgstr[1] "kvariliardo" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "sesiliono" msgstr[1] "sesiliono" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "sesiliardo" msgstr[1] "sesiliardo" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "guglo" msgstr[1] "guglo" #: src/humanize/number.py:302 msgid "zero" msgstr "nul" #: src/humanize/number.py:303 msgid "one" msgstr "unu" #: src/humanize/number.py:304 msgid "two" msgstr "du" #: src/humanize/number.py:305 msgid "three" msgstr "tri" #: src/humanize/number.py:306 msgid "four" msgstr "kvar" #: src/humanize/number.py:307 msgid "five" msgstr "kvin" #: src/humanize/number.py:308 msgid "six" msgstr "ses" #: src/humanize/number.py:309 msgid "seven" msgstr "sep" #: src/humanize/number.py:310 msgid "eight" msgstr "ok" #: src/humanize/number.py:311 msgid "nine" msgstr "naŭ" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "" msgstr[1] "" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milisekundo" msgstr[1] "%d milisekundoj" #: src/humanize/time.py:164 src/humanize/time.py:263 msgid "a moment" msgstr "momento" #: src/humanize/time.py:167 msgid "a second" msgstr "sekundo" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d sekundo" msgstr[1] "%d sekundoj" #: src/humanize/time.py:173 msgid "a minute" msgstr "minuto" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minutoj" #: src/humanize/time.py:180 msgid "an hour" msgstr "horo" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d horo" msgstr[1] "%d horoj" #: src/humanize/time.py:188 msgid "a day" msgstr "tago" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d tago" msgstr[1] "%d tagoj" #: src/humanize/time.py:197 msgid "a month" msgstr "monato" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d monato" msgstr[1] "%d monotoj" #: src/humanize/time.py:203 msgid "a year" msgstr "jaro" #: src/humanize/time.py:206 src/humanize/time.py:217 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 jaro, %d tago" msgstr[1] "1 jaro, %d tagoj" #: src/humanize/time.py:210 msgid "1 year, 1 month" msgstr "1 jaro, 1 monato" #: src/humanize/time.py:213 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 jaro, %d monato" msgstr[1] "1 jaro, %d monatoj" #: src/humanize/time.py:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d jaro" msgstr[1] "%d jaroj" #: src/humanize/time.py:260 #, python-format msgid "%s from now" msgstr "post %s" #: src/humanize/time.py:260 #, python-format msgid "%s ago" msgstr "antaŭ %s" #: src/humanize/time.py:264 msgid "now" msgstr "nun" #: src/humanize/time.py:288 msgid "today" msgstr "hodiaŭ" #: src/humanize/time.py:291 msgid "tomorrow" msgstr "morgaŭ" #: src/humanize/time.py:294 msgid "yesterday" msgstr "hieraŭ" #: src/humanize/time.py:604 #, python-format msgid "%s and %s" msgstr "%s kaj %s" humanize-4.16.0/src/humanize/locale/es_ES/LC_MESSAGES/humanize.mo0000644000000000000000000000671215220765405021172 0ustar00Þ•D<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 &s š Ÿ ¥ ¬ º Ë Ñ ê &ð   : M f l � ’ š Ÿ £ « ¼ À Å 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 horamil millonesmiles de millonesmil quintillonesmiles de quintillonesochocincocuatrogúgolgúgolmillónmillonesnuevequintillónquintillonesahoramil cuatrillonesmiles de cuatrillonesunomil billonesmiles de billonestrillóntrillonescuatrillóncuatrillonessietemil trillonesmiles de trillonesseismilmiltreshoymañanabillónbillonesdosayercerohumanize-4.16.0/src/humanize/locale/es_ES/LC_MESSAGES/humanize.po0000644000000000000000000001501115220765405021165 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "º" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "º" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "º" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "ª" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "ª" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "ª" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "mil" msgstr[1] "mil" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "millón" msgstr[1] "millones" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "mil millones" msgstr[1] "miles de millones" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "billón" msgstr[1] "billones" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "mil billones" msgstr[1] "miles de billones" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "trillón" msgstr[1] "trillones" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "mil trillones" msgstr[1] "miles de trillones" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "cuatrillón" msgstr[1] "cuatrillones" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "mil cuatrillones" msgstr[1] "miles de cuatrillones" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "quintillón" msgstr[1] "quintillones" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "mil quintillones" msgstr[1] "miles de quintillones" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "gúgol" msgstr[1] "gúgol" #: src/humanize/number.py:301 msgid "zero" msgstr "cero" #: src/humanize/number.py:302 msgid "one" msgstr "uno" #: src/humanize/number.py:303 msgid "two" msgstr "dos" #: src/humanize/number.py:304 msgid "three" msgstr "tres" #: src/humanize/number.py:305 msgid "four" msgstr "cuatro" #: src/humanize/number.py:306 msgid "five" msgstr "cinco" #: src/humanize/number.py:307 msgid "six" msgstr "seis" #: src/humanize/number.py:308 msgid "seven" msgstr "siete" #: src/humanize/number.py:309 msgid "eight" msgstr "ocho" #: src/humanize/number.py:310 msgid "nine" msgstr "nueve" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microsegundo" msgstr[1] "%d microsegundos" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milisegundo" msgstr[1] "%d milisegundos" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "un momento" #: src/humanize/time.py:167 msgid "a second" msgstr "un segundo" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d segundo" msgstr[1] "%d segundos" #: src/humanize/time.py:173 msgid "a minute" msgstr "un minuto" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minutos" #: src/humanize/time.py:180 msgid "an hour" msgstr "una hora" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" msgstr[1] "%d horas" #: src/humanize/time.py:188 msgid "a day" msgstr "un día" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d día" msgstr[1] "%d días" #: src/humanize/time.py:197 msgid "a month" msgstr "un mes" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mes" msgstr[1] "%d meses" #: src/humanize/time.py:203 msgid "a year" msgstr "un año" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 año y 1 mes" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d año" msgstr[1] "%d años" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "en %s" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "hace %s" #: src/humanize/time.py:260 msgid "now" msgstr "ahora" #: src/humanize/time.py:284 msgid "today" msgstr "hoy" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "mañana" #: src/humanize/time.py:290 msgid "yesterday" msgstr "ayer" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s y %s" humanize-4.16.0/src/humanize/locale/eu/LC_MESSAGES/humanize.mo0000644000000000000000000000603215220765405020600 0ustar00Þ•> SüHIXiˆ§¼Ïäõ ü    , :F"eˆ ˜ ¦ ² À Ì Ú æ ô    ( 4 B N \hnw€ˆ‘˜ °¶» ÀÎÞãçë  %+4F JTwYÑ á ñ  / C [ q � � ™ « ­ ¯ ± ³ 'Ó û           " $ & ( * , . 7 B J W c l u ƒ Š � “ ¡ ¯ ¹ ¿ à Ù ß ã í ò ÷ ý     6 %2!:7*143 "=,-  <$#/8(5+)&>9'0. ;%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 hourbillionbillioneightfivefourgoogolgoogolmillionmillionninenowonequadrillionquadrillionsevensixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: Report-Msgid-Bugs-To: PO-Revision-Date: 2023-01-02 20:35+0100 Last-Translator: Mikel Olasagasti Language-Team: Basque Language: eu MIME-Version: 1.0 Content-Type: text/plain; charset=ASCII Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Poedit 3.1.1 egun %d%d egunordu %d%d ordumikrosegundo %d%d mikrosegundomilisegundo %d%d milisegundominutu %d%d minutuhilabete %d%d hilabetesegundo %d%d segundourte %d%d urteorain dela %s%s eta %shemendik %s-(e)ra....urte 1, egun %durte 1, %d egunurte 1, hilabete %durte 1, %d hilabeteurte 1, hilabete 1................egun batminutu batune bathilabete batsegundo baturte batordu batmiliarmiliarzortzibostlaugoogolgoogolmilioimilioibederatziorainbatkuatrilioikuatrilioizazpiseimilamilahirugaurbihartrilioitrilioibiatzozerohumanize-4.16.0/src/humanize/locale/eu/LC_MESSAGES/humanize.po0000644000000000000000000001457215220765405020613 0ustar00# Basque translations for PACKAGE package. # Copyright (C) 2023 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Mikel Olasagasti , 2023. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-08 19:22+0200\n" "PO-Revision-Date: 2023-01-02 20:35+0100\n" "Last-Translator: Mikel Olasagasti \n" "Language-Team: Basque \n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.1.1\n" #: src/humanize/number.py:84 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "mila" msgstr[1] "mila" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "milioi" msgstr[1] "milioi" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "miliar" msgstr[1] "miliar" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "trilioi" msgstr[1] "trilioi" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "kuatrilioi" msgstr[1] "kuatrilioi" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:301 msgid "zero" msgstr "zero" #: src/humanize/number.py:302 msgid "one" msgstr "bat" #: src/humanize/number.py:303 msgid "two" msgstr "bi" #: src/humanize/number.py:304 msgid "three" msgstr "hiru" #: src/humanize/number.py:305 msgid "four" msgstr "lau" #: src/humanize/number.py:306 msgid "five" msgstr "bost" #: src/humanize/number.py:307 msgid "six" msgstr "sei" #: src/humanize/number.py:308 msgid "seven" msgstr "zazpi" #: src/humanize/number.py:309 msgid "eight" msgstr "zortzi" #: src/humanize/number.py:310 msgid "nine" msgstr "bederatzi" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "mikrosegundo %d" msgstr[1] "%d mikrosegundo" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "milisegundo %d" msgstr[1] "%d milisegundo" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "une bat" #: src/humanize/time.py:167 msgid "a second" msgstr "segundo bat" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "segundo %d" msgstr[1] "%d segundo" #: src/humanize/time.py:173 msgid "a minute" msgstr "minutu bat" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "minutu %d" msgstr[1] "%d minutu" #: src/humanize/time.py:180 msgid "an hour" msgstr "ordu bat" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "ordu %d" msgstr[1] "%d ordu" #: src/humanize/time.py:188 msgid "a day" msgstr "egun bat" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "egun %d" msgstr[1] "%d egun" #: src/humanize/time.py:197 msgid "a month" msgstr "hilabete bat" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "hilabete %d" msgstr[1] "%d hilabete" #: src/humanize/time.py:203 msgid "a year" msgstr "urte bat" #: src/humanize/time.py:206 src/humanize/time.py:217 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "urte 1, egun %d" msgstr[1] "urte 1, %d egun" #: src/humanize/time.py:210 msgid "1 year, 1 month" msgstr "urte 1, hilabete 1" #: src/humanize/time.py:213 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "urte 1, hilabete %d" msgstr[1] "urte 1, %d hilabete" #: src/humanize/time.py:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "urte %d" msgstr[1] "%d urte" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "hemendik %s-(e)ra" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "orain dela %s" #: src/humanize/time.py:260 msgid "now" msgstr "orain" #: src/humanize/time.py:284 msgid "today" msgstr "gaur" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "bihar" #: src/humanize/time.py:290 msgid "yesterday" msgstr "atzo" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s eta %s" humanize-4.16.0/src/humanize/locale/fa_IR/LC_MESSAGES/humanize.mo0000644000000000000000000000765215220765405021160 0ustar00Þ•D<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 ماه۱ سال و ۱ ماهدومیندومینسومینسومینچهارمینچهارمینپنجمینپنجمینششمینششمینهفتمینهفتمینهشتمینهشتمیننهمیننهمینیک روزیک دقیقهیک لحظهیک ماهیک ثانیهیک سالیک ساعتمیلیاردمیلیارددسیلیوندسیلیونهشتپنجچهارگوگولگوگولمیلیونمیلیوننهنونیلیوننونیلیوناکنوناوکتیلیوناوکتیلیونیککوادریلیونکوادریلیونکوانتیلیونکوانتیلیونسپتیلیونسپتیلیونهفتسکستیلیونسکستیلیونششهزارهزارسهامروزفرداترلیونترلیوندودیروزصفرhumanize-4.16.0/src/humanize/locale/fa_IR/LC_MESSAGES/humanize.po0000644000000000000000000001573315220765405021162 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "صفرمین" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "اولین" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "دومین" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "سومین" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "چهارمین" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "پنجمین" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "ششمین" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "هفتمین" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "هشتمین" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "نهمین" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "صفرمین" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "اولین" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "دومین" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "سومین" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "چهارمین" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "پنجمین" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "ششمین" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "هفتمین" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "هشتمین" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "نهمین" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "هزار" msgstr[1] "هزار" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "میلیون" msgstr[1] "میلیون" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "میلیارد" msgstr[1] "میلیارد" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "ترلیون" msgstr[1] "ترلیون" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "کوادریلیون" msgstr[1] "کوادریلیون" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "کوانتیلیون" msgstr[1] "کوانتیلیون" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "سکستیلیون" msgstr[1] "سکستیلیون" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "سپتیلیون" msgstr[1] "سپتیلیون" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "اوکتیلیون" msgstr[1] "اوکتیلیون" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "نونیلیون" msgstr[1] "نونیلیون" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "دسیلیون" msgstr[1] "دسیلیون" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "گوگول" msgstr[1] "گوگول" #: src/humanize/number.py:301 msgid "zero" msgstr "صفر" #: src/humanize/number.py:302 msgid "one" msgstr "یک" #: src/humanize/number.py:303 msgid "two" msgstr "دو" #: src/humanize/number.py:304 msgid "three" msgstr "سه" #: src/humanize/number.py:305 msgid "four" msgstr "چهار" #: src/humanize/number.py:306 msgid "five" msgstr "پنج" #: src/humanize/number.py:307 msgid "six" msgstr "شش" #: src/humanize/number.py:308 msgid "seven" msgstr "هفت" #: src/humanize/number.py:309 msgid "eight" msgstr "هشت" #: src/humanize/number.py:310 msgid "nine" msgstr "نه" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d میکرو‌ثانیه" msgstr[1] "%d میکرو‌ثانیه" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d میلی‌ثانیه" msgstr[1] "%d میلی‌ثانیه" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "یک لحظه" #: src/humanize/time.py:167 msgid "a second" msgstr "یک ثانیه" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d ثانیه" msgstr[1] "%d ثانیه" #: src/humanize/time.py:173 msgid "a minute" msgstr "یک دقیقه" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d دقیقه" msgstr[1] "%d دقیقه" #: src/humanize/time.py:180 msgid "an hour" msgstr "یک ساعت" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d ساعت" msgstr[1] "%d ساعت" #: src/humanize/time.py:188 msgid "a day" msgstr "یک روز" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d روز" msgstr[1] "%d روز" #: src/humanize/time.py:197 msgid "a month" msgstr "یک ماه" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d ماه" msgstr[1] "%d ماه" #: src/humanize/time.py:203 msgid "a year" msgstr "یک سال" #: src/humanize/time.py:206 src/humanize/time.py:217 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "۱ سال و %d روز" msgstr[1] "۱ سال و %d روز" #: src/humanize/time.py:210 msgid "1 year, 1 month" msgstr "۱ سال و ۱ ماه" #: src/humanize/time.py:213 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "۱ سال و %d ماه" msgstr[1] "۱ سال و %d ماه" #: src/humanize/time.py:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d سال" msgstr[1] "%d سال" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "%s تا به اکنون" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s پیش" #: src/humanize/time.py:260 msgid "now" msgstr "اکنون" #: src/humanize/time.py:284 msgid "today" msgstr "امروز" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "فردا" #: src/humanize/time.py:290 msgid "yesterday" msgstr "دیروز" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s و %s" humanize-4.16.0/src/humanize/locale/fi_FI/LC_MESSAGES/humanize.mo0000644000000000000000000000645115220765405021150 0ustar00Þ•B,Y< ¡°ÁÖéþ   , : F T`"¢ ² À Ì Ú æ ô    ( 4 B N \ h v‚ˆ‘𢫲ºÊÞäé îü %)=AYq‡�£§¹¿ÅÎà äîUóI 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äänhuomennabiljoonaabiljoonaakaksieilennollahumanize-4.16.0/src/humanize/locale/fi_FI/LC_MESSAGES/humanize.po0000644000000000000000000001506015220765405021147 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "tuhatta" msgstr[1] "tuhatta" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "miljoonaa" msgstr[1] "miljoonaa" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "miljardia" msgstr[1] "miljardia" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "biljoonaa" msgstr[1] "biljoonaa" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "kvadriljoonaa" msgstr[1] "kvadriljoonaa" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "kvintiljoonaa" msgstr[1] "kvintiljoonaa" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sekstiljoonaa" msgstr[1] "sekstiljoonaa" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "septiljoonaa" msgstr[1] "septiljoonaa" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "oktiljoonaa" msgstr[1] "oktiljoonaa" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "noniljoonaa" msgstr[1] "noniljoonaa" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "dekiljoonaa" msgstr[1] "dekiljoonaa" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:301 msgid "zero" msgstr "nolla" #: src/humanize/number.py:302 msgid "one" msgstr "yksi" #: src/humanize/number.py:303 msgid "two" msgstr "kaksi" #: src/humanize/number.py:304 msgid "three" msgstr "kolme" #: src/humanize/number.py:305 msgid "four" msgstr "neljä" #: src/humanize/number.py:306 msgid "five" msgstr "viisi" #: src/humanize/number.py:307 msgid "six" msgstr "kuusi" #: src/humanize/number.py:308 msgid "seven" msgstr "seitsemän" #: src/humanize/number.py:309 msgid "eight" msgstr "kahdeksan" #: src/humanize/number.py:310 msgid "nine" msgstr "yhdeksän" #: src/humanize/time.py:152 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikrosekunti" msgstr[1] "%d mikrosekuntia" #: src/humanize/time.py:161 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d millisekunti" msgstr[1] "%d millisekuntia" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "hetki" #: src/humanize/time.py:167 msgid "a second" msgstr "sekunti" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d sekunti" msgstr[1] "%d sekuntia" #: src/humanize/time.py:173 msgid "a minute" msgstr "minuutti" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuutti" msgstr[1] "%d minuuttia" #: src/humanize/time.py:180 msgid "an hour" msgstr "tunti" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d tunti" msgstr[1] "%d tuntia" #: src/humanize/time.py:188 msgid "a day" msgstr "päivä" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d päivä" msgstr[1] "%d päivää" #: src/humanize/time.py:197 msgid "a month" msgstr "kuukausi" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d kuukausi" msgstr[1] "%d kuukautta" #: src/humanize/time.py:203 msgid "a year" msgstr "vuosi" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 vuosi, 1 kuukausi" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d vuosi" msgstr[1] "%d vuotta" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "%s tästä" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s sitten" #: src/humanize/time.py:260 msgid "now" msgstr "nyt" #: src/humanize/time.py:284 msgid "today" msgstr "tänään" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "huomenna" #: src/humanize/time.py:290 msgid "yesterday" msgstr "eilen" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s ja %s" humanize-4.16.0/src/humanize/locale/fr_FR/LC_MESSAGES/humanize.mo0000644000000000000000000001011015220765405021155 0ustar00Þ•Z켸¹ÁÊÙê (=Pev } ‡ “ ¡ ­ »Ç"æ  ' 3 A M [ g u � � › © µ Ã Ï Ý é ì ð ó ÷ û þ          ! % ( , 2 ; D L U \ d t ˆ Ž “ ˜ ¦ © ¹ ¾ Ò Ö ê î   4 : P T f l r { � ‘ › x   " , = P q ’ § · Î Û å î ö ø ú ÿ "!%GXZ\^`bdfhjlnprtvx{‚†Š�‘”˜›Ÿ¢¦©­°´·» à ÎÙ áí óý+05 <IL]b {†¡¤·Êãèý   '8=B.C0:<4>'6% W&+F)9BGU3LSH#8(!;?PZ-Q,DYJTMXA V/5KO$I=E 1" @ *2N 7R%d Byte%d Bytes%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)thEBEiBGBGiBKiBMBMiBPBPiBQBQiBRBRiBTBTiBYBYiBZBZiBa daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolkBmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-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 octet%d octets%d jour%d jours%d heure%d heures%d microseconde%d microsecondes%d milliseconde%d millisecondes%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 moiseeeeeeeeeeeeeeeeEoEioGoGioKioMoMioPoPioQoQioRoRioToTioYoYioZoZioun jourune minuteun instantun moisune secondeun anune heuremilliardmilliardsquintilliardquintilliardshuitcinqquatregogolgogolsKomillionmillionsneufquintillionquintillionsmaintenantquadrilliardquadrilliardsunbilliardbilliardstrilliontrillionsquatrillionquatrillionssepttrilliardtrilliardssixmillemillestroisaujourd'huidemainbillionbillionsdeuxhierzérohumanize-4.16.0/src/humanize/locale/fr_FR/LC_MESSAGES/humanize.po0000644000000000000000000001621015220765405021167 0ustar00# 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: 2025-04-01 12:17-0400\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:84 msgctxt "0 (male)" msgid "th" msgstr "e" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "er" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "e" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "e" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "e" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "e" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "e" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "e" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "e" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "e" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "e" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "ère" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "e" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "e" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "e" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "e" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "e" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "e" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "e" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "e" #: src/humanize/number.py:183 msgid "thousand" msgid_plural "thousand" msgstr[0] "mille" msgstr[1] "milles" #: src/humanize/number.py:184 msgid "million" msgid_plural "million" msgstr[0] "million" msgstr[1] "millions" #: src/humanize/number.py:185 msgid "billion" msgid_plural "billion" msgstr[0] "milliard" msgstr[1] "milliards" #: src/humanize/number.py:186 msgid "trillion" msgid_plural "trillion" msgstr[0] "billion" msgstr[1] "billions" #: src/humanize/number.py:187 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "billiard" msgstr[1] "billiards" #: src/humanize/number.py:188 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "trillion" msgstr[1] "trillions" #: src/humanize/number.py:189 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "trilliard" msgstr[1] "trilliards" #: src/humanize/number.py:190 msgid "septillion" msgid_plural "septillion" msgstr[0] "quatrillion" msgstr[1] "quatrillions" #: src/humanize/number.py:191 msgid "octillion" msgid_plural "octillion" msgstr[0] "quadrilliard" msgstr[1] "quadrilliards" #: src/humanize/number.py:192 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "quintillion" msgstr[1] "quintillions" #: src/humanize/number.py:193 msgid "decillion" msgid_plural "decillion" msgstr[0] "quintilliard" msgstr[1] "quintilliards" #: src/humanize/number.py:194 msgid "googol" msgid_plural "googol" msgstr[0] "gogol" msgstr[1] "gogols" #: src/humanize/number.py:313 msgid "zero" msgstr "zéro" #: src/humanize/number.py:314 msgid "one" msgstr "un" #: src/humanize/number.py:315 msgid "two" msgstr "deux" #: src/humanize/number.py:316 msgid "three" msgstr "trois" #: src/humanize/number.py:317 msgid "four" msgstr "quatre" #: src/humanize/number.py:318 msgid "five" msgstr "cinq" #: src/humanize/number.py:319 msgid "six" msgstr "six" #: src/humanize/number.py:320 msgid "seven" msgstr "sept" #: src/humanize/number.py:321 msgid "eight" msgstr "huit" #: src/humanize/number.py:322 msgid "nine" msgstr "neuf" #: src/humanize/time.py:162 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microseconde" msgstr[1] "%d microsecondes" #: src/humanize/time.py:171 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milliseconde" msgstr[1] "%d millisecondes" #: src/humanize/time.py:174 src/humanize/time.py:275 msgid "a moment" msgstr "un instant" #: src/humanize/time.py:177 msgid "a second" msgstr "une seconde" #: src/humanize/time.py:180 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d seconde" msgstr[1] "%d secondes" #: src/humanize/time.py:183 msgid "a minute" msgstr "une minute" #: src/humanize/time.py:187 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minute" msgstr[1] "%d minutes" #: src/humanize/time.py:190 msgid "an hour" msgstr "une heure" #: src/humanize/time.py:194 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d heure" msgstr[1] "%d heures" #: src/humanize/time.py:198 msgid "a day" msgstr "un jour" #: src/humanize/time.py:201 src/humanize/time.py:204 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d jour" msgstr[1] "%d jours" #: src/humanize/time.py:207 msgid "a month" msgstr "un mois" #: src/humanize/time.py:209 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mois" msgstr[1] "%d mois" #: src/humanize/time.py:213 msgid "a year" msgstr "un an" #: src/humanize/time.py:216 src/humanize/time.py:227 #, 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:220 msgid "1 year, 1 month" msgstr "un an et un mois" #: src/humanize/time.py:223 #, 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:229 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d an" msgstr[1] "%d ans" #: src/humanize/time.py:272 #, python-format msgid "%s from now" msgstr "dans %s" #: src/humanize/time.py:272 #, python-format msgid "%s ago" msgstr "il y a %s" #: src/humanize/time.py:276 msgid "now" msgstr "maintenant" #: src/humanize/time.py:313 msgid "today" msgstr "aujourd'hui" #: src/humanize/time.py:316 msgid "tomorrow" msgstr "demain" #: src/humanize/time.py:319 msgid "yesterday" msgstr "hier" #: src/humanize/time.py:634 #, python-format msgid "%s and %s" msgstr "%s et %s" # --- filesize units (naturalsize) --- #, python-format msgid "%d Byte" msgstr "%d octet" #, python-format msgid "%d Bytes" msgstr "%d octets" msgid "kB" msgstr "Ko" msgid "MB" msgstr "Mo" msgid "GB" msgstr "Go" msgid "TB" msgstr "To" msgid "PB" msgstr "Po" msgid "EB" msgstr "Eo" msgid "ZB" msgstr "Zo" msgid "YB" msgstr "Yo" msgid "RB" msgstr "Ro" msgid "QB" msgstr "Qo" # --- binary filesize units --- msgid "KiB" msgstr "Kio" msgid "MiB" msgstr "Mio" msgid "GiB" msgstr "Gio" msgid "TiB" msgstr "Tio" msgid "PiB" msgstr "Pio" msgid "EiB" msgstr "Eio" msgid "ZiB" msgstr "Zio" msgid "YiB" msgstr "Yio" msgid "RiB" msgstr "Rio" msgid "QiB" msgstr "Qio" humanize-4.16.0/src/humanize/locale/he_IL/LC_MESSAGES/humanize.mo0000644000000000000000000000743415220765405021156 0ustar00Þ•D<a\àáð ?Tg|� ” ž ª ¸ Ä ÒÞ"ý  0 > J X d r ~ Œ ˜ ¦ ² À Ì Ú æ ô )08H\bg lzŠ�£§»¿×ï  ! % 7 = C L ^ b l Nq À Ü 9ø 52 h !„ !¦ È ä ð ø     6 <O Œ « ° ³ ¸ » À à È Ë Ð Ó Ø Û à ã è ë ò ù    " @ ^ i p y � © !° Ò %Ý ) -4!b„%‹±¶ÈÑÚá ÿ 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: 2023-10-05 15:45-0400 Last-Translator: Mark E. Shoulson Language-Team: Hebrew Language: he 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 חודשיםשנה אחת, חודש אחדיהייתייתייתייתייתייתייתייוםדקהרגעחודששנייהשנהשעהמיליארדמיליארדדציליוןדציליוןשמונהחמשארבעגוגולגוגולמיליוןמיליוןתשענוניליוןנוניליוןעכשיואוקטיליוןאוקטיליוןאחתקוודריליוןקוודריליוןקווינטיליוןקווינטיליוןספטיליוןספטיליוןשבעסקסטיליוןסקסטיליוןששאלףאלפיםשלושהיוםמחרטריליוןטריליוןשתייםאתמולאפסhumanize-4.16.0/src/humanize/locale/he_IL/LC_MESSAGES/humanize.po0000644000000000000000000001546115220765405021160 0ustar00# Hebrew translations for humanize package. # Copyright (C) 2023 # This file is distributed under the same license as the humanizepackage. # Mark E. Shoulson , 2023. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-10-05 14:07-0400\n" "PO-Revision-Date: 2023-10-05 15:45-0400\n" "Last-Translator: Mark E. Shoulson \n" "Language-Team: Hebrew \n" "Language: he\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:83 msgctxt "0 (male)" msgid "th" msgstr "י" #: src/humanize/number.py:84 msgctxt "1 (male)" msgid "st" msgstr "ון" #: src/humanize/number.py:85 msgctxt "2 (male)" msgid "nd" msgstr "י" #: src/humanize/number.py:86 msgctxt "3 (male)" msgid "rd" msgstr "י" #: src/humanize/number.py:87 msgctxt "4 (male)" msgid "th" msgstr "י" #: src/humanize/number.py:88 msgctxt "5 (male)" msgid "th" msgstr "י" #: src/humanize/number.py:89 msgctxt "6 (male)" msgid "th" msgstr "י" #: src/humanize/number.py:90 msgctxt "7 (male)" msgid "th" msgstr "י" #: src/humanize/number.py:91 msgctxt "8 (male)" msgid "th" msgstr "י" #: src/humanize/number.py:92 msgctxt "9 (male)" msgid "th" msgstr "י" #: src/humanize/number.py:96 msgctxt "0 (female)" msgid "th" msgstr "ית" #: src/humanize/number.py:97 msgctxt "1 (female)" msgid "st" msgstr "ונה" #: src/humanize/number.py:98 msgctxt "2 (female)" msgid "nd" msgstr "יה" #: src/humanize/number.py:99 msgctxt "3 (female)" msgid "rd" msgstr "ית" #: src/humanize/number.py:100 msgctxt "4 (female)" msgid "th" msgstr "ית" #: src/humanize/number.py:101 msgctxt "5 (female)" msgid "th" msgstr "ית" #: src/humanize/number.py:102 msgctxt "6 (female)" msgid "th" msgstr "ית" #: src/humanize/number.py:103 msgctxt "7 (female)" msgid "th" msgstr "ית" #: src/humanize/number.py:104 msgctxt "8 (female)" msgid "th" msgstr "ית" #: src/humanize/number.py:105 msgctxt "9 (female)" msgid "th" msgstr "ית" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "אלף" msgstr[1] "אלפים" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "מיליון" msgstr[1] "מיליון" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "מיליארד" msgstr[1] "מיליארד" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "טריליון" msgstr[1] "טריליון" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "קוודריליון" msgstr[1] "קוודריליון" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "קווינטיליון" msgstr[1] "קווינטיליון" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "סקסטיליון" msgstr[1] "סקסטיליון" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "ספטיליון" msgstr[1] "ספטיליון" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "אוקטיליון" msgstr[1] "אוקטיליון" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "נוניליון" msgstr[1] "נוניליון" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "דציליון" msgstr[1] "דציליון" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "גוגול" msgstr[1] "גוגול" #: src/humanize/number.py:304 msgid "zero" msgstr "אפס" #: src/humanize/number.py:305 msgid "one" msgstr "אחת" #: src/humanize/number.py:306 msgid "two" msgstr "שתיים" #: src/humanize/number.py:307 msgid "three" msgstr "שלוש" #: src/humanize/number.py:308 msgid "four" msgstr "ארבע" #: src/humanize/number.py:309 msgid "five" msgstr "חמש" #: src/humanize/number.py:310 msgid "six" msgstr "שש" #: src/humanize/number.py:311 msgid "seven" msgstr "שבע" #: src/humanize/number.py:312 msgid "eight" msgstr "שמונה" #: src/humanize/number.py:313 msgid "nine" msgstr "תשע" #: src/humanize/time.py:151 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "מיקרו־שנייה %d‏" msgstr[1] "‏%d מיקרו־שניות" #: src/humanize/time.py:160 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "מילי־שנייה %d‏" msgstr[1] "‏%d מילי־שניות" #: src/humanize/time.py:163 src/humanize/time.py:262 msgid "a moment" msgstr "רגע" #: src/humanize/time.py:166 msgid "a second" msgstr "שנייה" #: src/humanize/time.py:169 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "שנייה %d‏" msgstr[1] "‏%d שניות" #: src/humanize/time.py:172 msgid "a minute" msgstr "דקה" #: src/humanize/time.py:176 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "דקה %d‏" msgstr[1] "‏%d דקות" #: src/humanize/time.py:179 msgid "an hour" msgstr "שעה" #: src/humanize/time.py:183 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "שעה %d‏" msgstr[1] "‏%d שעות" #: src/humanize/time.py:187 msgid "a day" msgstr "יום" #: src/humanize/time.py:190 src/humanize/time.py:193 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "יום %d‏" msgstr[1] "‏%d ימים" #: src/humanize/time.py:196 msgid "a month" msgstr "חודש" #: src/humanize/time.py:198 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "חודש %d‏" msgstr[1] "‏%d חודשים" #: src/humanize/time.py:202 msgid "a year" msgstr "שנה" #: src/humanize/time.py:205 src/humanize/time.py:216 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "שנה אחת, יום %d‏" msgstr[1] "שנה אחת, %d ימים" #: src/humanize/time.py:209 msgid "1 year, 1 month" msgstr "שנה אחת, חודש אחד" #: src/humanize/time.py:212 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "שנה אחת, חודש %d‏" msgstr[1] "שנה אחת, %d חודשים" #: src/humanize/time.py:218 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "שנה %d‏" msgstr[1] "‏%d שנים" #: src/humanize/time.py:259 #, python-format msgid "%s from now" msgstr "אחרי %s" #: src/humanize/time.py:259 #, python-format msgid "%s ago" msgstr "לפני %s" #: src/humanize/time.py:263 msgid "now" msgstr "עכשיו" #: src/humanize/time.py:296 msgid "today" msgstr "היום" #: src/humanize/time.py:299 msgid "tomorrow" msgstr "מחר" #: src/humanize/time.py:302 msgid "yesterday" msgstr "אתמול" #: src/humanize/time.py:612 #, python-format msgid "%s and %s" msgstr "%s ו%s" humanize-4.16.0/src/humanize/locale/hu_HU/LC_MESSAGES/humanize.mo0000644000000000000000000000641615220765405021205 0ustar00Þ•B,Y< ¡°ÁÖéþ   , : F T`"¢ ² À Ì Ú æ ô    ( 4 B N \ h v‚ˆ‘𢫲ºÊÞäé îü %)=AYq‡�£§¹¿ÅÎà äîIó = K [ k  › © º Ä Î Ð Ò Ô %Ö +ü ( ? A C E G I K M O Q S U W Y [ ] _ g p } ˆ — Ÿ ¨ ¼ Ø Þ â 'è   ' ? D ` d | ˜ ° µ Ë Ï Ù à ã ê ú   :"?%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: 2021-07-05 10:30+0200 Last-Translator: Bálint Gyarmathy Language-Team: Hungarian Language: hu MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %d nap%d nap%d óra%d óra%d perc%d perc%d hónap%d hónap%d másodperc%d másodperc%d év%d évazóta eltelt %s%s és %s%s múlva....egy év és %d napegy év és %d napegy év és %d hónapegy év és %d hónapegy év és egy hónap................egy napegy percegy pillanategy hónapegy másodpercegy évegy óramilliárdmilliárdkvintilliárdkvintilliárdnyolcötnégytízszexdecilliárdtízszexdecilliárdmilliómilliókilenckvintilliókvintilliómostkvadrilliárdkvadrilliárdegykvadrilliókvadrilliókvadrilliárdkvadrilliárdkvadrilliókvadrillióhéttrilliárdtrilliárdhatezerezerhárommaholnapbillióbilliókettőtegnapnullahumanize-4.16.0/src/humanize/locale/hu_HU/LC_MESSAGES/humanize.po0000644000000000000000000001500615220765405021203 0ustar00# Hungarian translations for humanize package. # Copyright (C) 2023 # This file is distributed under the same license as the humanize project. # Bálint Gyarmathy , 2023. # msgid "" msgstr "" "Project-Id-Version: humanize\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-08 19:22+0200\n" "PO-Revision-Date: 2021-07-05 10:30+0200\n" "Last-Translator: Bálint Gyarmathy \n" "Language-Team: Hungarian\n" "Language: hu\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:84 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "ezer" msgstr[1] "ezer" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "millió" msgstr[1] "millió" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "milliárd" msgstr[1] "milliárd" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "billió" msgstr[1] "billió" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "kvadrillió" msgstr[1] "kvadrillió" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "kvadrilliárd" msgstr[1] "kvadrilliárd" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "trilliárd" msgstr[1] "trilliárd" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "kvadrillió" msgstr[1] "kvadrillió" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "kvadrilliárd" msgstr[1] "kvadrilliárd" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "kvintillió" msgstr[1] "kvintillió" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "kvintilliárd" msgstr[1] "kvintilliárd" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "tízszexdecilliárd" msgstr[1] "tízszexdecilliárd" #: src/humanize/number.py:301 msgid "zero" msgstr "nulla" #: src/humanize/number.py:302 msgid "one" msgstr "egy" #: src/humanize/number.py:303 msgid "two" msgstr "kettő" #: src/humanize/number.py:304 msgid "three" msgstr "három" #: src/humanize/number.py:305 msgid "four" msgstr "négy" #: src/humanize/number.py:306 msgid "five" msgstr "öt" #: src/humanize/number.py:307 msgid "six" msgstr "hat" #: src/humanize/number.py:308 msgid "seven" msgstr "hét" #: src/humanize/number.py:309 msgid "eight" msgstr "nyolc" #: src/humanize/number.py:310 msgid "nine" msgstr "kilenc" #: src/humanize/time.py:152 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikroszekundum" msgstr[1] "%d mikroszekundum" #: src/humanize/time.py:161 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d miliszekundum" msgstr[1] "%d miliszekundum" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "egy pillanat" #: src/humanize/time.py:167 msgid "a second" msgstr "egy másodperc" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d másodperc" msgstr[1] "%d másodperc" #: src/humanize/time.py:173 msgid "a minute" msgstr "egy perc" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d perc" msgstr[1] "%d perc" #: src/humanize/time.py:180 msgid "an hour" msgstr "egy óra" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d óra" msgstr[1] "%d óra" #: src/humanize/time.py:188 msgid "a day" msgstr "egy nap" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d nap" msgstr[1] "%d nap" #: src/humanize/time.py:197 msgid "a month" msgstr "egy hónap" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d hónap" msgstr[1] "%d hónap" #: src/humanize/time.py:203 msgid "a year" msgstr "egy év" #: src/humanize/time.py:206 src/humanize/time.py:217 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "egy év és %d nap" msgstr[1] "egy év és %d nap" #: src/humanize/time.py:210 msgid "1 year, 1 month" msgstr "egy év és egy hónap" #: src/humanize/time.py:213 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "egy év és %d hónap" msgstr[1] "egy év és %d hónap" #: src/humanize/time.py:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d év" msgstr[1] "%d év" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "%s múlva" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "azóta eltelt %s" #: src/humanize/time.py:260 msgid "now" msgstr "most" #: src/humanize/time.py:284 msgid "today" msgstr "ma" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "holnap" #: src/humanize/time.py:290 msgid "yesterday" msgstr "tegnap" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s és %s" humanize-4.16.0/src/humanize/locale/id_ID/LC_MESSAGES/humanize.mo0000644000000000000000000000567515220765405021153 0ustar00Þ•A$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 inibesoktriliunduakemarinnolhumanize-4.16.0/src/humanize/locale/id_ID/LC_MESSAGES/humanize.po0000644000000000000000000001366015220765405021147 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "juta" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "miliar" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "triliun" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "kuadriliun" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "quintillion" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sextillion" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "septillion" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "octillion" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "nonillion" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "decillion" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "googol" #: src/humanize/number.py:301 msgid "zero" msgstr "nol" #: src/humanize/number.py:302 msgid "one" msgstr "satu" #: src/humanize/number.py:303 msgid "two" msgstr "dua" #: src/humanize/number.py:304 msgid "three" msgstr "tiga" #: src/humanize/number.py:305 msgid "four" msgstr "empat" #: src/humanize/number.py:306 msgid "five" msgstr "lima" #: src/humanize/number.py:307 msgid "six" msgstr "enam" #: src/humanize/number.py:308 msgid "seven" msgstr "tujuh" #: src/humanize/number.py:309 msgid "eight" msgstr "delapan" #: src/humanize/number.py:310 msgid "nine" msgstr "sembilan" #: src/humanize/time.py:152 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikro detik" #: src/humanize/time.py:161 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d mili detik" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "beberapa saat" #: src/humanize/time.py:167 msgid "a second" msgstr "sedetik" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d detik" #: src/humanize/time.py:173 msgid "a minute" msgstr "semenit" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d menit" #: src/humanize/time.py:180 msgid "an hour" msgstr "sejam" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d jam" #: src/humanize/time.py:188 msgid "a day" msgstr "sehari" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d hari" #: src/humanize/time.py:197 msgid "a month" msgstr "sebulan" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d bulan" #: src/humanize/time.py:203 msgid "a year" msgstr "setahun" #: src/humanize/time.py:206 src/humanize/time.py:217 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 tahun, %d hari" #: src/humanize/time.py:210 msgid "1 year, 1 month" msgstr "1 tahun, 1 bulan" #: src/humanize/time.py:213 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 tahun, %d bulan" #: src/humanize/time.py:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d tahun" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "%s dari sekarang" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s yang lalu" #: src/humanize/time.py:260 msgid "now" msgstr "sekarang" #: src/humanize/time.py:284 msgid "today" msgstr "hari ini" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "besok" #: src/humanize/time.py:290 msgid "yesterday" msgstr "kemarin" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s dan %s" humanize-4.16.0/src/humanize/locale/it_IT/LC_MESSAGES/humanize.mo0000644000000000000000000000631215220765405021200 0ustar00Þ•B,Y< ¡°ÁÖéþ   , : F T`"¢ ² À Ì Ú æ ô    ( 4 B N \ h v‚ˆ‘𢫲ºÊÞäé îü %)=AYq‡�£§¹¿ÅÎà äî?ó3 G U i y � Ÿ ¥ ­ ´ · º ½ 'À #è   " % ( + . 1 4 7 : = @ C F I L O Y c n v � ‰ � ¢ ¼ Á È Ð Þ î ó   , 0 B T l r † Š œ   ¥ ¬ ¼ À Å :"?%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: 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 fa%s e %sfra %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'oramiliardomiliardiquintiliardoquintiliardiottocinquequattrogoogolgoogolmilionemilioninovequintilionequintilioniadessoquadriliardoquadriliardiunobiliardobiliarditrilionetrilioniquadrilionequadrilionisettetriliardotriliardiseimigliaiomigliaiatreoggidomanibilionebilionidueierizerohumanize-4.16.0/src/humanize/locale/it_IT/LC_MESSAGES/humanize.po0000644000000000000000000001470315220765405021206 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "º" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "º" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "º" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "ª" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "ª" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "ª" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "migliaio" msgstr[1] "migliaia" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "milione" msgstr[1] "milioni" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "miliardo" msgstr[1] "miliardi" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "bilione" msgstr[1] "bilioni" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "biliardo" msgstr[1] "biliardi" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "trilione" msgstr[1] "trilioni" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "triliardo" msgstr[1] "triliardi" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "quadrilione" msgstr[1] "quadrilioni" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "quadriliardo" msgstr[1] "quadriliardi" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "quintilione" msgstr[1] "quintilioni" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "quintiliardo" msgstr[1] "quintiliardi" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:301 msgid "zero" msgstr "zero" #: src/humanize/number.py:302 msgid "one" msgstr "uno" #: src/humanize/number.py:303 msgid "two" msgstr "due" #: src/humanize/number.py:304 msgid "three" msgstr "tre" #: src/humanize/number.py:305 msgid "four" msgstr "quattro" #: src/humanize/number.py:306 msgid "five" msgstr "cinque" #: src/humanize/number.py:307 msgid "six" msgstr "sei" #: src/humanize/number.py:308 msgid "seven" msgstr "sette" #: src/humanize/number.py:309 msgid "eight" msgstr "otto" #: src/humanize/number.py:310 msgid "nine" msgstr "nove" #: src/humanize/time.py:152 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microsecondo" msgstr[1] "%d microsecondi" #: src/humanize/time.py:161 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d millisecondo" msgstr[1] "%d millisecondi" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "un momento" #: src/humanize/time.py:167 msgid "a second" msgstr "un secondo" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d secondo" msgstr[1] "%d secondi" #: src/humanize/time.py:173 msgid "a minute" msgstr "un minuto" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minuti" #: src/humanize/time.py:180 msgid "an hour" msgstr "un'ora" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d ora" msgstr[1] "%d ore" #: src/humanize/time.py:188 msgid "a day" msgstr "un giorno" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d giorno" msgstr[1] "%d giorni" #: src/humanize/time.py:197 msgid "a month" msgstr "un mese" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mese" msgstr[1] "%d mesi" #: src/humanize/time.py:203 msgid "a year" msgstr "un anno" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "un anno ed un mese" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d anno" msgstr[1] "%d anni" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "fra %s" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s fa" #: src/humanize/time.py:260 msgid "now" msgstr "adesso" #: src/humanize/time.py:284 msgid "today" msgstr "oggi" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "domani" #: src/humanize/time.py:290 msgid "yesterday" msgstr "ieri" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s e %s" humanize-4.16.0/src/humanize/locale/ja_JP/LC_MESSAGES/humanize.mo0000644000000000000000000000463115220765405021155 0ustar00Þ•4¼G\xyˆ™®ÁÖç î ú   "."Mp € Ž š ¨ ´ Â Î Ü è ö    * 6 DPV_gpw…Š�Ÿ¤¨®²¸¾ÇÙ ÝaçIOX^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時間八五四百万九一七六三本日明日兆二昨日humanize-4.16.0/src/humanize/locale/ja_JP/LC_MESSAGES/humanize.po0000644000000000000000000001374215220765405021163 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "番目" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "番目" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "番目" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "番目" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "番目" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "番目" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "番目" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "番目" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "番目" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "番目" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "番目" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "番目" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "番目" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "番目" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "番目" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "番目" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "番目" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "番目" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "番目" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "番目" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "百万" #: src/humanize/number.py:180 #, fuzzy msgid "billion" msgid_plural "billion" msgstr[0] "十億" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "兆" #: src/humanize/number.py:182 #, fuzzy msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "千兆" #: src/humanize/number.py:183 #, fuzzy msgid "quintillion" msgid_plural "quintillion" msgstr[0] "百京" #: src/humanize/number.py:184 #, fuzzy msgid "sextillion" msgid_plural "sextillion" msgstr[0] "十垓" #: src/humanize/number.py:185 #, fuzzy msgid "septillion" msgid_plural "septillion" msgstr[0] "じょ" #: src/humanize/number.py:186 #, fuzzy msgid "octillion" msgid_plural "octillion" msgstr[0] "千じょ" #: src/humanize/number.py:187 #, fuzzy msgid "nonillion" msgid_plural "nonillion" msgstr[0] "百穣" #: src/humanize/number.py:188 #, fuzzy msgid "decillion" msgid_plural "decillion" msgstr[0] "十溝" #: src/humanize/number.py:189 #, fuzzy msgid "googol" msgid_plural "googol" msgstr[0] "溝無量大数" #: src/humanize/number.py:301 msgid "zero" msgstr "" #: src/humanize/number.py:302 msgid "one" msgstr "一" #: src/humanize/number.py:303 msgid "two" msgstr "二" #: src/humanize/number.py:304 msgid "three" msgstr "三" #: src/humanize/number.py:305 msgid "four" msgstr "四" #: src/humanize/number.py:306 msgid "five" msgstr "五" #: src/humanize/number.py:307 msgid "six" msgstr "六" #: src/humanize/number.py:308 msgid "seven" msgstr "七" #: src/humanize/number.py:309 msgid "eight" msgstr "八" #: src/humanize/number.py:310 msgid "nine" msgstr "九" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "" #: src/humanize/time.py:164 src/humanize/time.py:259 #, fuzzy msgid "a moment" msgstr "短時間" #: src/humanize/time.py:167 msgid "a second" msgstr "1秒" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d秒" #: src/humanize/time.py:173 msgid "a minute" msgstr "1分" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d分" #: src/humanize/time.py:180 msgid "an hour" msgstr "1時間" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d時間" #: src/humanize/time.py:188 msgid "a day" msgstr "1日" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d日" #: src/humanize/time.py:197 msgid "a month" msgstr "1ヶ月" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%dヶ月" #: src/humanize/time.py:203 msgid "a year" msgstr "1年" #: src/humanize/time.py:206 src/humanize/time.py:217 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1年 %d日" #: src/humanize/time.py:210 msgid "1 year, 1 month" msgstr "1年 1ヶ月" #: src/humanize/time.py:213 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1年 %dヶ月" #: src/humanize/time.py:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d年" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "%s後" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s前" #: src/humanize/time.py:260 #, fuzzy msgid "now" msgstr "今" #: src/humanize/time.py:284 msgid "today" msgstr "本日" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "明日" #: src/humanize/time.py:290 msgid "yesterday" msgstr "昨日" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "" humanize-4.16.0/src/humanize/locale/ko_KR/LC_MESSAGES/humanize.mo0000644000000000000000000000374015220765405021177 0ustar00Þ•$<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아홉방금하나일곱여섯셋오늘내일둘어제humanize-4.16.0/src/humanize/locale/ko_KR/LC_MESSAGES/humanize.po0000644000000000000000000001556215220765405021207 0ustar00# 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: 2023-01-08 19:22+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:84 #, fuzzy msgctxt "0 (male)" msgid "th" msgstr "번째" #: src/humanize/number.py:85 #, fuzzy msgctxt "1 (male)" msgid "st" msgstr "번째" #: src/humanize/number.py:86 #, fuzzy msgctxt "2 (male)" msgid "nd" msgstr "번째" #: src/humanize/number.py:87 #, fuzzy msgctxt "3 (male)" msgid "rd" msgstr "번째" #: src/humanize/number.py:88 #, fuzzy msgctxt "4 (male)" msgid "th" msgstr "번째" #: src/humanize/number.py:89 #, fuzzy msgctxt "5 (male)" msgid "th" msgstr "번째" #: src/humanize/number.py:90 #, fuzzy msgctxt "6 (male)" msgid "th" msgstr "번째" #: src/humanize/number.py:91 #, fuzzy msgctxt "7 (male)" msgid "th" msgstr "번째" #: src/humanize/number.py:92 #, fuzzy msgctxt "8 (male)" msgid "th" msgstr "번째" #: src/humanize/number.py:93 #, fuzzy msgctxt "9 (male)" msgid "th" msgstr "번째" #: src/humanize/number.py:97 #, fuzzy msgctxt "0 (female)" msgid "th" msgstr "번째" #: src/humanize/number.py:98 #, fuzzy msgctxt "1 (female)" msgid "st" msgstr "번째" #: src/humanize/number.py:99 #, fuzzy msgctxt "2 (female)" msgid "nd" msgstr "번째" #: src/humanize/number.py:100 #, fuzzy msgctxt "3 (female)" msgid "rd" msgstr "번째" #: src/humanize/number.py:101 #, fuzzy msgctxt "4 (female)" msgid "th" msgstr "번째" #: src/humanize/number.py:102 #, fuzzy msgctxt "5 (female)" msgid "th" msgstr "번째" #: src/humanize/number.py:103 #, fuzzy msgctxt "6 (female)" msgid "th" msgstr "번째" #: src/humanize/number.py:104 #, fuzzy msgctxt "7 (female)" msgid "th" msgstr "번째" #: src/humanize/number.py:105 #, fuzzy msgctxt "8 (female)" msgid "th" msgstr "번째" #: src/humanize/number.py:106 #, fuzzy msgctxt "9 (female)" msgid "th" msgstr "번째" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "%(value)s million" msgstr[1] "%(value)s million" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "milliard" msgstr[1] "milliard" #: src/humanize/number.py:181 #, fuzzy msgid "trillion" msgid_plural "trillion" msgstr[0] "%(value)s billion" msgstr[1] "%(value)s billion" #: src/humanize/number.py:182 #, fuzzy msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "%(value)s quadrillion" msgstr[1] "%(value)s quadrillion" #: src/humanize/number.py:183 #, fuzzy msgid "quintillion" msgid_plural "quintillion" msgstr[0] "%(value)s quintillion" msgstr[1] "%(value)s quintillion" #: src/humanize/number.py:184 #, fuzzy msgid "sextillion" msgid_plural "sextillion" msgstr[0] "%(value)s sextillion" msgstr[1] "%(value)s sextillion" #: src/humanize/number.py:185 #, fuzzy msgid "septillion" msgid_plural "septillion" msgstr[0] "%(value)s septillion" msgstr[1] "%(value)s septillion" #: src/humanize/number.py:186 #, fuzzy msgid "octillion" msgid_plural "octillion" msgstr[0] "%(value)s octillion" msgstr[1] "%(value)s octillion" #: src/humanize/number.py:187 #, fuzzy msgid "nonillion" msgid_plural "nonillion" msgstr[0] "%(value)s nonillion" msgstr[1] "%(value)s nonillion" #: src/humanize/number.py:188 #, fuzzy msgid "decillion" msgid_plural "decillion" msgstr[0] "%(value)s décillion" msgstr[1] "%(value)s décillion" #: src/humanize/number.py:189 #, fuzzy msgid "googol" msgid_plural "googol" msgstr[0] "%(value)s gogol" msgstr[1] "%(value)s gogol" #: src/humanize/number.py:301 msgid "zero" msgstr "" #: src/humanize/number.py:302 msgid "one" msgstr "하나" #: src/humanize/number.py:303 msgid "two" msgstr "둘" #: src/humanize/number.py:304 msgid "three" msgstr "셋" #: src/humanize/number.py:305 msgid "four" msgstr "넷" #: src/humanize/number.py:306 msgid "five" msgstr "다섯" #: src/humanize/number.py:307 msgid "six" msgstr "여섯" #: src/humanize/number.py:308 msgid "seven" msgstr "일곱" #: src/humanize/number.py:309 msgid "eight" msgstr "여덟" #: src/humanize/number.py:310 msgid "nine" msgstr "아홉" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d마이크로초" msgstr[1] "%d마이크로초" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d밀리초" msgstr[1] "%d밀리초" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "잠깐" #: src/humanize/time.py:167 msgid "a second" msgstr "1초" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d초" msgstr[1] "%d초" #: src/humanize/time.py:173 msgid "a minute" msgstr "1분" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d분" msgstr[1] "%d분" #: src/humanize/time.py:180 msgid "an hour" msgstr "1시간" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d시간" msgstr[1] "%d시간" #: src/humanize/time.py:188 msgid "a day" msgstr "하루" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d일" msgstr[1] "%d일" #: src/humanize/time.py:197 msgid "a month" msgstr "1개월" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d개월" msgstr[1] "%d개월" #: src/humanize/time.py:203 msgid "a year" msgstr "1년" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1년, 1개월" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d년" msgstr[1] "%d년" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "%s 후" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s 전" #: src/humanize/time.py:260 msgid "now" msgstr "방금" #: src/humanize/time.py:284 msgid "today" msgstr "오늘" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "내일" #: src/humanize/time.py:290 msgid "yesterday" msgstr "어제" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "" humanize-4.16.0/src/humanize/locale/lv/LC_MESSAGES/humanize.mo0000644000000000000000000000734515220765405020620 0ustar00Þ•FLa| !2Qp…˜­¾ Å Ï Û é õ ".Q a o { ‰ • £ ¯ ½ É × ã ñ ý   %17@IQZaiy�“˜ �«»ÀÔØìð  6 < R V h n t } � “ � +¢ Î × à " 4# 1X %Š '° %Ø þ  # , 4 6 8 : 7< ?t ´ Ç É Ë Í Ï Ñ Ó Õ × Ù Û Ý ß á ã å ç î ÷ ÿ     9 W _ e l � ™ ¡ ¿ Å ã #é #  1R#[ …¦¬´¹ÔÙß7> D@-?8F;6'4%+$ #! 5<C3,/=)1(2*B:.0 E9 "&A %d Byte%d Bytes%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: 2026-03-13 13:04+0200 Last-Translator: Language-Team: Language: lv 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 != 0 ? 1 : 2); %d baits%d baiti%d dienas%d dienām%d dienām%d stundas%d stundām%d stundām%d mikrosekundes%d mikrosekundēm%d mikrosekundēm%d milisekundes%d milisekundēm%d milisekundēm%d minūtes%d minūtēm%d minūtēm%d mēneša%d mēnešiem%d mēnešiem%d sekundes%d sekundēm%d sekundēm%d gada%d gadiem%d gadiempirms %s%s un %spēc %s....1 gada, %d dienas1 gada, %d dienām1 gada, %d dienām1 gada, %d mēneša1 gada, %d mēnešiem1 gada, %d mēnešiem1 gada, 1 mēneša................dienasminūtesbrīžamēnešasekundesgadastundasmiljardsmiljardimiljardudeciljonsdeciljonideciljonuastoņipiecičetrigugolsgugoligugolumiljonsmiljonimiljonudeviņinoniljonsnoniljoninoniljonutagadoktiljonsoktiljonioktiljonuvienskvadriljonskvadriljonikvadriljonukvintiljonskvintiljonikvintiljonuseptiljonsseptiljoniseptiljonuseptiņisekstiljonssekstiljonisekstiljonusešitūkstotistūkstošitūkstošutrīsšodienrīttriljonstriljonitriljonudivivakarnullehumanize-4.16.0/src/humanize/locale/lv/LC_MESSAGES/humanize.po0000644000000000000000000001634515220765405020623 0ustar00# Latvian translations for humanize package. # Copyright (C) 2026 THE humanize'S COPYRIGHT HOLDER # This file is distributed under the same license as the humanize package. # FIRST AUTHOR , 2026. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-03-13 11:29+0200\n" "PO-Revision-Date: 2026-03-13 13:04+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: lv\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 != 0 ? 1 : " "2);\n" #: src/humanize/filesize.py:94 #, python-format msgid "%d Byte" msgstr "%d baits" #: src/humanize/filesize.py:97 #, python-format msgid "%d Bytes" msgstr "%d baiti" #: src/humanize/number.py:81 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:82 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:83 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:84 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:85 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:86 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:87 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:88 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:89 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:90 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:94 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:95 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:96 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:97 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:98 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:99 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:100 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:101 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:102 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:103 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:180 msgid "thousand" msgid_plural "thousand" msgstr[0] "tūkstotis" msgstr[1] "tūkstoši" msgstr[2] "tūkstošu" #: src/humanize/number.py:181 msgid "million" msgid_plural "million" msgstr[0] "miljons" msgstr[1] "miljoni" msgstr[2] "miljonu" #: src/humanize/number.py:182 msgid "billion" msgid_plural "billion" msgstr[0] "miljards" msgstr[1] "miljardi" msgstr[2] "miljardu" #: src/humanize/number.py:183 msgid "trillion" msgid_plural "trillion" msgstr[0] "triljons" msgstr[1] "triljoni" msgstr[2] "triljonu" #: src/humanize/number.py:184 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "kvadriljons" msgstr[1] "kvadriljoni" msgstr[2] "kvadriljonu" #: src/humanize/number.py:185 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "kvintiljons" msgstr[1] "kvintiljoni" msgstr[2] "kvintiljonu" #: src/humanize/number.py:186 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sekstiljons" msgstr[1] "sekstiljoni" msgstr[2] "sekstiljonu" #: src/humanize/number.py:187 msgid "septillion" msgid_plural "septillion" msgstr[0] "septiljons" msgstr[1] "septiljoni" msgstr[2] "septiljonu" #: src/humanize/number.py:188 msgid "octillion" msgid_plural "octillion" msgstr[0] "oktiljons" msgstr[1] "oktiljoni" msgstr[2] "oktiljonu" #: src/humanize/number.py:189 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "noniljons" msgstr[1] "noniljoni" msgstr[2] "noniljonu" #: src/humanize/number.py:190 msgid "decillion" msgid_plural "decillion" msgstr[0] "deciljons" msgstr[1] "deciljoni" msgstr[2] "deciljonu" #: src/humanize/number.py:191 msgid "googol" msgid_plural "googol" msgstr[0] "gugols" msgstr[1] "gugoli" msgstr[2] "gugolu" #: src/humanize/number.py:308 msgid "zero" msgstr "nulle" #: src/humanize/number.py:309 msgid "one" msgstr "viens" #: src/humanize/number.py:310 msgid "two" msgstr "divi" #: src/humanize/number.py:311 msgid "three" msgstr "trīs" #: src/humanize/number.py:312 msgid "four" msgstr "četri" #: src/humanize/number.py:313 msgid "five" msgstr "pieci" #: src/humanize/number.py:314 msgid "six" msgstr "seši" #: src/humanize/number.py:315 msgid "seven" msgstr "septiņi" #: src/humanize/number.py:316 msgid "eight" msgstr "astoņi" #: src/humanize/number.py:317 msgid "nine" msgstr "deviņi" #: src/humanize/time.py:166 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikrosekundes" msgstr[1] "%d mikrosekundēm" msgstr[2] "%d mikrosekundēm" #: src/humanize/time.py:175 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milisekundes" msgstr[1] "%d milisekundēm" msgstr[2] "%d milisekundēm" #: src/humanize/time.py:178 src/humanize/time.py:294 msgid "a moment" msgstr "brīža" #: src/humanize/time.py:181 msgid "a second" msgstr "sekundes" #: src/humanize/time.py:184 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d sekundes" msgstr[1] "%d sekundēm" msgstr[2] "%d sekundēm" #: src/humanize/time.py:189 msgid "a minute" msgstr "minūtes" #: src/humanize/time.py:192 src/humanize/time.py:199 msgid "an hour" msgstr "stundas" #: src/humanize/time.py:194 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minūtes" msgstr[1] "%d minūtēm" msgstr[2] "%d minūtēm" #: src/humanize/time.py:202 src/humanize/time.py:208 msgid "a day" msgstr "dienas" #: src/humanize/time.py:204 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d stundas" msgstr[1] "%d stundām" msgstr[2] "%d stundām" #: src/humanize/time.py:211 src/humanize/time.py:214 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dienas" msgstr[1] "%d dienām" msgstr[2] "%d dienām" #: src/humanize/time.py:217 msgid "a month" msgstr "mēneša" #: src/humanize/time.py:220 src/humanize/time.py:226 msgid "a year" msgstr "gada" #: src/humanize/time.py:222 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mēneša" msgstr[1] "%d mēnešiem" msgstr[2] "%d mēnešiem" #: src/humanize/time.py:229 src/humanize/time.py:244 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 gada, %d dienas" msgstr[1] "1 gada, %d dienām" msgstr[2] "1 gada, %d dienām" #: src/humanize/time.py:233 msgid "1 year, 1 month" msgstr "1 gada, 1 mēneša" #: src/humanize/time.py:237 src/humanize/time.py:246 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d gada" msgstr[1] "%d gadiem" msgstr[2] "%d gadiem" #: src/humanize/time.py:240 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 gada, %d mēneša" msgstr[1] "1 gada, %d mēnešiem" msgstr[2] "1 gada, %d mēnešiem" #: src/humanize/time.py:291 #, python-format msgid "%s from now" msgstr "pēc %s" #: src/humanize/time.py:291 #, python-format msgid "%s ago" msgstr "pirms %s" #: src/humanize/time.py:295 msgid "now" msgstr "tagad" #: src/humanize/time.py:338 msgid "today" msgstr "šodien" #: src/humanize/time.py:341 msgid "tomorrow" msgstr "rīt" #: src/humanize/time.py:344 msgid "yesterday" msgstr "vakar" #: src/humanize/time.py:662 #, python-format msgid "%s and %s" msgstr "%s un %s" humanize-4.16.0/src/humanize/locale/nb/LC_MESSAGES/humanize.mo0000644000000000000000000000670115220765405020571 0ustar00Þ•D<a\àáð ?Tg|� ” ž ª ¸ Ä ÒÞ"ý  0 > J X d r ~ Œ ˜ ¦ ² À Ì Ú æ ô )08H\bg lzŠ�£§»¿×ï  ! % 7 = C L ^ b l lq Þ î ÿ  ? U k � � ˜ ¡ ¬ ¯ ² ¶ º #Ø ü       " % ( + . 1 4 7 : = @ G Q ^ h r y � • ± · » À Î à ã ý    4 H b f | � � ‘ —   ² µ ¼ 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: 2023-11-21 12:57+0100 Last-Translator: Frode Danielsen Language-Team: Norwegian Bokmal Language: nb 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.4.1 %d dag%d dager%d time%d timer%d mikrosekund%d mikrosekunder%d millisekund%d millisekunder%d minutt%d minutter%d måned%d måneder%d sekund%d sekunder%d år%d år%s siden%s og %s%s fra nåtetesteste1 år, %d dag1 år, %d dager1 år, %d måned1 år, %d måneder1 år, 1 måneddredredjedjededetetetetededededededeen daget minuttet øyeblikken månedet sekundet åren timemilliardmilliarderkvintilliardkvintilliarderåttefemfiregoogolgoogolmillionmillionernikvintillionkvintillionernåkvadrilliardkvadrilliarderenbilliardbilliardertrilliontrillionerkvadrillionkvadrillionersyvtrilliardtrilliardersekstusentusentrei dagi morgenbillionbillionertoi gårnullhumanize-4.16.0/src/humanize/locale/nb/LC_MESSAGES/humanize.po0000644000000000000000000001477415220765405020605 0ustar00# Norwegian Bokmal translations for PACKAGE package. # Copyright (C) 2023 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Frode Danielsen , 2023. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-11-21 12:09+0100\n" "PO-Revision-Date: 2023-11-21 12:57+0100\n" "Last-Translator: Frode Danielsen \n" "Language-Team: Norwegian Bokmal \n" "Language: nb\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.4.1\n" #: src/humanize/number.py:83 msgctxt "0 (male)" msgid "th" msgstr "te" #: src/humanize/number.py:84 msgctxt "1 (male)" msgid "st" msgstr "ste" #: src/humanize/number.py:85 msgctxt "2 (male)" msgid "nd" msgstr "dre" #: src/humanize/number.py:86 msgctxt "3 (male)" msgid "rd" msgstr "dje" #: src/humanize/number.py:87 msgctxt "4 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:88 msgctxt "5 (male)" msgid "th" msgstr "te" #: src/humanize/number.py:89 msgctxt "6 (male)" msgid "th" msgstr "te" #: src/humanize/number.py:90 msgctxt "7 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:91 msgctxt "8 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:92 msgctxt "9 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:96 msgctxt "0 (female)" msgid "th" msgstr "te" #: src/humanize/number.py:97 msgctxt "1 (female)" msgid "st" msgstr "ste" #: src/humanize/number.py:98 msgctxt "2 (female)" msgid "nd" msgstr "dre" #: src/humanize/number.py:99 msgctxt "3 (female)" msgid "rd" msgstr "dje" #: src/humanize/number.py:100 msgctxt "4 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:101 msgctxt "5 (female)" msgid "th" msgstr "te" #: src/humanize/number.py:102 msgctxt "6 (female)" msgid "th" msgstr "te" #: src/humanize/number.py:103 msgctxt "7 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:104 msgctxt "8 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:105 msgctxt "9 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "tusen" msgstr[1] "tusen" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "million" msgstr[1] "millioner" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "milliard" msgstr[1] "milliarder" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "billion" msgstr[1] "billioner" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "billiard" msgstr[1] "billiarder" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "trillion" msgstr[1] "trillioner" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "trilliard" msgstr[1] "trilliarder" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "kvadrillion" msgstr[1] "kvadrillioner" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "kvadrilliard" msgstr[1] "kvadrilliarder" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "kvintillion" msgstr[1] "kvintillioner" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "kvintilliard" msgstr[1] "kvintilliarder" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:304 msgid "zero" msgstr "null" #: src/humanize/number.py:305 msgid "one" msgstr "en" #: src/humanize/number.py:306 msgid "two" msgstr "to" #: src/humanize/number.py:307 msgid "three" msgstr "tre" #: src/humanize/number.py:308 msgid "four" msgstr "fire" #: src/humanize/number.py:309 msgid "five" msgstr "fem" #: src/humanize/number.py:310 msgid "six" msgstr "seks" #: src/humanize/number.py:311 msgid "seven" msgstr "syv" #: src/humanize/number.py:312 msgid "eight" msgstr "åtte" #: src/humanize/number.py:313 msgid "nine" msgstr "ni" #: src/humanize/time.py:151 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikrosekund" msgstr[1] "%d mikrosekunder" #: src/humanize/time.py:160 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d millisekund" msgstr[1] "%d millisekunder" #: src/humanize/time.py:163 src/humanize/time.py:262 msgid "a moment" msgstr "et øyeblikk" #: src/humanize/time.py:166 msgid "a second" msgstr "et sekund" #: src/humanize/time.py:169 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d sekund" msgstr[1] "%d sekunder" #: src/humanize/time.py:172 msgid "a minute" msgstr "et minutt" #: src/humanize/time.py:176 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minutt" msgstr[1] "%d minutter" #: src/humanize/time.py:179 msgid "an hour" msgstr "en time" #: src/humanize/time.py:183 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d time" msgstr[1] "%d timer" #: src/humanize/time.py:187 msgid "a day" msgstr "en dag" #: src/humanize/time.py:190 src/humanize/time.py:193 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dag" msgstr[1] "%d dager" #: src/humanize/time.py:196 msgid "a month" msgstr "en måned" #: src/humanize/time.py:198 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d måned" msgstr[1] "%d måneder" #: src/humanize/time.py:202 msgid "a year" msgstr "et år" #: src/humanize/time.py:205 src/humanize/time.py:216 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 år, %d dag" msgstr[1] "1 år, %d dager" #: src/humanize/time.py:209 msgid "1 year, 1 month" msgstr "1 år, 1 måned" #: src/humanize/time.py:212 #, 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:218 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d år" msgstr[1] "%d år" #: src/humanize/time.py:259 #, python-format msgid "%s from now" msgstr "%s fra nå" #: src/humanize/time.py:259 #, python-format msgid "%s ago" msgstr "%s siden" #: src/humanize/time.py:263 msgid "now" msgstr "nå" #: src/humanize/time.py:296 msgid "today" msgstr "i dag" #: src/humanize/time.py:299 msgid "tomorrow" msgstr "i morgen" #: src/humanize/time.py:302 msgid "yesterday" msgstr "i går" #: src/humanize/time.py:613 #, python-format msgid "%s and %s" msgstr "%s og %s" humanize-4.16.0/src/humanize/locale/nl_NL/LC_MESSAGES/humanize.mo0000644000000000000000000000627215220765405021177 0ustar00Þ•A$Y,�‘ ±ÆÙîÿ    * 6 DP"o’ ¢ ° ¼ Ê Ö ä ð þ   $ 2 > L X frx�Š’›¢ªºÎÔÙ Þìü-1Iaw}“—�£¬¾ ÂÌgÑ9 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éénbiljardbiljardtriljoentriljoenquadriljoenquadriljoenzeventriljardtriljardzesdrievandaagmorgenbiljoenbiljoentweegisterennulhumanize-4.16.0/src/humanize/locale/nl_NL/LC_MESSAGES/humanize.po0000644000000000000000000001472315220765405021202 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "ste" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "de" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "de" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "de" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "ste" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "de" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "de" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "de" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "miljoen" msgstr[1] "miljoen" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "miljard" msgstr[1] "miljard" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "biljoen" msgstr[1] "biljoen" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "biljard" msgstr[1] "biljard" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "triljoen" msgstr[1] "triljoen" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "triljard" msgstr[1] "triljard" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "quadriljoen" msgstr[1] "quadriljoen" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "quadriljard" msgstr[1] "quadriljard" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "quintiljoen" msgstr[1] "quintiljoen" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "quintiljard" msgstr[1] "quintiljard" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:301 msgid "zero" msgstr "nul" #: src/humanize/number.py:302 msgid "one" msgstr "één" #: src/humanize/number.py:303 msgid "two" msgstr "twee" #: src/humanize/number.py:304 msgid "three" msgstr "drie" #: src/humanize/number.py:305 msgid "four" msgstr "vier" #: src/humanize/number.py:306 msgid "five" msgstr "vijf" #: src/humanize/number.py:307 msgid "six" msgstr "zes" #: src/humanize/number.py:308 msgid "seven" msgstr "zeven" #: src/humanize/number.py:309 msgid "eight" msgstr "acht" #: src/humanize/number.py:310 msgid "nine" msgstr "negen" #: src/humanize/time.py:152 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microseconde" msgstr[1] "%d microseconden" #: src/humanize/time.py:161 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milliseconde" msgstr[1] "%d milliseconden" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "een moment" #: src/humanize/time.py:167 msgid "a second" msgstr "een seconde" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d seconde" msgstr[1] "%d seconden" #: src/humanize/time.py:173 msgid "a minute" msgstr "een minuut" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuut" msgstr[1] "%d minuten" #: src/humanize/time.py:180 msgid "an hour" msgstr "een uur" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d uur" msgstr[1] "%d uur" #: src/humanize/time.py:188 msgid "a day" msgstr "een dag" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dag" msgstr[1] "%d dagen" #: src/humanize/time.py:197 msgid "a month" msgstr "een maand" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d maand" msgstr[1] "%d maanden" #: src/humanize/time.py:203 msgid "a year" msgstr "een jaar" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 jaar, 1 maand" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d jaar" msgstr[1] "%d jaar" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "over %s" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s geleden" #: src/humanize/time.py:260 msgid "now" msgstr "nu" #: src/humanize/time.py:284 msgid "today" msgstr "vandaag" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "morgen" #: src/humanize/time.py:290 msgid "yesterday" msgstr "gisteren" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s en %s" humanize-4.16.0/src/humanize/locale/pl_PL/LC_MESSAGES/humanize.mo0000644000000000000000000000725115220765405021201 0ustar00Þ•D<a\àáð ?Tg|� ” ž ª ¸ Ä ÒÞ"ý  0 > J X d r ~ Œ ˜ ¦ ² À Ì Ú æ ô )08H\bg lzŠ�£§»¿×ï  ! % 7 = C L ^ b l tq æ þ . +M y %– ¼ Ü ò ú      , :C ~ � ’ ” – ˜ š œ ž   ¢ ¤ ¦ ¨ ª ¬ ® ° · ¾ Å Î Ö Ú â 'þ & , 3 : Q j $u š '  È Î ê $+2MUnsy˜œ¤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: 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 lata%d lat%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ącsekundarokgodzinamiliardmiliardymiliardówkwintyliardkwintyliardykwintyliardówosiempięćczterygoogolgoogolegoogolimilionmilionymilionówdziewięćkwintylionkwintylionykwintylionówterazkwadryliardkwadryliardykwadryliardówjedenbiliardbiliardybiliardówtryliontrylionytrylionówkwadrylionkwadrylionykwadrylionówsiedemtryliardtryliardtryliardsześćtysiąctysiąctysięcytrzydziśjutrobilionbilionybilionówdwawczorajzerohumanize-4.16.0/src/humanize/locale/pl_PL/LC_MESSAGES/humanize.po0000644000000000000000000001620215220765405021200 0ustar00# 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. # Replace short scale with long scale by Maciej J. Mikulski (mjmikulski), 2022. # msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "tysiąc" msgstr[1] "tysiąc" msgstr[2] "tysięcy" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "milion" msgstr[1] "miliony" msgstr[2] "milionów" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "miliard" msgstr[1] "miliardy" msgstr[2] "miliardów" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "bilion" msgstr[1] "biliony" msgstr[2] "bilionów" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "biliard" msgstr[1] "biliardy" msgstr[2] "biliardów" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "trylion" msgstr[1] "tryliony" msgstr[2] "trylionów" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "tryliard" msgstr[1] "tryliard" msgstr[2] "tryliard" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "kwadrylion" msgstr[1] "kwadryliony" msgstr[2] "kwadrylionów" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "kwadryliard" msgstr[1] "kwadryliardy" msgstr[2] "kwadryliardów" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "kwintylion" msgstr[1] "kwintyliony" msgstr[2] "kwintylionów" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "kwintyliard" msgstr[1] "kwintyliardy" msgstr[2] "kwintyliardów" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googole" msgstr[2] "googoli" #: src/humanize/number.py:301 msgid "zero" msgstr "zero" #: src/humanize/number.py:302 msgid "one" msgstr "jeden" #: src/humanize/number.py:303 msgid "two" msgstr "dwa" #: src/humanize/number.py:304 msgid "three" msgstr "trzy" #: src/humanize/number.py:305 msgid "four" msgstr "cztery" #: src/humanize/number.py:306 msgid "five" msgstr "pięć" #: src/humanize/number.py:307 msgid "six" msgstr "sześć" #: src/humanize/number.py:308 msgid "seven" msgstr "siedem" #: src/humanize/number.py:309 msgid "eight" msgstr "osiem" #: src/humanize/number.py:310 msgid "nine" msgstr "dziewięć" #: src/humanize/time.py:152 #, 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:161 #, 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:164 src/humanize/time.py:259 msgid "a moment" msgstr "chwila" #: src/humanize/time.py:167 msgid "a second" msgstr "sekunda" #: src/humanize/time.py:170 #, 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:173 msgid "a minute" msgstr "minuta" #: src/humanize/time.py:177 #, 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:180 msgid "an hour" msgstr "godzina" #: src/humanize/time.py:184 #, 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:188 msgid "a day" msgstr "dzień" #: src/humanize/time.py:191 src/humanize/time.py:194 #, 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:197 msgid "a month" msgstr "miesiąc" #: src/humanize/time.py:199 #, 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:203 msgid "a year" msgstr "rok" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 rok, 1 miesiąc" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d rok" msgstr[1] "%d lata" msgstr[2] "%d lat" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "%s od teraz" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s temu" #: src/humanize/time.py:260 msgid "now" msgstr "teraz" #: src/humanize/time.py:284 msgid "today" msgstr "dziś" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "jutro" #: src/humanize/time.py:290 msgid "yesterday" msgstr "wczoraj" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s i %s" humanize-4.16.0/src/humanize/locale/pt_BR/LC_MESSAGES/humanize.mo0000644000000000000000000000657415220765405021210 0ustar00Þ•D<a\àáð ?Tg|� ” ž ª ¸ Ä ÒÞ"ý  0 > J X d r ~ Œ ˜ ¦ ² À Ì Ú æ ô )08H\bg lzŠ�£§»¿×ï  ! % 7 = C L ^ b l "q ” £ "´ × ø   5 D K S ^ a d g j ‰ ª ¹ ¼ ¿  Å È Ë Î Ñ Ô × Ú Ý à ã æ é ð ú    ( 9 N S Y +` Œ œ ¡ ¶ ¼ Ñ Ô í   " 9 > F L Q Y l q 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: Report-Msgid-Bugs-To: PO-Revision-Date: 2024-11-02 13:33-0400 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 3.5 %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 horabilhãobilhõesdecilhãodecilhõesoitocincoquatrodez duotrigintilhõesdez duotrigintilhõesmilhãomilhãonovenonilhãononilhõesagoraoctilhãooctilhõesumquadrilhãoquadrilhõesquintilhãoquintilhõesseptilhãoseptilhõessetesextilhãosextilhõesseismilmiltrêshojeamanhãtrilhãotrilhõesdoisontemzerohumanize-4.16.0/src/humanize/locale/pt_BR/LC_MESSAGES/humanize.po0000644000000000000000000001463315220765405021206 0ustar00# 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: 2023-01-08 19:22+0200\n" "PO-Revision-Date: 2024-11-02 13:33-0400\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 3.5\n" #: src/humanize/number.py:84 msgctxt "0 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "º" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "º" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "º" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "ª" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "ª" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "ª" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "mil" msgstr[1] "mil" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "milhão" msgstr[1] "milhão" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "bilhão" msgstr[1] "bilhões" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "trilhão" msgstr[1] "trilhões" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "quadrilhão" msgstr[1] "quadrilhões" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "quintilhão" msgstr[1] "quintilhões" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sextilhão" msgstr[1] "sextilhões" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "septilhão" msgstr[1] "septilhões" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "octilhão" msgstr[1] "octilhões" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "nonilhão" msgstr[1] "nonilhões" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "decilhão" msgstr[1] "decilhões" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "dez duotrigintilhões" msgstr[1] "dez duotrigintilhões" #: src/humanize/number.py:301 msgid "zero" msgstr "zero" #: src/humanize/number.py:302 msgid "one" msgstr "um" #: src/humanize/number.py:303 msgid "two" msgstr "dois" #: src/humanize/number.py:304 msgid "three" msgstr "três" #: src/humanize/number.py:305 msgid "four" msgstr "quatro" #: src/humanize/number.py:306 msgid "five" msgstr "cinco" #: src/humanize/number.py:307 msgid "six" msgstr "seis" #: src/humanize/number.py:308 msgid "seven" msgstr "sete" #: src/humanize/number.py:309 msgid "eight" msgstr "oito" #: src/humanize/number.py:310 msgid "nine" msgstr "nove" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microssegundo" msgstr[1] "%d microssegundos" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milissegundo" msgstr[1] "%d milissegundos" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "um momento" #: src/humanize/time.py:167 msgid "a second" msgstr "um segundo" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d segundo" msgstr[1] "%d segundos" #: src/humanize/time.py:173 msgid "a minute" msgstr "um minuto" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minutos" #: src/humanize/time.py:180 msgid "an hour" msgstr "uma hora" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" msgstr[1] "%d horas" #: src/humanize/time.py:188 msgid "a day" msgstr "um dia" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dia" msgstr[1] "%d dias" #: src/humanize/time.py:197 msgid "a month" msgstr "um mês" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mês" msgstr[1] "%d meses" #: src/humanize/time.py:203 msgid "a year" msgstr "um ano" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 ano e 1 mês" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d ano" msgstr[1] "%d anos" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "daqui a %s" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "há %s" #: src/humanize/time.py:260 msgid "now" msgstr "agora" #: src/humanize/time.py:284 msgid "today" msgstr "hoje" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "amanhã" #: src/humanize/time.py:290 msgid "yesterday" msgstr "ontem" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s e %s" humanize-4.16.0/src/humanize/locale/pt_PT/LC_MESSAGES/humanize.mo0000644000000000000000000000651315220765405021221 0ustar00Þ•C4YL°±ÀÑð$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ãodoisontemzerohumanize-4.16.0/src/humanize/locale/pt_PT/LC_MESSAGES/humanize.po0000644000000000000000000001465615220765405021233 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "º" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "º" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "º" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "º" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "ª" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "ª" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "ª" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "ª" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "milhão" msgstr[1] "milhão" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "milhar de milhão" msgstr[1] "milhar de milhão" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "bilião" msgstr[1] "bilião" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "mil biliões" msgstr[1] "mil biliões" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "trilião" msgstr[1] "trilião" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "mil triliões" msgstr[1] "mil triliões" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "quatrilião" msgstr[1] "quatrilião" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "mil quatriliões" msgstr[1] "mil quatriliões" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "quintilhão" msgstr[1] "quintilhão" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "mil quintilhões" msgstr[1] "mil quintilhões" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "sextilhão" msgstr[1] "sextilhão" #: src/humanize/number.py:301 msgid "zero" msgstr "zero" #: src/humanize/number.py:302 msgid "one" msgstr "um" #: src/humanize/number.py:303 msgid "two" msgstr "dois" #: src/humanize/number.py:304 msgid "three" msgstr "três" #: src/humanize/number.py:305 msgid "four" msgstr "quatro" #: src/humanize/number.py:306 msgid "five" msgstr "cinco" #: src/humanize/number.py:307 msgid "six" msgstr "seis" #: src/humanize/number.py:308 msgid "seven" msgstr "sete" #: src/humanize/number.py:309 msgid "eight" msgstr "oito" #: src/humanize/number.py:310 msgid "nine" msgstr "nove" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microssegundo" msgstr[1] "%d microssegundos" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milissegundo" msgstr[1] "%d milissegundos" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "um momento" #: src/humanize/time.py:167 msgid "a second" msgstr "um segundo" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d segundo" msgstr[1] "%d segundos" #: src/humanize/time.py:173 msgid "a minute" msgstr "um minuto" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minuto" msgstr[1] "%d minutos" #: src/humanize/time.py:180 msgid "an hour" msgstr "uma hora" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" msgstr[1] "%d horas" #: src/humanize/time.py:188 msgid "a day" msgstr "um dia" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dia" msgstr[1] "%d dias" #: src/humanize/time.py:197 msgid "a month" msgstr "um mês" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mês" msgstr[1] "%d meses" #: src/humanize/time.py:203 msgid "a year" msgstr "um ano" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 ano e 1 mês" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d ano" msgstr[1] "%d anos" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "daqui a %s" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "há %s" #: src/humanize/time.py:260 msgid "now" msgstr "agora" #: src/humanize/time.py:284 msgid "today" msgstr "hoje" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "amanhã" #: src/humanize/time.py:290 msgid "yesterday" msgstr "ontem" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s e %s" humanize-4.16.0/src/humanize/locale/ru_RU/LC_MESSAGES/humanize.mo0000644000000000000000000001067215220765405021230 0ustar00Þ•D<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 �>œÛJäJ/Dz¿JÈ $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 месяцойойийийыйыйыйыйойойойойойойыйыйденьминутутолько чтомесяцсекундугодчасмиллиардмиллиардамиллиардовдецилиондецилионадецилионоввосемьпятьчетырегоголгоголагоголовмиллионмиллионамиллионовдевятьнониллионнониллионанониллионовсейчасоктиллионоктиллионаоктиллионоводинквадриллионквадриллионаквадриллионовквинтиллионквинтиллионаквинтиллионовсептиллионсептиллионасептиллионовсемьсикстиллионсикстиллионасикстиллионовшестьтысячатысячитысячтрисегоднязавтратриллионтриллионатриллионовдвавчеранольhumanize-4.16.0/src/humanize/locale/ru_RU/LC_MESSAGES/humanize.po0000644000000000000000000001735115220765405021234 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "ой" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "ый" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "ой" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "ий" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "ый" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "ый" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "ой" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "ой" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "ой" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "ый" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "ой" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "ый" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "ой" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "ий" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "ый" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "ый" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "ой" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "ой" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "ой" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "ый" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "тысяча" msgstr[1] "тысячи" msgstr[2] "тысяч" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "миллион" msgstr[1] "миллиона" msgstr[2] "миллионов" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "миллиард" msgstr[1] "миллиарда" msgstr[2] "миллиардов" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "триллион" msgstr[1] "триллиона" msgstr[2] "триллионов" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "квадриллион" msgstr[1] "квадриллиона" msgstr[2] "квадриллионов" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "квинтиллион" msgstr[1] "квинтиллиона" msgstr[2] "квинтиллионов" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "сикстиллион" msgstr[1] "сикстиллиона" msgstr[2] "сикстиллионов" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "септиллион" msgstr[1] "септиллиона" msgstr[2] "септиллионов" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "октиллион" msgstr[1] "октиллиона" msgstr[2] "октиллионов" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "нониллион" msgstr[1] "нониллиона" msgstr[2] "нониллионов" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "децилион" msgstr[1] "децилиона" msgstr[2] "децилионов" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "гогол" msgstr[1] "гогола" msgstr[2] "гоголов" #: src/humanize/number.py:301 msgid "zero" msgstr "ноль" #: src/humanize/number.py:302 msgid "one" msgstr "один" #: src/humanize/number.py:303 msgid "two" msgstr "два" #: src/humanize/number.py:304 msgid "three" msgstr "три" #: src/humanize/number.py:305 msgid "four" msgstr "четыре" #: src/humanize/number.py:306 msgid "five" msgstr "пять" #: src/humanize/number.py:307 msgid "six" msgstr "шесть" #: src/humanize/number.py:308 msgid "seven" msgstr "семь" #: src/humanize/number.py:309 msgid "eight" msgstr "восемь" #: src/humanize/number.py:310 msgid "nine" msgstr "девять" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d микросекунда" msgstr[1] "%d микросекунды" msgstr[2] "%d микросекунд" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d миллисекунда" msgstr[1] "%d миллисекунды" msgstr[2] "%d миллисекунд" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "только что" #: src/humanize/time.py:167 msgid "a second" msgstr "секунду" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d секунда" msgstr[1] "%d секунды" msgstr[2] "%d секунд" #: src/humanize/time.py:173 msgid "a minute" msgstr "минуту" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d минута" msgstr[1] "%d минуты" msgstr[2] "%d минут" #: src/humanize/time.py:180 msgid "an hour" msgstr "час" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d час" msgstr[1] "%d часа" msgstr[2] "%d часов" #: src/humanize/time.py:188 msgid "a day" msgstr "день" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d день" msgstr[1] "%d дня" msgstr[2] "%d дней" #: src/humanize/time.py:197 msgid "a month" msgstr "месяц" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d месяц" msgstr[1] "%d месяца" msgstr[2] "%d месяцев" #: src/humanize/time.py:203 msgid "a year" msgstr "год" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 год, 1 месяц" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d год" msgstr[1] "%d года" msgstr[2] "%d лет" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "через %s" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s назад" #: src/humanize/time.py:260 msgid "now" msgstr "сейчас" #: src/humanize/time.py:284 msgid "today" msgstr "сегодня" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "завтра" #: src/humanize/time.py:290 msgid "yesterday" msgstr "вчера" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s и %s" humanize-4.16.0/src/humanize/locale/sk_SK/LC_MESSAGES/humanize.mo0000644000000000000000000000672415220765405021211 0ustar00Þ•@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čeranulahumanize-4.16.0/src/humanize/locale/sk_SK/LC_MESSAGES/humanize.po0000644000000000000000000001602315220765405021205 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "milióna/ov" msgstr[1] "milióna/ov" msgstr[2] "milióna/ov" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "miliardy/árd" msgstr[1] "miliardy/árd" msgstr[2] "miliardy/árd" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "bilióna/ov" msgstr[1] "bilióna/ov" msgstr[2] "bilióna/ov" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "biliardy/árd" msgstr[1] "biliardy/árd" msgstr[2] "biliardy/árd" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "trilióna/árd" msgstr[1] "trilióna/árd" msgstr[2] "trilióna/árd" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "triliardy/árd" msgstr[1] "triliardy/árd" msgstr[2] "triliardy/árd" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "kvadrilióna/ov" msgstr[1] "kvadrilióna/ov" msgstr[2] "kvadrilióna/ov" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "kvadriliardy/árd" msgstr[1] "kvadriliardy/árd" msgstr[2] "kvadriliardy/árd" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "kvintilióna/ov" msgstr[1] "kvintilióna/ov" msgstr[2] "kvintilióna/ov" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "kvintiliardy/árd" msgstr[1] "kvintiliardy/árd" msgstr[2] "kvintiliardy/árd" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "googola/ov" msgstr[1] "googola/ov" msgstr[2] "googola/ov" #: src/humanize/number.py:301 msgid "zero" msgstr "nula" #: src/humanize/number.py:302 msgid "one" msgstr "jedna" #: src/humanize/number.py:303 msgid "two" msgstr "dve" #: src/humanize/number.py:304 msgid "three" msgstr "tri" #: src/humanize/number.py:305 msgid "four" msgstr "štyri" #: src/humanize/number.py:306 msgid "five" msgstr "päť" #: src/humanize/number.py:307 msgid "six" msgstr "šesť" #: src/humanize/number.py:308 msgid "seven" msgstr "sedem" #: src/humanize/number.py:309 msgid "eight" msgstr "osem" #: src/humanize/number.py:310 msgid "nine" msgstr "deväť" #: src/humanize/time.py:152 #, 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:161 #, 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:164 src/humanize/time.py:259 msgid "a moment" msgstr "chvíľku" #: src/humanize/time.py:167 msgid "a second" msgstr "sekundu" #: src/humanize/time.py:170 #, 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:173 msgid "a minute" msgstr "minútu" #: src/humanize/time.py:177 #, 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:180 msgid "an hour" msgstr "hodinu" #: src/humanize/time.py:184 #, 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:188 msgid "a day" msgstr "deň" #: src/humanize/time.py:191 src/humanize/time.py:194 #, 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:197 msgid "a month" msgstr "mesiac" #: src/humanize/time.py:199 #, 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:203 msgid "a year" msgstr "rok" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 rok, 1 mesiac" #: src/humanize/time.py:213 #, 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:219 #, 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:256 #, python-format msgid "%s from now" msgstr "o %s" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s naspäť" #: src/humanize/time.py:260 msgid "now" msgstr "teraz" #: src/humanize/time.py:284 msgid "today" msgstr "dnes" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "zajtra" #: src/humanize/time.py:290 msgid "yesterday" msgstr "včera" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "" humanize-4.16.0/src/humanize/locale/sl_SI/LC_MESSAGES/humanize.mo0000644000000000000000000000761315220765405021206 0ustar00Þ•D<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čhumanize-4.16.0/src/humanize/locale/sl_SI/LC_MESSAGES/humanize.po0000644000000000000000000001671115220765405021210 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "tisoč" msgstr[1] "tisoč" msgstr[2] "tisoč" msgstr[3] "tisoč" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "milijon" msgstr[1] "milijona" msgstr[2] "milijoni" msgstr[3] "milijonov" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "milijarda" msgstr[1] "milijardi" msgstr[2] "milijarde" msgstr[3] "milijard" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "bilijon" msgstr[1] "bilijona" msgstr[2] "bilijoni" msgstr[3] "bilijonov" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "bilijarda" msgstr[1] "bilijardi" msgstr[2] "bilijarde" msgstr[3] "bilijard" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "trilijon" msgstr[1] "trilijona" msgstr[2] "trilijoni" msgstr[3] "trilijonov" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "trilijarda" msgstr[1] "trilijardi" msgstr[2] "trilijarde" msgstr[3] "trilijard" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "kvadrilijon" msgstr[1] "kvadrilijona" msgstr[2] "kvadrilijoni" msgstr[3] "kvadrilijonov" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "kvadrilijarda" msgstr[1] "kvadrilijardi" msgstr[2] "kvadrilijarde" msgstr[3] "kvadrilijard" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "kvintilijon" msgstr[1] "kvintilijona" msgstr[2] "kvintilijoni" msgstr[3] "kvintilijonov" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "kvintilijarda" msgstr[1] "kvintilijardi" msgstr[2] "kvintilijarde" msgstr[3] "kvintilijard" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "gugol" msgstr[1] "gugola" msgstr[2] "gugoli" msgstr[3] "gugolov" #: src/humanize/number.py:301 msgid "zero" msgstr "nič" #: src/humanize/number.py:302 msgid "one" msgstr "ena" #: src/humanize/number.py:303 msgid "two" msgstr "dve" #: src/humanize/number.py:304 msgid "three" msgstr "tri" #: src/humanize/number.py:305 msgid "four" msgstr "štiri" #: src/humanize/number.py:306 msgid "five" msgstr "pet" #: src/humanize/number.py:307 msgid "six" msgstr "šest" #: src/humanize/number.py:308 msgid "seven" msgstr "sedem" #: src/humanize/number.py:309 msgid "eight" msgstr "osem" #: src/humanize/number.py:310 msgid "nine" msgstr "devet" #: src/humanize/time.py:152 #, 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:161 #, 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:164 src/humanize/time.py:259 msgid "a moment" msgstr "trenutek" #: src/humanize/time.py:167 msgid "a second" msgstr "sekunda" #: src/humanize/time.py:170 #, 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:173 msgid "a minute" msgstr "minuta" #: src/humanize/time.py:177 #, 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:180 msgid "an hour" msgstr "ura" #: src/humanize/time.py:184 #, 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:188 msgid "a day" msgstr "dan" #: src/humanize/time.py:191 src/humanize/time.py:194 #, 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:197 msgid "a month" msgstr "mesec" #: src/humanize/time.py:199 #, 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:203 msgid "a year" msgstr "leto" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 leto, 1 mesec" #: src/humanize/time.py:213 #, 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:219 #, 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:256 #, python-format msgid "%s from now" msgstr "%s od zdaj" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s nazaj" #: src/humanize/time.py:260 msgid "now" msgstr "zdaj" #: src/humanize/time.py:284 msgid "today" msgstr "danes" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "jutri" #: src/humanize/time.py:290 msgid "yesterday" msgstr "včeraj" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s in %s" humanize-4.16.0/src/humanize/locale/sv_SE/LC_MESSAGES/humanize.mo0000644000000000000000000000657015220765405021215 0ustar00Þ•D<a\àáð ?Tg|� ” ž ª ¸ Ä ÒÞ"ý  0 > J X d r ~ Œ ˜ ¦ ² À Ì Ú æ ô )08H\bg lzŠ�£§»¿×ï  ! % 7 = C L ^ b l ;q ­ ½ Ð ð  " 8 N \ e o { ~ � „ ‡ #¥ É Ù Ü ß â å è ë î ñ ô ÷ ú ý       ( 2 < D M _ y  ƒ ˆ – ¦ ª  Å ß ã õ   # 7 ; G K P X h m s 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-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årnollhumanize-4.16.0/src/humanize/locale/sv_SE/LC_MESSAGES/humanize.po0000644000000000000000000001463115220765405021215 0ustar00# 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: \n" "POT-Creation-Date: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr ":a" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr ":a" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr ":e" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr ":e" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr ":a" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr ":a" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr ":e" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr ":e" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "tusen" msgstr[1] "tusen" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "miljon" msgstr[1] "miljoner" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "miljard" msgstr[1] "miljarder" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "biljon" msgstr[1] "biljoner" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "biljard" msgstr[1] "biljarder" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "triljon" msgstr[1] "triljoner" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "triljard" msgstr[1] "triljarder" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "kvadriljon" msgstr[1] "kvadriljoner" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "kvadriljard" msgstr[1] "kvadriljarder" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "kvintiljon" msgstr[1] "kvintiljoner" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "kvintiljard" msgstr[1] "kvintiljarder" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:301 msgid "zero" msgstr "noll" #: src/humanize/number.py:302 msgid "one" msgstr "ett" #: src/humanize/number.py:303 msgid "two" msgstr "två" #: src/humanize/number.py:304 msgid "three" msgstr "tre" #: src/humanize/number.py:305 msgid "four" msgstr "fyra" #: src/humanize/number.py:306 msgid "five" msgstr "fem" #: src/humanize/number.py:307 msgid "six" msgstr "sex" #: src/humanize/number.py:308 msgid "seven" msgstr "sju" #: src/humanize/number.py:309 msgid "eight" msgstr "åtta" #: src/humanize/number.py:310 msgid "nine" msgstr "nio" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikrosekund" msgstr[1] "%d mikrosekunder" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d millsekund" msgstr[1] "%d millsekunder" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "en liten stund" #: src/humanize/time.py:167 msgid "a second" msgstr "en sekund" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d sekund" msgstr[1] "%d sekunder" #: src/humanize/time.py:173 msgid "a minute" msgstr "en minut" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minut" msgstr[1] "%d minuter" #: src/humanize/time.py:180 msgid "an hour" msgstr "en timme" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d timme" msgstr[1] "%d timmar" #: src/humanize/time.py:188 msgid "a day" msgstr "en dag" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d dag" msgstr[1] "%d dagar" #: src/humanize/time.py:197 msgid "a month" msgstr "en månad" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d månad" msgstr[1] "%d månader" #: src/humanize/time.py:203 msgid "a year" msgstr "ett år" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 år, 1 månad" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d år" msgstr[1] "%d år" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "%s från nu" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s sedan" #: src/humanize/time.py:260 msgid "now" msgstr "nu" #: src/humanize/time.py:284 msgid "today" msgstr "idag" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "imorgon" #: src/humanize/time.py:290 msgid "yesterday" msgstr "igår" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s och %s" humanize-4.16.0/src/humanize/locale/tlh/LC_MESSAGES/humanize.mo0000644000000000000000000000555315220765405020765 0ustar00Þ•;ôOÌ )Hg|�¤µ ¼ Æ Ò à ì ú"%H X f r € Œ š ¦ ´ À Î Ú è ô   (.7?HOWgmrw‡Œ�”šž°¶¼Å× Ûå3ê  , /: )j ” ¢ ° ¾ Ì Ó Ü ã é ï õ !û ! ? P V \ b h n t z € † Œ ’ ˜ ž ¤ ª ° ¹  Ë Ô Ý æ ô û       $ ( 0 4 ; C W ] f 7-9 + )1";! .&2(* 564$:  0/3#,%'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 montha seconda yearan hourbillionbillioneightfivefourmillionmillionninenowonesevensixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: Report-Msgid-Bugs-To: PO-Revision-Date: 2023-10-05 14:11-0400 Last-Translator: Mark E. Shoulson Language-Team: Language tlh Language: tlh MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); %d jaj%d jaj%d rep%d repwaʼ ʼuyʼ loch %d lupwaʼ ʼuyʼ loch %d lupwaʼ SaD loch %d lupwaʼ SaD loch %d lup%d tup%d tup%d jar%d jar%d lup%d lup%d DIS%d DIS%s ret%s %s je%s pIq-DIch-DIch-DIch-DIchwaʼ DIS, %d jajwaʼ DIS, %d jajwaʼ DIS, %d jarwaʼ DIS, %d jarwaʼ DIS, wa jar-DIch-DIch-DIch-DIch-DIch-DIch-DIch-DIch-DIch-DIch-DIch-DIch-DIch-DIch-DIch-DIchwaʼ jajwaʼ tupwaʼ jarwaʼ lupwaʼ DISwaʼ repSaghanSaghanchorghvaghloSʼuyʼʼuyʼHutDaHwaʼSochjavSaDSaDwejDaHjajwaʼleSSaDSaghanSaDSaghanchaʼwaʼHuʼpaghhumanize-4.16.0/src/humanize/locale/tlh/LC_MESSAGES/humanize.po0000644000000000000000000001443215220765405020764 0ustar00# Language tlh translations for humanize package. # Copyright (C) 2023 # This file is distributed under the same license as the humanize package. # Mark E. Shoulson , 2023. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-10-05 14:07-0400\n" "PO-Revision-Date: 2023-10-05 14:11-0400\n" "Last-Translator: Mark E. Shoulson \n" "Language-Team: Language tlh\n" "Language: tlh\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:83 msgctxt "0 (male)" msgid "th" msgstr "-DIch" #: src/humanize/number.py:84 msgctxt "1 (male)" msgid "st" msgstr "-DIch" #: src/humanize/number.py:85 msgctxt "2 (male)" msgid "nd" msgstr "-DIch" #: src/humanize/number.py:86 msgctxt "3 (male)" msgid "rd" msgstr "-DIch" #: src/humanize/number.py:87 msgctxt "4 (male)" msgid "th" msgstr "-DIch" #: src/humanize/number.py:88 msgctxt "5 (male)" msgid "th" msgstr "-DIch" #: src/humanize/number.py:89 msgctxt "6 (male)" msgid "th" msgstr "-DIch" #: src/humanize/number.py:90 msgctxt "7 (male)" msgid "th" msgstr "-DIch" #: src/humanize/number.py:91 msgctxt "8 (male)" msgid "th" msgstr "-DIch" #: src/humanize/number.py:92 msgctxt "9 (male)" msgid "th" msgstr "-DIch" #: src/humanize/number.py:96 msgctxt "0 (female)" msgid "th" msgstr "-DIch" #: src/humanize/number.py:97 msgctxt "1 (female)" msgid "st" msgstr "-DIch" #: src/humanize/number.py:98 msgctxt "2 (female)" msgid "nd" msgstr "-DIch" #: src/humanize/number.py:99 msgctxt "3 (female)" msgid "rd" msgstr "-DIch" #: src/humanize/number.py:100 msgctxt "4 (female)" msgid "th" msgstr "-DIch" #: src/humanize/number.py:101 msgctxt "5 (female)" msgid "th" msgstr "-DIch" #: src/humanize/number.py:102 msgctxt "6 (female)" msgid "th" msgstr "-DIch" #: src/humanize/number.py:103 msgctxt "7 (female)" msgid "th" msgstr "-DIch" #: src/humanize/number.py:104 msgctxt "8 (female)" msgid "th" msgstr "-DIch" #: src/humanize/number.py:105 msgctxt "9 (female)" msgid "th" msgstr "-DIch" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "SaD" msgstr[1] "SaD" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "ʼuyʼ" msgstr[1] "ʼuyʼ" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "Saghan" msgstr[1] "Saghan" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "SaDSaghan" msgstr[1] "SaDSaghan" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:304 msgid "zero" msgstr "pagh" #: src/humanize/number.py:305 msgid "one" msgstr "waʼ" #: src/humanize/number.py:306 msgid "two" msgstr "chaʼ" #: src/humanize/number.py:307 msgid "three" msgstr "wej" #: src/humanize/number.py:308 msgid "four" msgstr "loS" #: src/humanize/number.py:309 msgid "five" msgstr "vagh" #: src/humanize/number.py:310 msgid "six" msgstr "jav" #: src/humanize/number.py:311 msgid "seven" msgstr "Soch" #: src/humanize/number.py:312 msgid "eight" msgstr "chorgh" #: src/humanize/number.py:313 msgid "nine" msgstr "Hut" #: src/humanize/time.py:151 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "waʼ ʼuyʼ loch %d lup" msgstr[1] "waʼ ʼuyʼ loch %d lup" #: src/humanize/time.py:160 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "waʼ SaD loch %d lup" msgstr[1] "waʼ SaD loch %d lup" #: src/humanize/time.py:163 src/humanize/time.py:262 msgid "a moment" msgstr "" #: src/humanize/time.py:166 msgid "a second" msgstr "waʼ lup" #: src/humanize/time.py:169 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d lup" msgstr[1] "%d lup" #: src/humanize/time.py:172 msgid "a minute" msgstr "waʼ tup" #: src/humanize/time.py:176 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d tup" msgstr[1] "%d tup" #: src/humanize/time.py:179 msgid "an hour" msgstr "waʼ rep" #: src/humanize/time.py:183 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d rep" msgstr[1] "%d rep" #: src/humanize/time.py:187 msgid "a day" msgstr "waʼ jaj" #: src/humanize/time.py:190 src/humanize/time.py:193 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d jaj" msgstr[1] "%d jaj" #: src/humanize/time.py:196 msgid "a month" msgstr "waʼ jar" #: src/humanize/time.py:198 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d jar" msgstr[1] "%d jar" #: src/humanize/time.py:202 msgid "a year" msgstr "waʼ DIS" #: src/humanize/time.py:205 src/humanize/time.py:216 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "waʼ DIS, %d jaj" msgstr[1] "waʼ DIS, %d jaj" #: src/humanize/time.py:209 msgid "1 year, 1 month" msgstr "waʼ DIS, wa jar" #: src/humanize/time.py:212 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "waʼ DIS, %d jar" msgstr[1] "waʼ DIS, %d jar" #: src/humanize/time.py:218 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d DIS" msgstr[1] "%d DIS" #: src/humanize/time.py:259 #, python-format msgid "%s from now" msgstr "%s pIq" #: src/humanize/time.py:259 #, python-format msgid "%s ago" msgstr "%s ret" #: src/humanize/time.py:263 msgid "now" msgstr "DaH" #: src/humanize/time.py:296 msgid "today" msgstr "DaHjaj" #: src/humanize/time.py:299 msgid "tomorrow" msgstr "waʼleS" #: src/humanize/time.py:302 msgid "yesterday" msgstr "waʼHuʼ" #: src/humanize/time.py:612 #, python-format msgid "%s and %s" msgstr "%s %s je" humanize-4.16.0/src/humanize/locale/tr_TR/LC_MESSAGES/humanize.mo0000644000000000000000000000660115220765405021223 0ustar00Þ•D<a\àáð ?Tg|� ” ž ª ¸ Ä ÒÞ"ý  0 > J X d r ~ Œ ˜ ¦ ² À Ì Ú æ ô )08H\bg lzŠ�£§»¿×ï  ! % 7 = C L ^ b l zq ì ü  * F Z f z Š “ œ ² ´ ¶ ¸ º Ú ö                ! # , 7 B I T ] f t † Œ ‘ — ¥ ³ ¹ Ë Ò ä è ü  $ ) ? E M R Y ` p 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: PO-Revision-Date: 2023-08-09 13:12+0300 Last-Translator: Furkan Kalkan 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 3.2.2 Generated-By: Furkan Kalkan %d gün%d gün%d saat%d saat%d mikrosaniye%d mikrosaniye%d milisaniye%d milisaniye%d dakika%d dakika%d ay%d ay%d saniye%d saniye%d yıl%d yıl%s önce%s ve %sş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 dakikabir saniyebir aybir saniyebir yılbir saatmilyarmilyardesilyondesilyonsekizbeşdörtgoogolgoogolmilyonmilyondokuznonilyonnonilyonşimdioktilyonoktilyonbirkatrilyonkatrilyonkentilyonkentilyonseptilyonseptilyonyedisekstilyonsekstilyonaltıbinbinüçbugünyarıntrilyontrilyonikidünsıfırhumanize-4.16.0/src/humanize/locale/tr_TR/LC_MESSAGES/humanize.po0000644000000000000000000001523715220765405021233 0ustar00# 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. # Furkan Kalkan , 2023. # msgid "" msgstr "" "Project-Id-Version: humanize\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-08 19:22+0200\n" "PO-Revision-Date: 2023-08-09 13:12+0300\n" "Last-Translator: Furkan Kalkan \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 3.2.2\n" "Generated-By: Furkan Kalkan\n" #: src/humanize/number.py:84 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "bin" msgstr[1] "bin" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "milyon" msgstr[1] "milyon" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "milyar" msgstr[1] "milyar" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "trilyon" msgstr[1] "trilyon" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "katrilyon" msgstr[1] "katrilyon" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "kentilyon" msgstr[1] "kentilyon" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sekstilyon" msgstr[1] "sekstilyon" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "septilyon" msgstr[1] "septilyon" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "oktilyon" msgstr[1] "oktilyon" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "nonilyon" msgstr[1] "nonilyon" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "desilyon" msgstr[1] "desilyon" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "googol" msgstr[1] "googol" #: src/humanize/number.py:301 msgid "zero" msgstr "sıfır" #: src/humanize/number.py:302 msgid "one" msgstr "bir" #: src/humanize/number.py:303 msgid "two" msgstr "iki" #: src/humanize/number.py:304 msgid "three" msgstr "üç" #: src/humanize/number.py:305 msgid "four" msgstr "dört" #: src/humanize/number.py:306 msgid "five" msgstr "beş" #: src/humanize/number.py:307 msgid "six" msgstr "altı" #: src/humanize/number.py:308 msgid "seven" msgstr "yedi" #: src/humanize/number.py:309 msgid "eight" msgstr "sekiz" #: src/humanize/number.py:310 msgid "nine" msgstr "dokuz" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikrosaniye" msgstr[1] "%d mikrosaniye" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milisaniye" msgstr[1] "%d milisaniye" # The phrase "biraz" doesn't make sense as time expression in Turkish without suffix "önce" (ago) in this case. I think one second [ago] (bir saniye [önce]) is more appropriate here. #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "bir saniye" #: src/humanize/time.py:167 msgid "a second" msgstr "bir saniye" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d saniye" msgstr[1] "%d saniye" #: src/humanize/time.py:173 msgid "a minute" msgstr "bir dakika" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d dakika" msgstr[1] "%d dakika" #: src/humanize/time.py:180 msgid "an hour" msgstr "bir saat" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d saat" msgstr[1] "%d saat" #: src/humanize/time.py:188 msgid "a day" msgstr "bir gün" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d gün" msgstr[1] "%d gün" #: src/humanize/time.py:197 msgid "a month" msgstr "bir ay" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d ay" msgstr[1] "%d ay" #: src/humanize/time.py:203 msgid "a year" msgstr "bir yıl" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 yıl, 1 ay" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d yıl" msgstr[1] "%d yıl" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "şu andan itibaren %s" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s önce" #: src/humanize/time.py:260 msgid "now" msgstr "şimdi" #: src/humanize/time.py:284 msgid "today" msgstr "bugün" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "yarın" #: src/humanize/time.py:290 msgid "yesterday" msgstr "dün" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s ve %s" humanize-4.16.0/src/humanize/locale/uk_UA/LC_MESSAGES/humanize.mo0000644000000000000000000001013415220765405021171 0ustar00Þ•B,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>DƒJŒD×DaJh ³$¾ãê û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 місяцьийийійійийийийийийийийийийийийийденьхвилинау цей моментмісяцьсекундарікгодинамільярдмільярдамільярдівдецильйондецильйонадецильйоніввісімп'ятьчотиригуголгуглагуглівмільйонмільйонамільйонівдев'ятьнонильйоннонильйонанонильйонівзаразоктильйоноктильйонаоктильйоніводинквадрильйонквадрильйонаквадрильйонівквинтиліонквинтиліонаквинтиліонівсептильйонсептильйонасептильйонівсімсикстильйонсикстильйонасикстильйонівшістьтисячатисячітисячтрисьогоднізавтратрильйонтрильйонатрильйонівдвавчоранульhumanize-4.16.0/src/humanize/locale/uk_UA/LC_MESSAGES/humanize.po0000644000000000000000000001676415220765405021213 0ustar00msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "ий" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "ий" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "ий" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "ій" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "ий" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "ий" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "ий" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "ий" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "ий" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "ий" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "ий" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "ий" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "ий" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "ій" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "ий" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "ий" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "ий" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "ий" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "ий" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "ий" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "тисяча" msgstr[1] "тисячі" msgstr[2] "тисяч" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "мільйон" msgstr[1] "мільйона" msgstr[2] "мільйонів" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "мільярд" msgstr[1] "мільярда" msgstr[2] "мільярдів" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "трильйон" msgstr[1] "трильйона" msgstr[2] "трильйонів" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "квадрильйон" msgstr[1] "квадрильйона" msgstr[2] "квадрильйонів" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "квинтиліон" msgstr[1] "квинтиліона" msgstr[2] "квинтиліонів" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "сикстильйон" msgstr[1] "сикстильйона" msgstr[2] "сикстильйонів" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "септильйон" msgstr[1] "септильйона" msgstr[2] "септильйонів" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "октильйон" msgstr[1] "октильйона" msgstr[2] "октильйонів" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "нонильйон" msgstr[1] "нонильйона" msgstr[2] "нонильйонів" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "децильйон" msgstr[1] "децильйона" msgstr[2] "децильйонів" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "гугол" msgstr[1] "гугла" msgstr[2] "гуглів" #: src/humanize/number.py:301 msgid "zero" msgstr "нуль" #: src/humanize/number.py:302 msgid "one" msgstr "один" #: src/humanize/number.py:303 msgid "two" msgstr "два" #: src/humanize/number.py:304 msgid "three" msgstr "три" #: src/humanize/number.py:305 msgid "four" msgstr "чотири" #: src/humanize/number.py:306 msgid "five" msgstr "п'ять" #: src/humanize/number.py:307 msgid "six" msgstr "шість" #: src/humanize/number.py:308 msgid "seven" msgstr "сім" #: src/humanize/number.py:309 msgid "eight" msgstr "вісім" #: src/humanize/number.py:310 msgid "nine" msgstr "дев'ять" #: src/humanize/time.py:152 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d мікросекунда" msgstr[1] "%d мікросекунди" msgstr[2] "%d мікросекунд" #: src/humanize/time.py:161 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d мілісекунда" msgstr[1] "%d мілісекунди" msgstr[2] "%d мілісекунд" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "у цей момент" #: src/humanize/time.py:167 msgid "a second" msgstr "секунда" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d секунда" msgstr[1] "%d секунди" msgstr[2] "%d секунд" #: src/humanize/time.py:173 msgid "a minute" msgstr "хвилина" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d хвилина" msgstr[1] "%d хвилини" msgstr[2] "%d хвилин" #: src/humanize/time.py:180 msgid "an hour" msgstr "година" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d година" msgstr[1] "%d години" msgstr[2] "%d годин" #: src/humanize/time.py:188 msgid "a day" msgstr "день" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d день" msgstr[1] "%d дня" msgstr[2] "%d днів" #: src/humanize/time.py:197 msgid "a month" msgstr "місяць" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d місяць" msgstr[1] "%d місяця" msgstr[2] "%d місяців" #: src/humanize/time.py:203 msgid "a year" msgstr "рік" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 рік, 1 місяць" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d рік" msgstr[1] "%d роки" msgstr[2] "%d років" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "через %s" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s назад" #: src/humanize/time.py:260 msgid "now" msgstr "зараз" #: src/humanize/time.py:284 msgid "today" msgstr "сьогодні" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "завтра" #: src/humanize/time.py:290 msgid "yesterday" msgstr "вчора" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s й %s" humanize-4.16.0/src/humanize/locale/uz/LC_MESSAGES/humanize.mo0000644000000000000000000000666215220765405020636 0ustar00Þ•D<a\àáð ?Tg|� ” ž ª ¸ Ä ÒÞ"ý  0 > J X d r ~ Œ ˜ ¦ ² À Ì Ú æ ô )08H\bg lzŠ�£§»¿×ï  ! % 7 = C L ^ b l �q ó   / M a m � � ˜ ¡ ­ ± µ ¹ ½ Ù ó ÿ         # ' + / 3 7 ; ? G R \ c n v  ‘ ¥ ¬ ± · à Ó Û ï õ   % = S Y q v € „ Š ‘ £ ¨ ® 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: 2025-09-19 19:09+0500 Last-Translator: Sirojiddin Mustafayev Language-Team: ru_RU Language: uz 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 3.7 %d kun%d kun%d soat%d soat%d mikrosoniya%d mikrosoniya%d millisoniya%d millisoniya%d daqiqa%d daqiqa%d oy%d oy%d soniya%d soniya%d yil%d yil%s oldin%s va %s%sdan keyinchichichichi1 yil, %d kun1 yil, %d kun1 yil, %d oy1 yil, %d oy1 yil, 1 oychichichichichichichichichichichichichichichichibir kunbir daqiqabir lahzabir oybir soniyabir yilbir soatmilliardmilliarddekilliondekillionsakkizbeshto'rtgugolgugolmillionmillionto'qqiznonillionnonillionhoziroktillionoktillionbirkvadrillionkvadrillionkvintillionkvintillionseptillionseptillionyettisekstillionsekstillionoltimingminguchbugunertagatrilliontrillionikkikechanolhumanize-4.16.0/src/humanize/locale/uz/LC_MESSAGES/humanize.po0000644000000000000000000001476415220765405020643 0ustar00# Uzbek (Uzbekistan) translations for humanize. # Copyright (C) 2025 ORGANIZATION # This file is distributed under the same license as the humanize project. # Sirojiddin Mustafayev , 2013. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-19 19:00+0200\n" "PO-Revision-Date: 2025-09-19 19:09+0500\n" "Last-Translator: Sirojiddin Mustafayev \n" "Language-Team: ru_RU \n" "Language: uz\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 3.7\n" #: src/humanize/number.py:84 msgctxt "0 (male)" msgid "th" msgstr "chi" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "chi" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "chi" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "chi" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "chi" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "chi" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "chi" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "chi" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "chi" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "chi" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "chi" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "chi" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "chi" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "chi" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "chi" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "chi" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "chi" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "chi" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "chi" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "chi" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "ming" msgstr[1] "ming" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "million" msgstr[1] "million" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "milliard" msgstr[1] "milliard" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "trillion" msgstr[1] "trillion" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "kvadrillion" msgstr[1] "kvadrillion" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "kvintillion" msgstr[1] "kvintillion" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sekstillion" msgstr[1] "sekstillion" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "septillion" msgstr[1] "septillion" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "oktillion" msgstr[1] "oktillion" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "nonillion" msgstr[1] "nonillion" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "dekillion" msgstr[1] "dekillion" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "gugol" msgstr[1] "gugol" #: src/humanize/number.py:301 msgid "zero" msgstr "nol" #: src/humanize/number.py:302 msgid "one" msgstr "bir" #: src/humanize/number.py:303 msgid "two" msgstr "ikki" #: src/humanize/number.py:304 msgid "three" msgstr "uch" #: src/humanize/number.py:305 msgid "four" msgstr "to'rt" #: src/humanize/number.py:306 msgid "five" msgstr "besh" #: src/humanize/number.py:307 msgid "six" msgstr "olti" #: src/humanize/number.py:308 msgid "seven" msgstr "yetti" #: src/humanize/number.py:309 msgid "eight" msgstr "sakkiz" #: src/humanize/number.py:310 msgid "nine" msgstr "to'qqiz" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d mikrosoniya" msgstr[1] "%d mikrosoniya" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d millisoniya" msgstr[1] "%d millisoniya" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "bir lahza" #: src/humanize/time.py:167 msgid "a second" msgstr "bir soniya" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d soniya" msgstr[1] "%d soniya" #: src/humanize/time.py:173 msgid "a minute" msgstr "bir daqiqa" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d daqiqa" msgstr[1] "%d daqiqa" #: src/humanize/time.py:180 msgid "an hour" msgstr "bir soat" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d soat" msgstr[1] "%d soat" #: src/humanize/time.py:188 msgid "a day" msgstr "bir kun" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d kun" msgstr[1] "%d kun" #: src/humanize/time.py:197 msgid "a month" msgstr "bir oy" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d oy" msgstr[1] "%d oy" #: src/humanize/time.py:203 msgid "a year" msgstr "bir yil" #: src/humanize/time.py:206 src/humanize/time.py:217 #, python-format msgid "1 year, %d day" msgid_plural "1 year, %d days" msgstr[0] "1 yil, %d kun" msgstr[1] "1 yil, %d kun" #: src/humanize/time.py:210 msgid "1 year, 1 month" msgstr "1 yil, 1 oy" #: src/humanize/time.py:213 #, python-format msgid "1 year, %d month" msgid_plural "1 year, %d months" msgstr[0] "1 yil, %d oy" msgstr[1] "1 yil, %d oy" #: src/humanize/time.py:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d yil" msgstr[1] "%d yil" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "%sdan keyin" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s oldin" #: src/humanize/time.py:260 msgid "now" msgstr "hozir" #: src/humanize/time.py:284 msgid "today" msgstr "bugun" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "ertaga" #: src/humanize/time.py:290 msgid "yesterday" msgstr "kecha" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s va %s" humanize-4.16.0/src/humanize/locale/vi_VN/LC_MESSAGES/humanize.mo0000644000000000000000000000613415220765405021213 0ustar00Þ•=Sì89HYx—¬¿Ôå ì ö    *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ônghumanize-4.16.0/src/humanize/locale/vi_VN/LC_MESSAGES/humanize.po0000644000000000000000000001541715220765405021222 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "." #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "." #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "." #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "." #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "." #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "." #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "." #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "." #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "." #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "." #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "." #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "." #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "." #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "." #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "." #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "." #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "." #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "." #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "." #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "." #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "nghìn" msgstr[1] "nghìn" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "%(value)s triệu" msgstr[1] "%(value)s triệu" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "tỷ" msgstr[1] "tỷ" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "%(value)s nghìn tỷ" msgstr[1] "%(value)s nghìn tỷ" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "%(value)s triệu tỷ" msgstr[1] "%(value)s triệu tỷ" #: src/humanize/number.py:183 #, fuzzy msgid "quintillion" msgid_plural "quintillion" msgstr[0] "%(value)s tỷ tỷ" msgstr[1] "%(value)s tỷ tỷ" #: src/humanize/number.py:184 #, fuzzy msgid "sextillion" msgid_plural "sextillion" msgstr[0] "%(value)s sextillion" msgstr[1] "%(value)s sextillion" #: src/humanize/number.py:185 #, fuzzy msgid "septillion" msgid_plural "septillion" msgstr[0] "%(value)s septillion" msgstr[1] "%(value)s septillion" #: src/humanize/number.py:186 #, fuzzy msgid "octillion" msgid_plural "octillion" msgstr[0] "%(value)s octillion" msgstr[1] "%(value)s octillion" #: src/humanize/number.py:187 #, fuzzy msgid "nonillion" msgid_plural "nonillion" msgstr[0] "%(value)s nonillion" msgstr[1] "%(value)s nonillion" #: src/humanize/number.py:188 #, fuzzy msgid "decillion" msgid_plural "decillion" msgstr[0] "%(value)s décillion" msgstr[1] "%(value)s décillion" #: src/humanize/number.py:189 #, fuzzy msgid "googol" msgid_plural "googol" msgstr[0] "%(value)s gogol" msgstr[1] "%(value)s gogol" #: src/humanize/number.py:301 msgid "zero" msgstr "không" #: src/humanize/number.py:302 msgid "one" msgstr "một" #: src/humanize/number.py:303 msgid "two" msgstr "hai" #: src/humanize/number.py:304 msgid "three" msgstr "ba" #: src/humanize/number.py:305 msgid "four" msgstr "bốn" #: src/humanize/number.py:306 msgid "five" msgstr "năm" #: src/humanize/number.py:307 msgid "six" msgstr "sáu" #: src/humanize/number.py:308 msgid "seven" msgstr "bảy" #: src/humanize/number.py:309 msgid "eight" msgstr "tám" #: src/humanize/number.py:310 msgid "nine" msgstr "chín" #: src/humanize/time.py:152 #, 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:161 #, 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:164 src/humanize/time.py:259 msgid "a moment" msgstr "ngay lúc này" #: src/humanize/time.py:167 msgid "a second" msgstr "một giây" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d giây" msgstr[1] "%d giây" #: src/humanize/time.py:173 msgid "a minute" msgstr "một phút" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d phút" msgstr[1] "%d phút" #: src/humanize/time.py:180 msgid "an hour" msgstr "một giờ" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d giờ" msgstr[1] "%d giờ" #: src/humanize/time.py:188 msgid "a day" msgstr "một ngày" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d ngày" msgstr[1] "%d ngày" #: src/humanize/time.py:197 msgid "a month" msgstr "một tháng" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d tháng" msgstr[1] "%d tháng" #: src/humanize/time.py:203 msgid "a year" msgstr "một năm" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 năm 1 tháng" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d năm" msgstr[1] "%d năm" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "%s ngày tới" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s trước" #: src/humanize/time.py:260 msgid "now" msgstr "ngay bây giờ" #: src/humanize/time.py:284 msgid "today" msgstr "hôm nay" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "ngày mai" #: src/humanize/time.py:290 msgid "yesterday" msgstr "ngày hôm qua" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s và %s" humanize-4.16.0/src/humanize/locale/zh_CN/LC_MESSAGES/humanize.mo0000644000000000000000000000577315220765405021203 0ustar00Þ•@Y€��¡¶ÉÞï ö    *6"Ux ˆ – ¢ ° ¼ Ê Ö ä ð þ   $ 2 > LX^gpx�ˆ� ´º¿ ÄÒâçûÿ/G]cy}�•›¤¶ º?Ä   " . : F R [ d h l p t Ž ¨ ´ ¸ ¼ À Ä È Ì Ð Ô Ø Ü à ä è ì ð ô ù þ      - ; ? C G [ i m { ‚ � ” ¢ ° ¸ ¼ Ê Î Ö Ú á è ð ô 9!>$6123/<8 -@% , ; 5+=&()?'.4" 7:0#*%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from 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 hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayProject-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之后第第第第1年又%d天1年又%d天1年又%d月1年又%d月1年又1月第第第第第第第第第第第第第第第第1天1分一会儿1月1秒1年1小时十亿十亿十沟十沟八五四古高尔古高尔百万百万九百穰百穰现在千秭千秭一万亿万亿百京百京秭秭七十垓十垓六千千三今天明天兆兆二昨天humanize-4.16.0/src/humanize/locale/zh_CN/LC_MESSAGES/humanize.po0000644000000000000000000001436215220765405021200 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "第" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "第" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "第" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "第" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "第" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "第" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "千" msgstr[1] "千" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "百万" msgstr[1] "百万" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "十亿" msgstr[1] "十亿" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "兆" msgstr[1] "兆" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "万亿" msgstr[1] "万亿" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "百京" msgstr[1] "百京" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "十垓" msgstr[1] "十垓" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "秭" msgstr[1] "秭" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "千秭" msgstr[1] "千秭" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "百穰" msgstr[1] "百穰" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "十沟" msgstr[1] "十沟" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "古高尔" msgstr[1] "古高尔" #: src/humanize/number.py:301 msgid "zero" msgstr "" #: src/humanize/number.py:302 msgid "one" msgstr "一" #: src/humanize/number.py:303 msgid "two" msgstr "二" #: src/humanize/number.py:304 msgid "three" msgstr "三" #: src/humanize/number.py:305 msgid "four" msgstr "四" #: src/humanize/number.py:306 msgid "five" msgstr "五" #: src/humanize/number.py:307 msgid "six" msgstr "六" #: src/humanize/number.py:308 msgid "seven" msgstr "七" #: src/humanize/number.py:309 msgid "eight" msgstr "八" #: src/humanize/number.py:310 msgid "nine" msgstr "九" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "" msgstr[1] "" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "" msgstr[1] "" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "一会儿" #: src/humanize/time.py:167 msgid "a second" msgstr "1秒" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d秒" msgstr[1] "%d秒" #: src/humanize/time.py:173 msgid "a minute" msgstr "1分" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d分" msgstr[1] "%d分" #: src/humanize/time.py:180 msgid "an hour" msgstr "1小时" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d小时" msgstr[1] "%d小时" #: src/humanize/time.py:188 msgid "a day" msgstr "1天" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d天" msgstr[1] "%d天" #: src/humanize/time.py:197 msgid "a month" msgstr "1月" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d月" msgstr[1] "%d月" #: src/humanize/time.py:203 msgid "a year" msgstr "1年" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1年又1月" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d年" msgstr[1] "%d年" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "%s之后" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s之前" #: src/humanize/time.py:260 msgid "now" msgstr "现在" #: src/humanize/time.py:284 msgid "today" msgstr "今天" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "明天" #: src/humanize/time.py:290 msgid "yesterday" msgstr "昨天" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "" humanize-4.16.0/src/humanize/locale/zh_HK/LC_MESSAGES/humanize.mo0000644000000000000000000000641515220765405021177 0ustar00Þ•D<a\àáð ?Tg|� ” ž ª ¸ Ä ÒÞ"ý  0 > J X d r ~ Œ ˜ ¦ ² À Ì Ú æ ô )08H\bg lzŠ�£§»¿×ï  ! % 7 = C L ^ b l >q ° ¾ Ò æ ú   * 6 @ J T X \ ` d %„ ª ¼ À Ä È Ì Ð Ô Ø Ü à ä è ì ð ô ø ü      $ - ; I M Q U 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 之後第第第第1 年又 %d 天1 年又 %d 天1 年又 %d 個月1 年又 %d 個月1 年又 1 個月第第第第第第第第第第第第第第第第1 天1 分鐘一會1 月1 秒1 年1 小時十億十億十溝十溝八五四古高爾古高爾百萬百萬九百穰百穰現在千秭千秭一萬億萬億百京百京秭秭七十垓十垓六千千三今天明天兆兆二昨天零humanize-4.16.0/src/humanize/locale/zh_HK/LC_MESSAGES/humanize.po0000644000000000000000000001457015220765405021203 0ustar00# 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: 2023-01-08 19:22+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:84 msgctxt "0 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:85 msgctxt "1 (male)" msgid "st" msgstr "第" #: src/humanize/number.py:86 msgctxt "2 (male)" msgid "nd" msgstr "第" #: src/humanize/number.py:87 msgctxt "3 (male)" msgid "rd" msgstr "第" #: src/humanize/number.py:88 msgctxt "4 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:89 msgctxt "5 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:90 msgctxt "6 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:91 msgctxt "7 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:92 msgctxt "8 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:93 msgctxt "9 (male)" msgid "th" msgstr "第" #: src/humanize/number.py:97 msgctxt "0 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:98 msgctxt "1 (female)" msgid "st" msgstr "第" #: src/humanize/number.py:99 msgctxt "2 (female)" msgid "nd" msgstr "第" #: src/humanize/number.py:100 msgctxt "3 (female)" msgid "rd" msgstr "第" #: src/humanize/number.py:101 msgctxt "4 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:102 msgctxt "5 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:103 msgctxt "6 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:104 msgctxt "7 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:105 msgctxt "8 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:106 msgctxt "9 (female)" msgid "th" msgstr "第" #: src/humanize/number.py:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "千" msgstr[1] "千" #: src/humanize/number.py:179 msgid "million" msgid_plural "million" msgstr[0] "百萬" msgstr[1] "百萬" #: src/humanize/number.py:180 msgid "billion" msgid_plural "billion" msgstr[0] "十億" msgstr[1] "十億" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "兆" msgstr[1] "兆" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "萬億" msgstr[1] "萬億" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "百京" msgstr[1] "百京" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "十垓" msgstr[1] "十垓" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "秭" msgstr[1] "秭" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "千秭" msgstr[1] "千秭" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "百穰" msgstr[1] "百穰" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "十溝" msgstr[1] "十溝" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "古高爾" msgstr[1] "古高爾" #: src/humanize/number.py:301 msgid "zero" msgstr "零" #: src/humanize/number.py:302 msgid "one" msgstr "一" #: src/humanize/number.py:303 msgid "two" msgstr "二" #: src/humanize/number.py:304 msgid "three" msgstr "三" #: src/humanize/number.py:305 msgid "four" msgstr "四" #: src/humanize/number.py:306 msgid "five" msgstr "五" #: src/humanize/number.py:307 msgid "six" msgstr "六" #: src/humanize/number.py:308 msgid "seven" msgstr "七" #: src/humanize/number.py:309 msgid "eight" msgstr "八" #: src/humanize/number.py:310 msgid "nine" msgstr "九" #: src/humanize/time.py:152 #, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d 微秒" msgstr[1] "%d 微秒" #: src/humanize/time.py:161 #, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d 毫秒" msgstr[1] "%d 毫秒" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "一會" #: src/humanize/time.py:167 msgid "a second" msgstr "1 秒" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d 秒" msgstr[1] "%d 秒" #: src/humanize/time.py:173 msgid "a minute" msgstr "1 分鐘" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d 分鐘" msgstr[1] "%d 分鐘" #: src/humanize/time.py:180 msgid "an hour" msgstr "1 小時" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d 小時" msgstr[1] "%d 小時" #: src/humanize/time.py:188 msgid "a day" msgstr "1 天" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d 天" msgstr[1] "%d 天" #: src/humanize/time.py:197 msgid "a month" msgstr "1 月" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d 月" msgstr[1] "%d 月" #: src/humanize/time.py:203 msgid "a year" msgstr "1 年" #: src/humanize/time.py:206 src/humanize/time.py:217 #, 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:210 msgid "1 year, 1 month" msgstr "1 年又 1 個月" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d年" msgstr[1] "%d年" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "%s 之後" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "%s 之前" #: src/humanize/time.py:260 msgid "now" msgstr "現在" #: src/humanize/time.py:284 msgid "today" msgstr "今天" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "明天" #: src/humanize/time.py:290 msgid "yesterday" msgstr "昨天" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s 與 %s" humanize-4.16.0/tests/__init__.py0000644000000000000000000000000015220765405013617 0ustar00humanize-4.16.0/tests/test_benchmarks.py0000644000000000000000000000440615220765405015252 0ustar00"""Benchmarks run via pytest-codspeed.""" from __future__ import annotations import datetime as dt import pytest import humanize TYPE_CHECKING = False if TYPE_CHECKING: from pytest_codspeed import BenchmarkFixture @pytest.fixture(scope="session", autouse=True) def _warmup_i18n() -> None: # Touch i18n-backed functions once so lazy gettext catalog loading # is not attributed to the first benchmarked call. humanize.naturaltime(dt.datetime.now() - dt.timedelta(seconds=1)) humanize.naturalday(dt.date.today()) def test_apnumber(benchmark: BenchmarkFixture) -> None: benchmark(humanize.apnumber, 7) def test_clamp(benchmark: BenchmarkFixture) -> None: benchmark(humanize.clamp, 0.5, "{:.0%}", 0.1, 0.9) def test_fractional(benchmark: BenchmarkFixture) -> None: benchmark(humanize.fractional, 1.5) def test_intcomma(benchmark: BenchmarkFixture) -> None: benchmark(humanize.intcomma, 1_234_567_890) def test_intword(benchmark: BenchmarkFixture) -> None: benchmark(humanize.intword, 1_234_567_890) def test_metric(benchmark: BenchmarkFixture) -> None: benchmark(humanize.metric, 1500, "W") def test_natural_list(benchmark: BenchmarkFixture) -> None: benchmark(humanize.natural_list, ["one", "two", "three", "four"]) def test_naturaldate(benchmark: BenchmarkFixture) -> None: benchmark(humanize.naturaldate, dt.date.today() - dt.timedelta(days=30)) def test_naturalday(benchmark: BenchmarkFixture) -> None: benchmark(humanize.naturalday, dt.date.today() - dt.timedelta(days=1)) def test_naturaldelta(benchmark: BenchmarkFixture) -> None: benchmark(humanize.naturaldelta, dt.timedelta(hours=3, minutes=27)) def test_naturalsize(benchmark: BenchmarkFixture) -> None: benchmark(humanize.naturalsize, 1_234_567_890) def test_naturaltime(benchmark: BenchmarkFixture) -> None: when = dt.datetime.now() - dt.timedelta(hours=3, minutes=27) benchmark(humanize.naturaltime, when) def test_ordinal(benchmark: BenchmarkFixture) -> None: benchmark(humanize.ordinal, 123) def test_precisedelta(benchmark: BenchmarkFixture) -> None: benchmark(humanize.precisedelta, dt.timedelta(days=2, hours=3, seconds=4)) def test_scientific(benchmark: BenchmarkFixture) -> None: benchmark(humanize.scientific, -1.234e-50) humanize-4.16.0/tests/test_filesize.py0000644000000000000000000000751415220765405014752 0ustar00#!/usr/bin/env python """Tests for filesize humanizing.""" from __future__ import annotations import pytest import humanize @pytest.mark.parametrize( "test_args, expected", [ ([300], "300 Bytes"), (["1000"], "1.0 kB"), ([10**3], "1.0 kB"), ([10**6], "1.0 MB"), ([10**9], "1.0 GB"), ([10**12], "1.0 TB"), ([10**15], "1.0 PB"), ([10**18], "1.0 EB"), ([10**21], "1.0 ZB"), ([10**24], "1.0 YB"), ([10**27], "1.0 RB"), ([10**30], "1.0 QB"), ([1000**1 * 31], "31.0 kB"), ([1000**2 * 32], "32.0 MB"), ([1000**3 * 33], "33.0 GB"), ([1000**4 * 34], "34.0 TB"), ([1000**5 * 35], "35.0 PB"), ([1000**6 * 36], "36.0 EB"), ([1000**7 * 37], "37.0 ZB"), ([1000**8 * 38], "38.0 YB"), ([1000**9 * 39], "39.0 RB"), ([1000**10 * 40], "40.0 QB"), ([300, True], "300 Bytes"), ([1024**1 * 31, True], "31.0 KiB"), ([1024**2 * 32, True], "32.0 MiB"), ([1024**3 * 33, True], "33.0 GiB"), ([1024**4 * 34, True], "34.0 TiB"), ([1024**5 * 35, True], "35.0 PiB"), ([1024**6 * 36, True], "36.0 EiB"), ([1024**7 * 37, True], "37.0 ZiB"), ([1024**8 * 38, True], "38.0 YiB"), ([1024**9 * 39, True], "39.0 RiB"), ([1024**10 * 40, True], "40.0 QiB"), ([1000**1 * 31, True], "30.3 KiB"), ([1000**2 * 32, True], "30.5 MiB"), ([1000**3 * 33, True], "30.7 GiB"), ([1000**4 * 34, True], "30.9 TiB"), ([1000**5 * 35, True], "31.1 PiB"), ([1000**6 * 36, True], "31.2 EiB"), ([1000**7 * 37, True], "31.3 ZiB"), ([1000**8 * 38, True], "31.4 YiB"), ([1000**9 * 39, True], "31.5 RiB"), ([1000**10 * 40, True], "31.6 QiB"), ([1000**1 * 31, False, True], "30.3K"), ([1000**2 * 32, False, True], "30.5M"), ([1000**3 * 33, False, True], "30.7G"), ([1000**4 * 34, False, True], "30.9T"), ([1000**5 * 35, False, True], "31.1P"), ([1000**6 * 36, False, True], "31.2E"), ([1000**7 * 37, False, True], "31.3Z"), ([1000**8 * 38, False, True], "31.4Y"), ([1000**9 * 39, False, True], "31.5R"), ([1000**10 * 40, False, True], "31.6Q"), ([300, False, True], "300B"), ([3000, False, True], "2.9K"), ([3000000, False, True], "2.9M"), ([1024, False, True], "1.0K"), ([1, False, False], "1 Byte"), ([1.0, False, False], "1 Byte"), (["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"], "2.423 RiB"), ([1.123456789], "1 Bytes"), ([1.123456789 * 10**3], "1.1 kB"), ([1.123456789 * 10**6], "1.1 MB"), ([1.123456789, False, True], "1B"), ([1.123456789 * 10**3, False, True], "1.1K"), ([1.123456789 * 10**6, False, True], "1.1M"), # Rounding must not leave the mantissa at the base while a larger suffix # is available: 999999 is 999.999 kB, which the "%.1f" format rounds to # 1000.0 and must carry into 1.0 MB rather than render as "1000.0 kB". ([999999], "1.0 MB"), ([999999999], "1.0 GB"), ([999999999999], "1.0 TB"), ([1024**2 - 1, True], "1.0 MiB"), ([1024**3 - 1, True], "1.0 GiB"), ([1024**2 - 1, False, True], "1.0M"), ], ) def test_naturalsize(test_args: list[int] | list[int | bool], expected: str) -> None: assert humanize.naturalsize(*test_args) == expected # Retest with negative input if isinstance(test_args[0], int): test_args[0] *= -1 else: test_args[0] = f"-{test_args[0]}" assert humanize.naturalsize(*test_args) == "-" + expected humanize-4.16.0/tests/test_i18n.py0000644000000000000000000002562715220765405013724 0ustar00"""Internationalisation tests.""" from __future__ import annotations import datetime as dt import importlib import pytest from freezegun import freeze_time import humanize with freeze_time("2020-02-02"): NOW = dt.datetime.now(tz=dt.timezone.utc) @freeze_time("2020-02-02") def test_i18n() -> None: three_seconds = NOW - 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("lv") assert humanize.naturaltime(three_seconds) == "pirms 3 sekundēm" assert humanize.ordinal(5) == "5." 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() -> None: number = 10_000_000 assert humanize.intcomma(number) == "10,000,000" try: humanize.i18n.activate("de_DE") assert humanize.intcomma(number) == "10.000.000" assert humanize.intcomma(1_234_567.8901) == "1.234.567,8901" assert humanize.intcomma(1_234_567.89) == "1.234.567,89" assert humanize.intcomma("1234567,89") == "1.234.567,89" assert humanize.intcomma("1.234.567,89") == "1.234.567,89" assert humanize.intcomma("1.234.567,8") == "1.234.567,8" humanize.i18n.activate("fr_FR") assert humanize.intcomma(number) == "10 000 000" assert humanize.intcomma(1_234_567.89) == "1 234 567.89" assert humanize.intcomma("1 234 567.89") == "1 234 567.89" humanize.i18n.activate("pt_BR") 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" def test_naturaldelta() -> None: seconds = 1234 * 365 * 24 * 60 * 60 assert humanize.naturaldelta(seconds) == "1,234 years" try: humanize.i18n.activate("fr_FR") assert humanize.naturaldelta(seconds) == "1 234 ans" humanize.i18n.activate("es_ES") assert humanize.naturaldelta(seconds) == "1,234 años" except FileNotFoundError: pytest.skip("Generate .mo with scripts/generate-translation-binaries.sh") finally: humanize.i18n.deactivate() assert humanize.naturaldelta(seconds) == "1,234 years" @pytest.mark.parametrize( "locale, number, expected_result", [ # Italian uses comma as decimal separator ("it_IT", 1_000_000, "1,0 milione"), ("it_IT", 1_200_000, "1,2 milioni"), ("it_IT", 1_000_000_000, "1,0 miliardo"), ("it_IT", 3_500_000_000, "3,5 miliardi"), # Spanish uses dot as decimal separator ("es_ES", 1_000_000, "1.0 millón"), ("es_ES", 3_500_000, "3.5 millones"), ("es_ES", 1_000_000_000, "1.0 mil millones"), ("es_ES", 1_200_000_000, "1.2 miles de millones"), ("es_ES", 1_000_000_000_000, "1.0 billón"), ("es_ES", 6_700_000_000_000, "6.7 billones"), # Latvian uses comma as decimal separator ("lv", 1_000, "1,0 tūkstotis"), ("lv", 1_200, "1,2 tūkstoši"), ("lv", 2_000, "2,0 tūkstoši"), ("lv", 11_000, "11,0 tūkstoši"), ("lv", 21_000, "21,0 tūkstotis"), ("lv", 1_000_000, "1,0 miljons"), ("lv", 2_000_000, "2,0 miljoni"), ("lv", 11_000_000, "11,0 miljoni"), ("lv", 21_000_000, "21,0 miljons"), ("fr_FR", "1_000", "1.0 mille"), ("fr_FR", "12_400", "12.4 milles"), ("fr_FR", "12_490", "12.5 milles"), ("fr_FR", "1_000_000", "1.0 million"), ("fr_FR", "-1_000_000", "-1.0 million"), ("fr_FR", "1_200_000", "1.2 millions"), ("fr_FR", "1_290_000", "1.3 millions"), ("fr_FR", "999_999_999", "1.0 milliard"), ("fr_FR", "1_000_000_000", "1.0 milliard"), ("fr_FR", "-1_000_000_000", "-1.0 milliard"), ("fr_FR", "2_000_000_000", "2.0 milliards"), ("fr_FR", "999_999_999_999", "1.0 billion"), ("fr_FR", "1_000_000_000_000", "1.0 billion"), ("fr_FR", "6_000_000_000_000", "6.0 billions"), ("fr_FR", "-6_000_000_000_000", "-6.0 billions"), ("fr_FR", "999_999_999_999_999", "1.0 billiard"), ("fr_FR", "1_000_000_000_000_000", "1.0 billiard"), ("fr_FR", "1_300_000_000_000_000", "1.3 billiards"), ("fr_FR", "-1_300_000_000_000_000", "-1.3 billiards"), ("fr_FR", "3_500_000_000_000_000_000_000", "3.5 trilliards"), ("fr_FR", "8_100_000_000_000_000_000_000_000_000_000_000", "8.1 quintilliards"), ( "fr_FR", "-8_100_000_000_000_000_000_000_000_000_000_000", "-8.1 quintilliards", ), ( "fr_FR", 1_000_000_000_000_000_000_000_000_000_000_000_000, "1000.0 quintilliards", ), ( "fr_FR", 1_100_000_000_000_000_000_000_000_000_000_000_000, "1100.0 quintilliards", ), ( "fr_FR", 2_100_000_000_000_000_000_000_000_000_000_000_000, "2100.0 quintilliards", ), ], ) def test_intword_i18n(locale: str, number: int, expected_result: str) -> None: 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, value, expected_result", [ ("fr_FR", 1, "1 octet"), ("fr_FR", 42, "42 octets"), ("fr_FR", 42_000, "42.0 Ko"), ("fr_FR", 42_000_000, "42.0 Mo"), ("fr_FR", 42_000_000_000, "42.0 Go"), ("fr_FR", -42_000, "-42.0 Ko"), ], ) def test_naturalsize_i18n(locale: str, value: float, expected_result: str) -> None: try: humanize.i18n.activate(locale) except FileNotFoundError: pytest.skip("Generate .mo with scripts/generate-translation-binaries.sh") else: assert humanize.naturalsize(value) == expected_result finally: humanize.i18n.deactivate() def test_naturalsize_i18n_binary() -> None: try: humanize.i18n.activate("fr_FR") except FileNotFoundError: pytest.skip("Generate .mo with scripts/generate-translation-binaries.sh") else: assert humanize.naturalsize(3000, binary=True) == "2.9 Kio" finally: humanize.i18n.deactivate() @pytest.mark.parametrize( "locale, expected_result", [ ("ar", "5 خامس"), ("ar_SA", "5 خامس"), ("fr", "5e"), ("fr_FR", "5e"), ("pt", "5º"), ("pt_BR", "5º"), ("pt_PT", "5º"), ], ) def test_langauge_codes(locale: str, expected_result: str) -> None: try: humanize.i18n.activate(locale) except FileNotFoundError: pytest.skip("Generate .mo with scripts/generate-translation-binaries.sh") else: assert humanize.ordinal(5) == 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: str, number: int, gender: str, expected_result: str ) -> None: 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__spec__() -> None: i18n = importlib.import_module("humanize.i18n") assert i18n._get_default_locale_path() is not None def test_default_locale_path_none__spec__(monkeypatch: pytest.MonkeyPatch) -> None: i18n = importlib.import_module("humanize.i18n") monkeypatch.setattr(i18n, "__spec__", None) assert i18n._get_default_locale_path() is None def test_default_locale_path_undefined__file__(monkeypatch: pytest.MonkeyPatch) -> None: i18n = importlib.import_module("humanize.i18n") monkeypatch.delattr(i18n, "__spec__") assert 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__spec__( self, monkeypatch: pytest.MonkeyPatch ) -> None: i18n = importlib.import_module("humanize.i18n") monkeypatch.setattr(i18n, "__spec__", None) with pytest.raises(FileNotFoundError, match=self.expected_msg): i18n.activate("ru_RU") def test_default_locale_path_undefined__spec__( self, monkeypatch: pytest.MonkeyPatch ) -> None: i18n = importlib.import_module("humanize.i18n") monkeypatch.delattr(i18n, "__spec__") with pytest.raises(FileNotFoundError, match=self.expected_msg): i18n.activate("ru_RU") @freeze_time("2020-02-02") def test_en_locale(self) -> None: three_seconds = NOW - dt.timedelta(seconds=3) test_str = humanize.naturaltime(three_seconds) humanize.i18n.activate("en_US") assert test_str == humanize.naturaltime(three_seconds) humanize.i18n.activate("en_GB") assert test_str == humanize.naturaltime(three_seconds) humanize.i18n.deactivate() @freeze_time("2020-02-02") def test_none_locale(self) -> None: three_seconds = NOW - dt.timedelta(seconds=3) try: humanize.i18n.activate("fr") assert humanize.naturaltime(three_seconds) == "il y a 3 secondes" humanize.i18n.activate(None) test_str = humanize.naturaltime(three_seconds) assert test_str == "3 seconds ago" except FileNotFoundError: pytest.skip("Generate .mo with scripts/generate-translation-binaries.sh") finally: humanize.i18n.deactivate() assert test_str == humanize.naturaltime(three_seconds) humanize-4.16.0/tests/test_lists.py0000644000000000000000000000111315220765405014263 0ustar00from __future__ import annotations import pytest import humanize @pytest.mark.parametrize( "test_args, expected", [ ([["1", "2", "3"]], "1, 2 and 3"), ([["one", "two", "three"]], "one, two and three"), ([["one", "two"]], "one and two"), ([["one"]], "one"), ([[]], ""), ([[""]], ""), ([[1, 2, 3]], "1, 2 and 3"), ([[1, "two"]], "1 and two"), ], ) def test_natural_list( test_args: list[str] | list[int] | list[str | int], expected: str ) -> None: assert humanize.natural_list(*test_args) == expected humanize-4.16.0/tests/test_number.py0000644000000000000000000002254715220765405014433 0ustar00"""Number tests.""" from __future__ import annotations import math import typing 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"), (math.nan, "NaN"), (math.inf, "+Inf"), (-math.inf, "-Inf"), ("nan", "NaN"), ("-inf", "-Inf"), ], ) def test_ordinal(test_input: str, expected: str) -> None: 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"), (["1234567.1234567", 0], "1,234,567"), (["1234567.1234567", 1], "1,234,567.1"), (["1234567.1234567", 10], "1,234,567.1234567000"), (["1234567", 1], "1,234,567.0"), ([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, 0], "1,235"), ([1234.5454545, 1], "1,234.5"), ([1234.5454545, 2], "1,234.55"), ([1234.5454545, 3], "1,234.545"), ([1234.5454545, 10], "1,234.5454545000"), ([math.nan], "NaN"), ([math.inf], "+Inf"), ([-math.inf], "-Inf"), (["nan"], "NaN"), (["-inf"], "-Inf"), ], ) def test_intcomma( test_args: list[int] | list[float] | list[str], expected: str ) -> None: assert humanize.intcomma(*test_args) == expected def test_intword_powers() -> None: # 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", [ (["0"], "0"), (["100"], "100"), (["-100"], "-100"), (["1000"], "1.0 thousand"), (["12400"], "12.4 thousand"), (["12490"], "12.5 thousand"), (["1000000"], "1.0 million"), (["-1000000"], "-1.0 million"), (["1200000"], "1.2 million"), (["1290000"], "1.3 million"), (["999999999"], "1.0 billion"), (["1000000000"], "1.0 billion"), (["-1000000000"], "-1.0 billion"), (["2000000000"], "2.0 billion"), (["999999999999"], "1.0 trillion"), (["1000000000000"], "1.0 trillion"), (["6000000000000"], "6.0 trillion"), (["-6000000000000"], "-6.0 trillion"), (["999999999999999"], "1.0 quadrillion"), (["1000000000000000"], "1.0 quadrillion"), (["1300000000000000"], "1.3 quadrillion"), (["-1300000000000000"], "-1.3 quadrillion"), (["3500000000000000000000"], "3.5 sextillion"), (["8100000000000000000000000000000000"], "8.1 decillion"), (["-8100000000000000000000000000000000"], "-8.1 decillion"), ([1_000_000_000_000_000_000_000_000_000_000_000_000], "1000.0 decillion"), ([1_100_000_000_000_000_000_000_000_000_000_000_000], "1100.0 decillion"), ([2_100_000_000_000_000_000_000_000_000_000_000_000], "2100.0 decillion"), ([2e100], "2.0 googol"), ([None], "None"), (["1230000", "%0.2f"], "1.23 million"), ([10**100], "1.0 googol"), ([10**101], "10.0 googol"), ([math.nan], "NaN"), ([math.inf], "+Inf"), ([-math.inf], "-Inf"), (["nan"], "NaN"), (["-inf"], "-Inf"), (["1234567", "%.0f"], "1 million"), (["1234567", "%.1f"], "1.2 million"), (["1234567", "%.2f"], "1.23 million"), (["1234567", "%.3f"], "1.235 million"), (["999500", "%.0f"], "1 million"), (["999499", "%.0f"], "999 thousand"), ], ) def test_intword(test_args: list[str], expected: str) -> None: 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"), (math.nan, "NaN"), (math.inf, "+Inf"), (-math.inf, "-Inf"), ("nan", "NaN"), ("-inf", "-Inf"), ], ) def test_apnumber(test_input: int | str, expected: str) -> None: 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"), (math.nan, "NaN"), (math.inf, "+Inf"), (-math.inf, "-Inf"), ("nan", "NaN"), ("-inf", "-Inf"), (-1.3, "-1 3/10"), (-2.5, "-2 1/2"), (-0.5, "-1/2"), ], ) def test_fractional(test_input: float | str, expected: str) -> None: 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¹"), ([0.3], "3.00 x 10⁻¹"), (["foo"], "foo"), ([None], "None"), ([1000, 1], "1.0 x 10³"), ([0.3, 1], "3.0 x 10⁻¹"), ([1000, 0], "1 x 10³"), ([0.3, 0], "3 x 10⁻¹"), ([1e20], "1.00 x 10²⁰"), ([2e-20], "2.00 x 10⁻²⁰"), ([-3e20], "-3.00 x 10²⁰"), ([-4e-20], "-4.00 x 10⁻²⁰"), ([math.nan], "NaN"), ([math.inf], "+Inf"), ([-math.inf], "-Inf"), (["nan"], "NaN"), (["-inf"], "-Inf"), ], ) def test_scientific(test_args: list[typing.Any], expected: str) -> None: 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"), ([math.nan], "NaN"), ([math.inf], "+Inf"), ([-math.inf], "-Inf"), ], ) def test_clamp(test_args: list[typing.Any], expected: str) -> None: assert humanize.clamp(*test_args) == expected @pytest.mark.parametrize( "test_args, expected", [ ([0], "0.00"), ([1, "Hz"], "1.00 Hz"), ([1.0, "W"], "1.00 W"), ([3, "C"], "3.00 C"), ([3, "W", 5], "3.0000 W"), ([1.23456], "1.23"), ([12.3456], "12.3"), ([123.456], "123"), ([1234.56], "1.23 k"), ([12345, "", 6], "12.3450 k"), ([200_000], "200 k"), ([999.9, "V"], "1.00 kV"), ([999.99, "V"], "1.00 kV"), ([999_999, "V"], "1.00 MV"), ([0.0009999, "V"], "1.00 mV"), ([1e25, "m"], "10.0 Ym"), ([1e26, "m"], "100 Ym"), ([1e27, "A"], "1.00 RA"), ([1.234e28, "A"], "12.3 RA"), ([1.234e-28, "A"], "123 qA"), ([1.235e29, "A"], "124 RA"), ([2.56e-30, "V"], "2.56 qV"), ([2.596e32, "F"], "260 QF"), ([1e50], "1.00 x 10⁵⁰"), ([1e-50], "1.00 x 10⁻⁵⁰"), ([-1500, "V"], "-1.50 kV"), ([0.12], "120 m"), ([0.012], "12.0 m"), ([0.0012], "1.20 m"), ([0.00012], "120 μ"), ([1e-23], "10.0 y"), ([1e-24], "1.00 y"), ([1e-25], "100 r"), ([1e-26], "10.0 r"), ([1, "°"], "1.00°"), ([0.1, "°"], "100m°"), ([100], "100"), ([0.1], "100 m"), ([1.5123, "", 0], "2"), ([10.5123, "", 0], "11"), ([10.5123, "", 1], "11"), ([10.5123, "", 2], "11"), ([10.5123, "", 3], "10.5"), ([1, "", 0], "1"), ([10, "", 0], "10"), ([100, "", 0], "100"), ([1000, "", 0], "1 k"), ([1, "", 1], "1"), ([10, "", 1], "10"), ([100, "", 1], "100"), ([1000, "", 1], "1 k"), ([1, "", 2], "1.0"), ([10, "", 2], "10"), ([100, "", 2], "100"), ([1000, "", 2], "1.0 k"), ([1, "", 3], "1.00"), ([10, "", 3], "10.0"), ([100, "", 3], "100"), ([1000, "", 3], "1.00 k"), ([math.nan], "NaN"), ([math.nan, "m"], "NaN"), ([math.inf], "+Inf"), ([-math.inf], "-Inf"), ], ids=str, ) def test_metric(test_args: list[typing.Any], expected: str) -> None: assert humanize.metric(*test_args) == expected humanize-4.16.0/tests/test_time.py0000644000000000000000000010361415220765405014074 0ustar00"""Tests for time humanizing.""" from __future__ import annotations import datetime as dt import typing 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 FROZEN_DATE = "2010-02-02" with freeze_time(FROZEN_DATE): 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: int, month: int, day: int) -> None: self.year, self.month, self.day = year, month, day def __str__(self) -> str: return f"{self.year}-{self.month}-{self.day}" VALUE_ERROR_TEST = FakeDate(290149024, 2, 2) OVERFLOW_ERROR_TEST = FakeDate(120390192341, 2, 2) def assert_equal_datetime(dt1: dt.datetime, dt2: dt.datetime) -> None: assert (dt1 - dt2).seconds == 0 def assert_equal_timedelta(td1: dt.timedelta, td2: dt.timedelta) -> None: 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() -> None: 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) assert_equal_datetime(date, result[0]) assert_equal_timedelta(d, result[1]) assert time._date_and_delta("NaN") == (None, "NaN") # Tests for the public interface of humanize.time @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: dt.timedelta, expected: str) -> None: assert humanize.naturaldelta(test_input, months=False) == expected @pytest.mark.parametrize( "test_input, expected", [ (0, "a moment"), (1, "a second"), (23.5, "23 seconds"), (30, "30 seconds"), (dt.timedelta(microseconds=13), "a moment"), (dt.timedelta(minutes=1, seconds=29), "a minute"), (dt.timedelta(minutes=1, seconds=30), "2 minutes"), (dt.timedelta(minutes=1, seconds=59), "2 minutes"), (dt.timedelta(minutes=2), "2 minutes"), (dt.timedelta(minutes=59), "59 minutes"), (dt.timedelta(minutes=59, seconds=30), "an hour"), (dt.timedelta(hours=1, minutes=29), "an hour"), # Round to nearest, ties to even. # See https://en.wikipedia.org/wiki/IEEE_754#Rounding_rules (dt.timedelta(hours=1, minutes=30), "2 hours"), (dt.timedelta(hours=2, minutes=30), "2 hours"), (dt.timedelta(hours=3, minutes=30), "4 hours"), (dt.timedelta(hours=23, minutes=50, seconds=50), "a day"), (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(days=364), "a year"), (dt.timedelta(days=365 + 364), "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"), (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: float | dt.timedelta, expected: str) -> None: assert humanize.naturaldelta(test_input) == expected if not isinstance(test_input, str): assert humanize.naturaldelta(-test_input) == expected @freeze_time(FROZEN_DATE) @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=29), "a minute ago"), (NOW - dt.timedelta(minutes=1, seconds=30), "2 minutes ago"), (NOW - dt.timedelta(minutes=2), "2 minutes ago"), (NOW - dt.timedelta(hours=1, minutes=29, seconds=30), "an hour ago"), (NOW - dt.timedelta(hours=1, minutes=30, seconds=30), "2 hours ago"), (NOW - dt.timedelta(hours=23, minutes=29, seconds=50), "23 hours ago"), (NOW - dt.timedelta(hours=23, minutes=50, seconds=50), "a day 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=29), "a minute from now"), (NOW + dt.timedelta(minutes=1, seconds=30), "2 minutes from now"), (NOW + dt.timedelta(minutes=2), "2 minutes from now"), (NOW + dt.timedelta(hours=1, minutes=29, seconds=30), "an hour from now"), (NOW + dt.timedelta(hours=1, minutes=30, seconds=30), "2 hours from now"), (NOW + dt.timedelta(hours=23, minutes=29, seconds=50), "23 hours from now"), (NOW + dt.timedelta(hours=23, minutes=50, seconds=50), "a day 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"), (dt.timedelta(days=-10000), "27 years from now"), (dt.timedelta(days=365 + 35), "1 year, 1 month ago"), (22.5, "22 seconds ago"), (23.5, "24 seconds ago"), (23.9, "24 seconds 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: dt.datetime | dt.timedelta | float, expected: str ) -> None: assert humanize.naturaltime(test_input) == expected @freeze_time(FROZEN_DATE) @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=29), "a minute ago"), (NOW - dt.timedelta(minutes=1, seconds=30), "2 minutes ago"), (NOW - dt.timedelta(minutes=2), "2 minutes ago"), (NOW - dt.timedelta(hours=1, minutes=29, seconds=30), "an hour ago"), (NOW - dt.timedelta(hours=1, minutes=30, seconds=30), "2 hours ago"), (NOW - dt.timedelta(hours=23, minutes=50, seconds=50), "a day 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=29), "a minute from now"), (NOW + dt.timedelta(minutes=1, seconds=30), "2 minutes from now"), (NOW + dt.timedelta(minutes=2), "2 minutes from now"), (NOW + dt.timedelta(hours=1, minutes=29, seconds=30), "an hour from now"), (NOW + dt.timedelta(hours=1, minutes=30, seconds=30), "2 hours from now"), (NOW + dt.timedelta(hours=23, minutes=29, seconds=50), "23 hours from now"), (NOW + dt.timedelta(hours=23, minutes=50, seconds=50), "a day 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"), (dt.timedelta(days=-10000), "27 years from now"), (dt.timedelta(days=365 + 35), "1 year, 35 days ago"), (22.5, "22 seconds ago"), (23.5, "24 seconds 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: dt.datetime | dt.timedelta | float, expected: str ) -> None: assert humanize.naturaltime(test_input, months=False) == expected @freeze_time(FROZEN_DATE) @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], str(VALUE_ERROR_TEST)), ([OVERFLOW_ERROR_TEST], str(OVERFLOW_ERROR_TEST)), ], ) def test_naturalday(test_args: list[typing.Any], expected: str) -> None: assert humanize.naturalday(*test_args) == expected @freeze_time(FROZEN_DATE) @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, str(VALUE_ERROR_TEST)), (OVERFLOW_ERROR_TEST, str(OVERFLOW_ERROR_TEST)), (dt.date(2009, 2, 2), "Feb 02 2009"), (dt.date(2009, 3, 2), "Mar 02 2009"), (dt.date(2009, 4, 2), "Apr 02 2009"), (dt.date(2009, 5, 2), "May 02 2009"), (dt.date(2009, 6, 2), "Jun 02 2009"), (dt.date(2009, 7, 2), "Jul 02 2009"), (dt.date(2009, 8, 2), "Aug 02 2009"), (dt.date(2009, 9, 2), "Sep 02 2009"), (dt.date(2009, 10, 2), "Oct 02"), (dt.date(2009, 11, 2), "Nov 02"), (dt.date(2009, 12, 2), "Dec 02"), (dt.date(2010, 1, 2), "Jan 02"), (dt.date(2010, 2, 2), "today"), (dt.date(2010, 3, 2), "Mar 02"), (dt.date(2010, 4, 2), "Apr 02"), (dt.date(2010, 5, 2), "May 02"), (dt.date(2010, 6, 2), "Jun 02"), (dt.date(2010, 7, 2), "Jul 02"), (dt.date(2010, 8, 2), "Aug 02 2010"), (dt.date(2010, 9, 2), "Sep 02 2010"), (dt.date(2010, 10, 2), "Oct 02 2010"), (dt.date(2010, 11, 2), "Nov 02 2010"), (dt.date(2010, 12, 2), "Dec 02 2010"), (dt.date(2011, 1, 2), "Jan 02 2011"), (dt.date(2011, 2, 2), "Feb 02 2011"), ], ) def test_naturaldate(test_input: dt.date, expected: str) -> None: assert humanize.naturaldate(test_input) == expected @freeze_time("2023-10-15 23:00:00+00:00") def test_naturaldate_tz_aware() -> None: """naturaldate should compare dates in the timezone of the given value.""" utc = dt.timezone.utc aedt = dt.timezone(dt.timedelta(hours=11)) cest = dt.timezone(dt.timedelta(hours=2)) edt = dt.timezone(dt.timedelta(hours=-4)) pdt = dt.timezone(dt.timedelta(hours=-7)) future = dt.datetime(2023, 10, 16, hour=6, tzinfo=utc) # UTC: now is Oct 15, future is Oct 16 => tomorrow assert humanize.naturaldate(future) == "tomorrow" # AEDT (+11): now is Oct 16 10:00, future is Oct 16 17:00 => today assert humanize.naturaldate(future.astimezone(aedt)) == "today" # CEST (+2): now is Oct 16 01:00, future is Oct 16 08:00 => today assert humanize.naturaldate(future.astimezone(cest)) == "today" # EDT (-4): now is Oct 15 19:00, future is Oct 16 02:00 => tomorrow assert humanize.naturaldate(future.astimezone(edt)) == "tomorrow" # PDT (-7): now is Oct 15 16:00, future is Oct 15 23:00 => today assert humanize.naturaldate(future.astimezone(pdt)) == "today" @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: float, expected: str) -> None: # 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: str, seconds: float, expected: str ) -> None: # Arrange delta = dt.timedelta(seconds=seconds) # Act / Assert assert humanize.naturaldelta(delta, minimum_unit=minimum_unit) == expected assert humanize.naturaldelta(seconds, minimum_unit=minimum_unit) == expected @freeze_time(FROZEN_DATE) @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: float, expected: str) -> None: # Arrange datetime = NOW - dt.timedelta(seconds=seconds) # Act / Assert assert humanize.naturaltime(datetime) == expected @freeze_time(FROZEN_DATE) @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: str, seconds: float, expected: str ) -> None: # Arrange datetime = NOW - dt.timedelta(seconds=seconds) # Act / Assert assert humanize.naturaltime(datetime, minimum_unit=minimum_unit) == expected @freeze_time(FROZEN_DATE) @pytest.mark.parametrize( "test_input, expected", [ (NOW_UTC, "now"), (NOW_UTC - dt.timedelta(seconds=1), "a second ago"), (NOW_UTC - dt.timedelta(seconds=30), "30 seconds ago"), (NOW_UTC - dt.timedelta(minutes=1, seconds=29), "a minute ago"), (NOW_UTC - dt.timedelta(minutes=1, seconds=30), "2 minutes ago"), (NOW_UTC - dt.timedelta(minutes=2), "2 minutes ago"), (NOW_UTC - dt.timedelta(hours=1, minutes=29, seconds=30), "an hour ago"), (NOW_UTC - dt.timedelta(hours=1, minutes=30, seconds=30), "2 hours ago"), (NOW_UTC - dt.timedelta(hours=23, minutes=29, seconds=50), "23 hours ago"), (NOW_UTC - dt.timedelta(hours=23, minutes=50, seconds=50), "a day ago"), (NOW_UTC - dt.timedelta(days=1), "a day ago"), (NOW_UTC - dt.timedelta(days=500), "1 year, 4 months ago"), (NOW_UTC - dt.timedelta(days=365 * 2 + 35), "2 years ago"), (NOW_UTC + dt.timedelta(seconds=1), "a second from now"), (NOW_UTC + dt.timedelta(seconds=30), "30 seconds from now"), (NOW_UTC + dt.timedelta(minutes=1, seconds=29), "a minute from now"), (NOW_UTC + dt.timedelta(minutes=1, seconds=30), "2 minutes from now"), (NOW_UTC + dt.timedelta(minutes=2), "2 minutes from now"), (NOW_UTC + dt.timedelta(hours=1, minutes=29, seconds=30), "an hour from now"), (NOW_UTC + dt.timedelta(hours=1, minutes=30, seconds=30), "2 hours from now"), (NOW_UTC + dt.timedelta(hours=23, minutes=29, seconds=50), "23 hours from now"), (NOW_UTC + dt.timedelta(hours=23, minutes=50, seconds=50), "a day from now"), (NOW_UTC + dt.timedelta(days=1), "a day from now"), (NOW_UTC + dt.timedelta(days=500), "1 year, 4 months from now"), (NOW_UTC + dt.timedelta(days=365 * 2 + 35), "2 years from now"), # regression tests for bugs in post-release humanize (NOW_UTC + dt.timedelta(days=10000), "27 years from now"), (NOW_UTC - dt.timedelta(days=365 + 35), "1 year, 1 month ago"), (NOW_UTC - dt.timedelta(days=365 * 2 + 65), "2 years ago"), (NOW_UTC - dt.timedelta(days=365 + 4), "1 year, 4 days ago"), ], ) def test_naturaltime_timezone(test_input: dt.datetime, expected: str) -> None: assert humanize.naturaltime(test_input) == expected @freeze_time(FROZEN_DATE) @pytest.mark.parametrize( "test_input, expected", [ (NOW_UTC, "now"), (NOW_UTC - dt.timedelta(seconds=1), "a second ago"), (NOW_UTC - dt.timedelta(seconds=30), "30 seconds ago"), (NOW_UTC - dt.timedelta(minutes=1, seconds=29), "a minute ago"), (NOW_UTC - dt.timedelta(minutes=1, seconds=30), "2 minutes ago"), (NOW_UTC - dt.timedelta(minutes=2), "2 minutes ago"), (NOW_UTC - dt.timedelta(hours=1, minutes=29, seconds=30), "an hour ago"), (NOW_UTC - dt.timedelta(hours=1, minutes=30, seconds=30), "2 hours ago"), (NOW_UTC - dt.timedelta(hours=23, minutes=29, seconds=50), "23 hours ago"), (NOW_UTC - dt.timedelta(hours=23, minutes=50, seconds=50), "a day ago"), (NOW_UTC - dt.timedelta(days=1), "a day ago"), (NOW_UTC - dt.timedelta(days=500), "1 year, 4 months ago"), (NOW_UTC - dt.timedelta(days=365 * 2 + 35), "2 years ago"), (NOW_UTC + dt.timedelta(seconds=1), "a second from now"), (NOW_UTC + dt.timedelta(seconds=30), "30 seconds from now"), (NOW_UTC + dt.timedelta(minutes=1, seconds=29), "a minute from now"), (NOW_UTC + dt.timedelta(minutes=1, seconds=30), "2 minutes from now"), (NOW_UTC + dt.timedelta(minutes=2), "2 minutes from now"), (NOW_UTC + dt.timedelta(hours=1, minutes=29, seconds=30), "an hour from now"), (NOW_UTC + dt.timedelta(hours=1, minutes=30, seconds=30), "2 hours from now"), (NOW_UTC + dt.timedelta(hours=23, minutes=29, seconds=50), "23 hours from now"), (NOW_UTC + dt.timedelta(hours=23, minutes=50, seconds=50), "a day from now"), (NOW_UTC + dt.timedelta(days=1), "a day from now"), (NOW_UTC + dt.timedelta(days=500), "1 year, 4 months from now"), (NOW_UTC + dt.timedelta(days=365 * 2 + 35), "2 years from now"), # regression tests for bugs in post-release humanize (NOW_UTC + dt.timedelta(days=10000), "27 years from now"), (NOW_UTC - dt.timedelta(days=365 + 35), "1 year, 1 month ago"), (NOW_UTC - dt.timedelta(days=365 * 2 + 65), "2 years ago"), (NOW_UTC - dt.timedelta(days=365 + 4), "1 year, 4 days ago"), ], ) def test_naturaltime_timezone_when(test_input: dt.datetime, expected: str) -> None: assert humanize.naturaltime(test_input, when=NOW_UTC) == 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: dt.timedelta | float, min_unit: str, expected: str ) -> None: 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", ), (dt.timedelta(days=31), "seconds", "1 month"), (dt.timedelta(days=32), "seconds", "1 month and 1 day"), (dt.timedelta(days=62), "seconds", "2 months and 1 day"), (dt.timedelta(days=92), "seconds", "3 months"), (dt.timedelta(days=31), "days", "1 month"), (dt.timedelta(days=32), "days", "1 month and 1 day"), (dt.timedelta(days=62), "days", "2 months and 1 day"), (dt.timedelta(days=92), "days", "3 months"), ], ) def test_precisedelta_multiple_units( val: dt.timedelta | float, min_unit: str, expected: str ) -> None: 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 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"), # 1 month is 30.5 days but remainder is always rounded down. (dt.timedelta(days=31), "days", "%d", "1 month"), (dt.timedelta(days=31), "days", "%.0f", "1 month"), (dt.timedelta(days=32), "days", "%d", "1 month and 1 day"), (dt.timedelta(days=32), "days", "%.0f", "1 month and 1 day"), (dt.timedelta(days=62), "days", "%d", "2 months and 1 day"), (dt.timedelta(days=92), "days", "%d", "3 months"), (dt.timedelta(days=120), "months", "%0.2f", "3.93 months"), (dt.timedelta(days=183), "years", "%0.1f", "0.5 years"), (0.01, "seconds", "%0.3f", "0.010 seconds"), # 31 seconds will be truncated to 0 with %d and rounded to the nearest # number with %.0f, ie. 1 (31, "minutes", "%d", "0 minutes"), (31, "minutes", "%0.0f", "1 minute"), (60 + 29.99, "minutes", "%d", "1 minute"), (60 + 29.99, "minutes", "%.0f", "1 minute"), (60 + 30, "minutes", "%d", "1 minute"), # 30 sec is 0.5 minutes. Round to nearest, ties away from zero. # See https://en.wikipedia.org/wiki/IEEE_754#Rounding_rules (60 + 30, "minutes", "%.0f", "2 minutes"), (60 * 60 + 30.99, "minutes", "%.0f", "1 hour"), (60 * 60 + 31, "minutes", "%.0f", "1 hour and 1 minute"), ( ONE_DAY - MILLISECONDS_1_337, "seconds", "%.1f", "23 hours, 59 minutes and 58.7 seconds", ), ( ONE_DAY - ONE_MILLISECOND, "seconds", "%.4f", "23 hours, 59 minutes and 59.9990 seconds", ), (91500, "hours", "%0.0f", "1 day and 1 hour"), # Because we use a format to round, we will end up with 9 hours. (9 * 60 * 60 - 1, "minutes", "%0.0f", "9 hours"), (dt.timedelta(days=30.99999), "minutes", "%0.0f", "1 month"), # We round at the hour. We end up with 12.5 hours. It's a tie, so round to the # nearest even number which is 12, thus we round down. ( dt.timedelta(days=30.5 * 3, minutes=30), "hours", "%0.0f", "2 months, 30 days and 12 hours", ), (dt.timedelta(days=10, hours=6), "days", "%0.2f", "10.25 days"), (dt.timedelta(days=30.55), "days", "%0.1f", "30.6 days"), (dt.timedelta(microseconds=999.5), "microseconds", "%0.0f", "1 millisecond"), (dt.timedelta(milliseconds=999.5), "milliseconds", "%0.0f", "1 second"), (dt.timedelta(seconds=59.5), "seconds", "%0.0f", "1 minute"), (dt.timedelta(minutes=59.5), "minutes", "%0.0f", "1 hour"), (dt.timedelta(days=364), "months", "%0.0f", "1 year"), ], ) def test_precisedelta_custom_format( val: dt.timedelta | float, min_unit: str, fmt: str, expected: str ) -> None: 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: dt.timedelta | float, min_unit: str, suppress: list[str], expected: str ) -> None: assert ( humanize.precisedelta(val, minimum_unit=min_unit, suppress=suppress) == expected ) def test_precisedelta_bogus_call() -> None: assert humanize.precisedelta(None) == "None" with pytest.raises( ValueError, match="Minimum unit is suppressed and no suitable replacement was found", ): humanize.precisedelta(1, minimum_unit="years", suppress=["years"]) with pytest.raises(ValueError, match="Minimum unit 'years' not supported"): humanize.naturaldelta(1, minimum_unit="years") def test_time_unit() -> None: years, minutes = time.Unit["YEARS"], time.Unit["MINUTES"] assert minutes < years assert years > minutes with pytest.raises(TypeError): _ = years < "foo" @pytest.mark.parametrize( "fmt, value, expected", [ ("%.2f", 1.011, 1.01), ("%.0f", 1.01, 1.0), ("%.0f", 1.5, 2.0), ("%10.0f", 1.01, 1.0), ("%i", 1.01, 1), # Surprising rounding with %d. It does not truncate for all values... ("%d", 1.999999999999999, 1), ("%d", 1.9999999999999999, 2), ], ) def test_rounding_by_fmt(fmt: str, value: float, expected: float) -> None: assert time._rounding_by_fmt(fmt, value) == pytest.approx(expected) humanize-4.16.0/.gitignore0000644000000000000000000000530315220765405012347 0ustar00# Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ cover/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 db.sqlite3-journal # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder .pybuilder/ target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv # For a library or package, you might want to ignore these files since the code is # intended to run in multiple environments; otherwise, check them in: # .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # poetry # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. # This is especially recommended for binary packages to ensure reproducibility, and is more # commonly ignored for libraries. # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control #poetry.lock # pdm # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. #pdm.lock # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it # in version control. # https://pdm.fming.dev/#use-with-ide .pdm.toml # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ # pytype static type analyzer .pytype/ # Cython debug symbols cython_debug/ # Jetbrains IDEs .idea/ # hatch-vcs src/*/_version.py humanize-4.16.0/LICENCE0000644000000000000000000000206615220765405011347 0ustar00Copyright (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. humanize-4.16.0/README.md0000644000000000000000000001401615220765405011637 0ustar00# 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://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/python-humanize/humanize/workflows/Test/badge.svg)](https://github.com/python-humanize/humanize/actions) [![codecov](https://codecov.io/gh/python-humanize/humanize/branch/main/graph/badge.svg)](https://codecov.io/gh/python-humanize/humanize) [![MIT License](https://img.shields.io/github/license/python-humanize/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: - Arabic - Basque - Bengali - Brazilian Portuguese - Catalan - Danish - Dutch - Esperanto - European Portuguese - Finnish - French - German - Greek - Hebrew - Indonesian - Italian - Japanese - Klingon - Korean - Latvian - Norwegian - Persian - Polish - Russian - Simplified Chinese - Slovak - Slovenian - Spanish - Swedish - Turkish - Ukrainian - Uzbek - Vietnamese ## API reference [https://humanize.readthedocs.io](https://humanize.readthedocs.io/) ## Installation ### From PyPI ```bash python3 -m pip install --upgrade humanize ``` ### From source ```bash git clone https://github.com/python-humanize/humanize cd humanize python3 -m pip install -e . ``` ## 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: ```sh xgettext --from-code=UTF-8 -o humanize.pot -k'_' -k'N_' -k'P_:1c,2' -k'NS_:1,2' -k'_ngettext:1,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: ```sh 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. humanize-4.16.0/pyproject.toml0000644000000000000000000000673215220765405013302 0ustar00[build-system] build-backend = "hatchling.build" requires = [ "hatch-vcs", "hatchling>=1.27", ] [project] name = "humanize" description = "Python humanize utilities" readme = "README.md" keywords = [ "humanize time size", ] license = "MIT" license-files = [ "LICENCE" ] maintainers = [ { name = "Hugo van Kemenade" } ] authors = [ { name = "Jason Moiron", email = "jmoiron@jmoiron.net" } ] requires-python = ">=3.10" classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Programming Language :: Python :: 3.15", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Text Processing", "Topic :: Text Processing :: General", ] dynamic = [ "version" ] optional-dependencies.tests = [ "freezegun", "pytest>=9", "pytest-benchmark", "pytest-codspeed", "pytest-cov", ] urls."Issue tracker" = "https://github.com/python-humanize/humanize/issues" urls."Release notes" = "https://github.com/python-humanize/humanize/releases" urls.Documentation = "https://humanize.readthedocs.io/" urls.Funding = "https://tidelift.com/subscription/pkg/pypi-humanize?utm_source=pypi-humanize&utm_medium=pypi" urls.Homepage = "https://github.com/python-humanize/humanize" urls.Source = "https://github.com/python-humanize/humanize" [tool.hatch] version.source = "vcs" version.raw-options.local_scheme = "no-local-version" build.artifacts = [ "*.mo" ] build.hooks.vcs.version-file = "src/humanize/_version.py" [tool.ruff] fix = true lint.select = [ "C4", # flake8-comprehensions "D", # pydocstyle "E", # pycodestyle errors "EM", # flake8-errmsg "F", # pyflakes "I", # isort "ICN", # flake8-import-conventions "ISC", # flake8-implicit-str-concat "LOG", # flake8-logging "PERF", # perflint "PGH", # pygrep-hooks "PIE", # flake8-pie "PT", # flake8-pytest-style "PYI", # flake8-pyi "RUF022", # unsorted-dunder-all "RUF100", # unused noqa (yesqa) "UP", # pyupgrade "W", # pycodestyle warnings "YTT", # flake8-2020 ] lint.ignore = [ "E203", # Whitespace before ':' "E221", # Multiple spaces before operator "E226", # Missing whitespace around arithmetic operator "E241", # Multiple spaces after ',' "PIE790", # flake8-pie: unnecessary-placeholder ] lint.per-file-ignores."tests/*" = [ "D", ] lint.flake8-import-conventions.aliases.datetime = "dt" lint.flake8-import-conventions.banned-from = [ "datetime" ] lint.flake8-pytest-style.parametrize-names-type = "csv" lint.isort.known-first-party = [ "humanize" ] lint.isort.required-imports = [ "from __future__ import annotations" ] lint.pydocstyle.convention = "google" lint.future-annotations = true [tool.pyproject-fmt] max_supported_python = "3.15" [tool.mypy] pretty = true strict = true show_error_codes = true [tool.pytest] minversion = "9.0" addopts = [ "--color=yes" ] testpaths = [ "tests" ] filterwarnings = [ "error" ] [tool.coverage] # Regexes for lines to exclude from consideration report.exclude_also = [ # Don't complain if non-runnable code isn't run: "if __name__ == .__main__.:", ] humanize-4.16.0/PKG-INFO0000644000000000000000000001743215220765405011462 0ustar00Metadata-Version: 2.4 Name: humanize Version: 4.16.0 Summary: Python humanize utilities Project-URL: Issue tracker, https://github.com/python-humanize/humanize/issues Project-URL: Release notes, https://github.com/python-humanize/humanize/releases Project-URL: Documentation, https://humanize.readthedocs.io/ Project-URL: Funding, https://tidelift.com/subscription/pkg/pypi-humanize?utm_source=pypi-humanize&utm_medium=pypi Project-URL: Homepage, https://github.com/python-humanize/humanize Project-URL: Source, https://github.com/python-humanize/humanize Author-email: Jason Moiron Maintainer: Hugo van Kemenade License-Expression: MIT License-File: LICENCE Keywords: humanize time size Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: 3.14 Classifier: Programming Language :: Python :: 3.15 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Text Processing Classifier: Topic :: Text Processing :: General Requires-Python: >=3.10 Provides-Extra: tests Requires-Dist: freezegun; extra == 'tests' Requires-Dist: pytest-benchmark; extra == 'tests' Requires-Dist: pytest-codspeed; extra == 'tests' Requires-Dist: pytest-cov; extra == 'tests' Requires-Dist: pytest>=9; extra == 'tests' Description-Content-Type: text/markdown # 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://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/python-humanize/humanize/workflows/Test/badge.svg)](https://github.com/python-humanize/humanize/actions) [![codecov](https://codecov.io/gh/python-humanize/humanize/branch/main/graph/badge.svg)](https://codecov.io/gh/python-humanize/humanize) [![MIT License](https://img.shields.io/github/license/python-humanize/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: - Arabic - Basque - Bengali - Brazilian Portuguese - Catalan - Danish - Dutch - Esperanto - European Portuguese - Finnish - French - German - Greek - Hebrew - Indonesian - Italian - Japanese - Klingon - Korean - Latvian - Norwegian - Persian - Polish - Russian - Simplified Chinese - Slovak - Slovenian - Spanish - Swedish - Turkish - Ukrainian - Uzbek - Vietnamese ## API reference [https://humanize.readthedocs.io](https://humanize.readthedocs.io/) ## Installation ### From PyPI ```bash python3 -m pip install --upgrade humanize ``` ### From source ```bash git clone https://github.com/python-humanize/humanize cd humanize python3 -m pip install -e . ``` ## 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: ```sh xgettext --from-code=UTF-8 -o humanize.pot -k'_' -k'N_' -k'P_:1c,2' -k'NS_:1,2' -k'_ngettext:1,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: ```sh 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.