humanize-4.10.0/.pre-commit-config.yaml0000644000000000000000000000320413615410400014614 0ustar00repos: - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.5.0 hooks: - id: ruff args: [--exit-non-zero-on-fix] - repo: https://github.com/psf/black-pre-commit-mirror rev: 24.4.2 hooks: - id: black - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.6.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: trailing-whitespace exclude: \.github/ISSUE_TEMPLATE\.md|\.github/PULL_REQUEST_TEMPLATE\.md - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.10.1 hooks: - id: mypy additional_dependencies: [pytest, types-freezegun, types-setuptools] args: [--strict, --pretty, --show-error-codes, .] pass_filenames: false - repo: https://github.com/tox-dev/pyproject-fmt rev: 2.1.3 hooks: - id: pyproject-fmt - repo: https://github.com/abravalheri/validate-pyproject rev: v0.18 hooks: - id: validate-pyproject - repo: https://github.com/tox-dev/tox-ini-fmt rev: 1.3.1 hooks: - id: tox-ini-fmt - repo: https://github.com/pre-commit/mirrors-prettier rev: v4.0.0-alpha.8 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.10.0/.readthedocs.yml0000644000000000000000000000060713615410400013425 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.10.0/RELEASING.md0000644000000000000000000000324013615410400012166 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) * [ ] Start from a freshly cloned repo: ```bash cd /tmp rm -rf humanize git clone https://github.com/python-humanize/humanize cd humanize # Generate translation binaries scripts/generate-translation-binaries.sh ``` - [ ] (Optional) Create a distribution and release on **TestPyPI**: ```bash pip install -U pip build keyring twine rm -rf build dist python -m build twine check --strict dist/* && twine upload --repository testpypi dist/* ``` - [ ] (Optional) Check **test** installation: ```bash pip3 uninstall -y humanize pip3 install -U -i https://test.pypi.org/simple/ humanize --pre python3 -c "import humanize; print(humanize.__version__)" ``` - [ ] Tag with the version number: ```bash git tag -a 2.1.0 -m "Release 2.1.0" ``` - [ ] Create a distribution and release on **live PyPI**: ```bash pip install -U pip build keyring twine rm -rf build dist python -m build twine check --strict dist/* && twine upload --repository pypi dist/* ``` - [ ] Check installation: ```bash pip uninstall -y humanize pip install -U humanize python3 -c "import humanize; print(humanize.__version__)" ``` - [ ] Push tag: ```bash git push --tags ``` - [ ] Edit release draft, adjust text if needed: https://github.com/python-humanize/humanize/releases - [ ] Check next tag is correct, amend if needed - [ ] Publish release humanize-4.10.0/mkdocs.yml0000644000000000000000000000150713615410400012342 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 - 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.10.0/tox.ini0000644000000000000000000000121513615410400011646 0ustar00[tox] requires = tox>=4.2 env_list = docs lint py{py3, 313, 312, 311, 310, 39, 38} [testenv] extras = tests pass_env = FORCE_COLOR set_env = COVERAGE_CORE = sysmon 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 = pre-commit pass_env = PRE_COMMIT_COLOR commands = pre-commit run --all-files --show-diff-on-failure [pytest] addopts = --color=yes --doctest-modules humanize-4.10.0/.github/CONTRIBUTING.md0000644000000000000000000000100213615410400014116 0ustar00# Contributing ## Linting Linting is run on the CI using [pre-commit](https://pre-commit.com/), and can be run locally: ```sh pip install pre-commit pre-commit install # optional: to run when you commit, on just the staged changes pre-commit run --all-files # to run on all files now ``` ## Docstrings Follow [Google style](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings) for docstrings. ## Localization See [README](https://github.com/python-humanize/humanize#localization). humanize-4.10.0/.github/FUNDING.yml0000644000000000000000000000005113615410400013505 0ustar00github: hugovk tidelift: "pypi/humanize" humanize-4.10.0/.github/ISSUE_TEMPLATE.md0000644000000000000000000000067213615410400014406 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.10.0/.github/PULL_REQUEST_TEMPLATE.md0000644000000000000000000000007213615410400015474 0ustar00Fixes # Changes proposed in this pull request: * * * humanize-4.10.0/.github/SECURITY.md0000644000000000000000000000022013615410400013457 0ustar00# Security policy Security reports can be made via [Tidelift](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure. humanize-4.10.0/.github/labels.yml0000644000000000000000000000363613615410400013671 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.10.0/.github/release-drafter.yml0000644000000000000000000000157413615410400015473 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.10.0/.github/renovate.json0000644000000000000000000000074113615410400014414 0ustar00{ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": ["config:base", ":semanticCommitsDisabled"], "labels": ["changelog: skip", "dependencies"], "packageRules": [ { "groupName": "github-actions", "matchManagers": ["github-actions"], "separateMajorMinor": "false" }, { "groupName": "docs/requirements.txt", "matchPaths": ["docs/requirements.txt"] } ], "schedule": ["on the first day of the month"] } humanize-4.10.0/.github/workflows/docs.yml0000644000000000000000000000075613615410400015414 0ustar00name: Docs on: [push, pull_request, workflow_dispatch] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.x" cache: pip cache-dependency-path: tox.ini - name: Install dependencies run: | python -m pip install -U pip python -m pip install -U tox - name: Docs run: tox -e docs humanize-4.10.0/.github/workflows/labels.yml0000644000000000000000000000060513615410400015717 0ustar00name: Sync labels permissions: pull-requests: write on: push: branches: - main paths: - .github/labels.yml workflow_dispatch: jobs: sync: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: micnncim/action-label-syncer@v1 with: prune: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} humanize-4.10.0/.github/workflows/lint.yml0000644000000000000000000000050113615410400015416 0ustar00name: Lint on: [push, pull_request, workflow_dispatch] env: FORCE_COLOR: 1 permissions: contents: read jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.x" - uses: pre-commit/action@v3.0.1 humanize-4.10.0/.github/workflows/release-drafter.yml0000644000000000000000000000210513615410400017517 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: permissions: contents: read jobs: update_release_draft: if: github.repository_owner == 'python-humanize' permissions: # write permission is required to create a GitHub Release contents: write # write permission is required for autolabeler # otherwise, read permission is required at least pull-requests: write runs-on: ubuntu-latest steps: # Drafts your next release notes as pull requests are merged into "main" - uses: release-drafter/release-drafter@v6 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} humanize-4.10.0/.github/workflows/require-pr-label.yml0000644000000000000000000000100513615410400017620 0ustar00name: Require PR label on: pull_request: types: [opened, reopened, labeled, unlabeled, synchronize] jobs: label: runs-on: ubuntu-latest permissions: issues: write pull-requests: write steps: - uses: mheap/github-action-required-labels@v5 with: mode: minimum count: 1 labels: "changelog: Added, changelog: Changed, changelog: Deprecated, changelog: Fixed, changelog: Removed, changelog: Security, changelog: skip" humanize-4.10.0/.github/workflows/test.yml0000644000000000000000000000277213615410400015443 0ustar00name: Test on: [push, pull_request, workflow_dispatch] env: FORCE_COLOR: 1 jobs: test: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: python-version: ["pypy3.10", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] os: [windows-latest, macos-latest, ubuntu-latest] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} allow-prereleases: true cache: pip - name: Install Linux dependencies if: startsWith(matrix.os, 'ubuntu') run: | sudo apt install gettext - name: Install macOS dependencies if: startsWith(matrix.os, 'macos') run: | brew install gettext - name: Install dependencies run: | python -m pip install -U pip python -m pip install -U wheel python -m pip install -U tox - name: Generate translation binaries run: | scripts/generate-translation-binaries.sh - name: Tox tests run: | tox -e py - name: Upload coverage uses: codecov/codecov-action@v3.1.5 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.10.0/docs/filesize.md0000644000000000000000000000004213615410400013414 0ustar00# Filesize ::: humanize.filesize humanize-4.10.0/docs/i18n.md0000644000000000000000000000005213615410400012362 0ustar00# Internationalisation ::: humanize.i18n humanize-4.10.0/docs/index.md0000644000000000000000000000040013615410400012707 0ustar00# humanize Welcome to the humanize API reference. - [Number](number.md) - [Time](time.md) - [Filesize](filesize.md) - [I18n](i18n.md) {% include-markdown "../README.md" start="" end="" comments=false %} humanize-4.10.0/docs/number.md0000644000000000000000000000003613615410400013075 0ustar00# Number ::: humanize.number humanize-4.10.0/docs/requirements.txt0000644000000000000000000000017613615410400014554 0ustar00mkdocs==1.6.0 mkdocs-material mkdocstrings[python]==0.25.1 mkdocs-include-markdown-plugin pygments pymdown-extensions==10.8.1 humanize-4.10.0/docs/time.md0000644000000000000000000000003213615410400012537 0ustar00# Time ::: humanize.time humanize-4.10.0/docs/css/code_select.css0000644000000000000000000000037513615410400015044 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.10.0/scripts/generate-translation-binaries.sh0000755000000000000000000000031413615410400020300 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.10.0/scripts/update-translations.sh0000755000000000000000000000072113615410400016363 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.10.0/src/humanize/__init__.py0000644000000000000000000000160013615410400015051 0ustar00"""Main package for humanize.""" from __future__ import annotations import importlib.metadata from humanize.filesize import naturalsize from humanize.i18n import activate, deactivate, decimal_separator, thousands_separator from humanize.number import ( apnumber, clamp, fractional, intcomma, intword, metric, ordinal, scientific, ) from humanize.time import ( naturaldate, naturalday, naturaldelta, naturaltime, precisedelta, ) __version__ = importlib.metadata.version(__name__) __all__ = [ "__version__", "activate", "apnumber", "clamp", "deactivate", "decimal_separator", "fractional", "intcomma", "intword", "metric", "naturaldate", "naturalday", "naturaldelta", "naturalsize", "naturaltime", "ordinal", "precisedelta", "scientific", "thousands_separator", ] humanize-4.10.0/src/humanize/filesize.py0000644000000000000000000000414413615410400015132 0ustar00"""Bits and bytes related humanization.""" from __future__ import annotations suffixes = { "decimal": (" kB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"), "binary": (" KiB", " MiB", " GiB", " TiB", " PiB", " EiB", " ZiB", " YiB"), "gnu": "KMGTPEZY", } 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) '10000.0 YB' >>> 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" % bytes_ if abs_bytes < base and not gnu: return "%d Bytes" % bytes_ if abs_bytes < base and gnu: return "%dB" % bytes_ for i, s in enumerate(suffix): unit = base ** (i + 2) if abs_bytes < unit: break ret: str = format % (base * bytes_ / unit) + s return ret humanize-4.10.0/src/humanize/i18n.py0000644000000000000000000001122313615410400014073 0ustar00"""Activate, get and deactivate translations.""" from __future__ import annotations import gettext as gettext_module import os.path from threading import local __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 = { "de_DE": ".", "fr_FR": " ", "it_IT": ".", "pt_BR": ".", "hu_HU": " ", } # Mapping of locale to decimal separator _DECIMAL_SEPARATOR = { "de_DE": ",", "it_IT": ",", "pt_BR": ",", "hu_HU": ",", } def _get_default_locale_path() -> str | None: try: if __file__ is None: return None return os.path.join(os.path.dirname(__file__), "locale") except NameError: return None def get_translation() -> gettext_module.NullTranslations: try: return _TRANSLATIONS[_CURRENT.locale] except (AttributeError, KeyError): return _TRANSLATIONS[None] def activate(locale: str, path: str | None = None) -> gettext_module.NullTranslations: """Activate internationalisation. Set `locale` as current locale. Search for locale in directory `path`. Args: locale (str): Language name, e.g. `en_GB`. path (str): Path to search for locales. Returns: dict: Translations. Raises: Exception: If humanize cannot find the locale folder. """ if path is None: path = _get_default_locale_path() if path is None: msg = ( "Humanize cannot determinate the default location of the 'locale' folder. " "You need to pass the path explicitly." ) raise Exception(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. """ try: sep = _THOUSANDS_SEPARATOR[_CURRENT.locale] except (AttributeError, KeyError): sep = "," return sep def decimal_separator() -> str: """Return the decimal separator for a locale, default to dot. Returns: str: Decimal separator. """ try: sep = _DECIMAL_SEPARATOR[_CURRENT.locale] except (AttributeError, KeyError): sep = "." return sep humanize-4.10.0/src/humanize/number.py0000644000000000000000000003756113615410400014621 0ustar00"""Humanizing functions for numbers.""" from __future__ import annotations import math import re import sys from fractions import Fraction from typing import TYPE_CHECKING 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_ if TYPE_CHECKING: if sys.version_info >= (3, 10): from typing import TypeAlias else: from typing_extensions import TypeAlias # This type can be better defined by typing.SupportsInt, typing.SupportsFloat # but that's a Python 3.8 only typing option. NumberOrString: TypeAlias = "float | str" def _format_not_finite(value: float) -> str: """Utility function to handle infinite and nan cases.""" 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. """ try: if not math.isfinite(float(value)): return _format_not_finite(float(value)) value = int(value) except (TypeError, ValueError): return str(value) if gender == "male": t = ( P_("0 (male)", "th"), P_("1 (male)", "st"), P_("2 (male)", "nd"), P_("3 (male)", "rd"), P_("4 (male)", "th"), P_("5 (male)", "th"), P_("6 (male)", "th"), P_("7 (male)", "th"), P_("8 (male)", "th"), P_("9 (male)", "th"), ) else: t = ( P_("0 (female)", "th"), P_("1 (female)", "st"), P_("2 (female)", "nd"), P_("3 (female)", "rd"), P_("4 (female)", "th"), P_("5 (female)", "th"), P_("6 (female)", "th"), P_("7 (female)", "th"), P_("8 (female)", "th"), P_("9 (female)", "th"), ) if value % 100 in (11, 12, 13): # special case return f"{value}{t[0]}" return f"{value}{t[value % 10]}" def intcomma(value: 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. """ 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: orig = "{0:.{1}f}".format(value, ndigits) else: orig = str(value) orig = orig.replace(".", decimal_sep) while True: new = re.sub(r"^(-?\d+)(\d{3})", rf"\g<1>{thousands_sep}\g<2>", orig) if orig == new: return new orig = new powers = [10**x for x in (3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 100)] human_powers = ( NS_("thousand", "thousand"), NS_("million", "million"), NS_("billion", "billion"), NS_("trillion", "trillion"), NS_("quadrillion", "quadrillion"), NS_("quintillion", "quintillion"), NS_("sextillion", "sextillion"), NS_("septillion", "septillion"), NS_("octillion", "octillion"), NS_("nonillion", "nonillion"), NS_("decillion", "decillion"), NS_("googol", "googol"), ) def intword(value: 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", 1200000 becomes "1.2 million" and "1_200_000_000" becomes "1.2 billion". Supports up to decillion (33 digits) and googol (100 digits). Examples: ```pycon >>> intword("100") '100' >>> intword("12400") '12.4 thousand' >>> intword("1000000") '1.0 million' >>> intword(1_200_000_000) '1.2 billion' >>> intword(8100000000000000000000000000000000) '8.1 decillion' >>> intword(None) '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`. """ 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 negative_prefix + str(value) for ordinal_, power in enumerate(powers[1:], 1): if value < power: chopped = value / float(powers[ordinal_ - 1]) powers_difference = powers[ordinal_] / powers[ordinal_ - 1] if float(format % chopped) == powers_difference: chopped = value / float(powers[ordinal_]) singular, plural = human_powers[ordinal_] return ( negative_prefix + " ".join( [format, _ngettext(singular, plural, math.ceil(chopped))] ) ) % chopped singular, plural = human_powers[ordinal_ - 1] return ( negative_prefix + " ".join([format, _ngettext(singular, plural, math.ceil(chopped))]) ) % chopped return negative_prefix + str(value) 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. """ 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 ( _("zero"), _("one"), _("two"), _("three"), _("four"), _("five"), _("six"), _("seven"), _("eight"), _("nine"), )[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. """ try: number = float(value) if not math.isfinite(number): return _format_not_finite(number) except (TypeError, ValueError): return str(value) whole_number = int(number) frac = Fraction(number - whole_number).limit_denominator(1000) numerator = frac.numerator denominator = frac.denominator if whole_number and not numerator and denominator == 1: # this means that an integer was passed in # (or variants of that integer like 1.0000) return f"{whole_number:.0f}" if not whole_number: return f"{numerator:.0f}/{denominator:.0f}" return f"{whole_number:.0f} {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ⁿ. """ exponents = { "0": "⁰", "1": "¹", "2": "²", "3": "³", "4": "⁴", "5": "⁵", "6": "⁶", "7": "⁷", "8": "⁸", "9": "⁹", "-": "⁻", } try: value = float(value) if not math.isfinite(value): return _format_not_finite(value) except (ValueError, TypeError): return str(value) fmt = f"{{:.{str(int(precision))}e}}" n = fmt.format(value) part1, part2 = n.split("e") # Remove redundant leading '+' or '0's (preserving the last '0' for 10⁰). part2 = re.sub(r"^\+?(\-?)0*(.+)$", r"\1\2", part2) new_part2 = [] for char in part2: new_part2.append(exponents[char]) final_str = part1 + " x 10" + "".join(new_part2) return final_str 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. """ 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: """ 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 value /= 10 ** (exponent // 3 * 3) if exponent >= 3: ordinal_ = "kMGTPEZYRQ"[exponent // 3 - 1] elif exponent < 0: ordinal_ = "mμnpfazyrq"[(-exponent - 1) // 3] else: ordinal_ = "" value_ = format(value, ".%if" % max(0, precision - (exponent % 3) - 1)) if not (unit or ordinal_) or unit in ("°", "′", "″"): space = "" else: space = " " return f"{value_}{space}{ordinal_}{unit}" humanize-4.10.0/src/humanize/py.typed0000644000000000000000000000000013615410400014430 0ustar00humanize-4.10.0/src/humanize/time.py0000644000000000000000000004474513615410400014271 0ustar00"""Time humanizing functions. These are largely borrowed from Django's `contrib.humanize`. """ from __future__ import annotations import collections.abc import datetime as dt import math import typing from enum import Enum from functools import total_ordering from typing import Any from .i18n import _gettext as _ from .i18n import _ngettext from .number import intcomma __all__ = [ "naturaldelta", "naturaltime", "naturalday", "naturaldate", "precisedelta", ] @total_ordering class Unit(Enum): MICROSECONDS = 0 MILLISECONDS = 1 SECONDS = 2 MINUTES = 3 HOURS = 4 DAYS = 5 MONTHS = 6 YEARS = 7 def __lt__(self, other: typing.Any) -> typing.Any: if self.__class__ is other.__class__: return self.value < other.value return NotImplemented def _now() -> dt.datetime: 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: typing.Any, *, now: dt.datetime | None = None ) -> tuple[typing.Any, typing.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)`. """ if not now: now = _now() if isinstance(value, dt.datetime): date = value delta = now - value elif isinstance(value, dt.timedelta): date = now - value delta = value else: try: value = int(value) delta = dt.timedelta(seconds=value) date = now - delta except (ValueError, TypeError): return None, value return date, _abs_timedelta(delta) def naturaldelta( value: 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. 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:: import datetime as dt from dateutil.tz import gettz berlin = gettz("Europe/Berlin") now = dt.datetime.now(tz=berlin) later = now + dt.timedelta(minutes=30) assert naturaldelta(later - now) == "30 minutes" """ tmp = Unit[minimum_unit.upper()] if tmp not in (Unit.SECONDS, Unit.MILLISECONDS, Unit.MICROSECONDS): 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 = int(days // 30.5) if not years 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 < 120: return _("a minute") if 120 <= delta.seconds < 3600: minutes = delta.seconds // 60 return _ngettext("%d minute", "%d minutes", minutes) % minutes if 3600 <= delta.seconds < 3600 * 2: return _("an hour") if 3600 < delta.seconds: hours = delta.seconds // 3600 return _ngettext("%d hour", "%d hours", hours) % hours elif years == 0: if days == 1: return _("a day") if not use_months: return _ngettext("%d day", "%d days", days) % days if not num_months: return _ngettext("%d day", "%d days", days) % days if num_months == 1: return _("a month") return _ngettext("%d month", "%d months", num_months) % num_months elif years == 1: if not num_months and not days: return _("a year") if not num_months: return _ngettext("1 year, %d day", "1 year, %d days", days) % days if use_months: if num_months == 1: return _("1 year, 1 month") 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. 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. """ 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 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`. """ try: 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 - dt.date.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.""" try: 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 - dt.date.today()) if delta.days >= 5 * 365 / 12: return naturalday(value, "%b %d %Y") return naturalday(value) def _quotient_and_remainder( value: float, divisor: float, unit: Unit, minimum_unit: Unit, suppress: collections.abc.Iterable[Unit], ) -> tuple[float, float]: """Divide `value` by `divisor` returning the quotient and remainder. If `unit` is `minimum_unit`, makes the quotient a float number and the remainder will be zero. The rational is that if `unit` is the unit of the quotient, we cannot represent the remainder because it would require a unit smaller than the `minimum_unit`. >>> from humanize.time import _quotient_and_remainder, Unit >>> _quotient_and_remainder(36, 24, Unit.DAYS, Unit.DAYS, []) (1.5, 0) If unit is in `suppress`, the quotient will be zero and the remainder will be the initial value. The idea is that if we cannot use `unit`, we are forced to use a lower unit so we cannot do the division. >>> _quotient_and_remainder(36, 24, Unit.DAYS, Unit.HOURS, [Unit.DAYS]) (0, 36) In other case return quotient and remainder as `divmod` would do it. >>> _quotient_and_remainder(36, 24, Unit.DAYS, Unit.HOURS, []) (1, 12) """ if unit == minimum_unit: return value / divisor, 0 if unit in suppress: return 0, value return divmod(value, divisor) def _carry( value1: float, value2: float, ratio: float, unit: Unit, min_unit: Unit, suppress: typing.Iterable[Unit], ) -> tuple[float, float]: """Return a tuple with two values. If the unit is in `suppress`, multiply `value1` by `ratio` and add it to `value2` (carry to right). The idea is that if we cannot represent `value1` we need to represent it in a lower unit. >>> from humanize.time import _carry, Unit >>> _carry(2, 6, 24, Unit.DAYS, Unit.SECONDS, [Unit.DAYS]) (0, 54) If the unit is the minimum unit, `value2` is divided by `ratio` and added to `value1` (carry to left). We assume that `value2` has a lower unit so we need to carry it to `value1`. >>> _carry(2, 6, 24, Unit.DAYS, Unit.DAYS, []) (2.25, 0) Otherwise, just return the same input: >>> _carry(2, 6, 24, Unit.DAYS, Unit.SECONDS, []) (2, 6) """ if unit == min_unit: return value1 + value2 / ratio, 0 if unit in suppress: return 0, value2 + value1 * ratio return value1, value2 def _suitable_minimum_unit(min_unit: Unit, suppress: typing.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: typing.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 | int | None, minimum_unit: str = "seconds", suppress: typing.Iterable[str] = (), format: str = "%0.2f", ) -> str: """Return a precise representation of a timedelta. ```pycon >>> import datetime as dt >>> from humanize.time import precisedelta >>> delta = dt.timedelta(seconds=3633, days=2, microseconds=123000) >>> precisedelta(delta) '2 days, 1 hour and 33.12 seconds' ``` A custom `format` can be specified to control how the fractional part is represented: ```pycon >>> precisedelta(delta, format="%0.4f") '2 days, 1 hour and 33.1230 seconds' ``` Instead, the `minimum_unit` can be changed to have a better resolution; the function will still readjust the unit to use the greatest of the units that does not lose precision. For example setting microseconds but still representing the date with milliseconds: ```pycon >>> precisedelta(delta, minimum_unit="microseconds") '2 days, 1 hour, 33 seconds and 123 milliseconds' ``` If desired, some units can be suppressed: you will not see them represented and the time of the other units will be adjusted to keep representing the same timedelta: ```pycon >>> precisedelta(delta, suppress=['days']) '49 hours and 33.12 seconds' ``` Note that microseconds precision is lost if the seconds and all the units below are suppressed: ```pycon >>> delta = dt.timedelta(seconds=90, microseconds=100) >>> precisedelta(delta, suppress=['seconds', 'milliseconds', 'microseconds']) '1.50 minutes' ``` If the delta is too small to be represented with the minimum unit, a value of zero will be returned: ```pycon >>> delta = dt.timedelta(seconds=1) >>> precisedelta(delta, minimum_unit="minutes") '0.02 minutes' >>> delta = dt.timedelta(seconds=0.1) >>> precisedelta(delta, minimum_unit="minutes") '0 minutes' ``` """ date, delta = _date_and_delta(value) if date is None: return str(value) suppress_set = {Unit[s.upper()] for s in suppress} # Find a suitable minimum unit (it can be greater the one that the # user gave us if it is suppressed). min_unit = Unit[minimum_unit.upper()] min_unit = _suitable_minimum_unit(min_unit, suppress_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 MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, MONTHS, YEARS = list( Unit ) # Given DAYS compute YEARS and the remainder of DAYS as follows: # if YEARS is the minimum unit, we cannot use DAYS so # we will use a float for YEARS and 0 for DAYS: # years, days = years/days, 0 # # if YEARS is suppressed, use DAYS: # years, days = 0, days # # otherwise: # years, days = divmod(years, days) # # The same applies for months, hours, minutes and milliseconds below years, days = _quotient_and_remainder(days, 365, YEARS, min_unit, suppress_set) months, days = _quotient_and_remainder(days, 30.5, MONTHS, min_unit, suppress_set) # If DAYS is not in suppress, we can represent the days but # if it is a suppressed unit, we need to carry it to a lower unit, # seconds in this case. # # The same applies for secs and usecs below days, secs = _carry(days, secs, 24 * 3600, DAYS, min_unit, suppress_set) hours, secs = _quotient_and_remainder(secs, 3600, HOURS, min_unit, suppress_set) minutes, secs = _quotient_and_remainder(secs, 60, MINUTES, min_unit, suppress_set) secs, usecs = _carry(secs, usecs, 1e6, SECONDS, min_unit, suppress_set) msecs, usecs = _quotient_and_remainder( usecs, 1000, MILLISECONDS, min_unit, suppress_set ) # if _unused != 0 we had lost some precision usecs, _unused = _carry(usecs, 0, 1, MICROSECONDS, min_unit, suppress_set) fmts = [ ("%d year", "%d years", years), ("%d month", "%d months", months), ("%d day", "%d days", days), ("%d hour", "%d hours", hours), ("%d minute", "%d minutes", minutes), ("%d second", "%d seconds", secs), ("%d millisecond", "%d milliseconds", msecs), ("%d microsecond", "%d microseconds", usecs), ] texts: 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: 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) humanize-4.10.0/src/humanize/locale/ar/LC_MESSAGES/humanize.mo0000644000000000000000000000762213615410400020555 0ustar00D<a\ ?Tg|      "  0 > J X d r ~          )08H\bg lz  ! % 7 = C L ^ b l mq   C ?S        " ) 2 -9 -g         ( 1 < E L W ` g r y       !4)=g-p-%%!( 8 CN!W y5<>+=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: 2022-04-13 17:28+0300 Last-Translator: AYMEN Mohammed Language-Team: Arabic Language: Arabic (عربي) 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 اشهرسنة وشهرثانيةثانيثالثةثالثرابعةرابعخامسةخامسسادسةسادسسابعةسابعثامنةثامنتاسعةتاسعيومدقيقةلحظةشهرثانيةسنةساعةمليارملياراتديليونديليوناتثمانيةخمسةاربعةجوجلجوجلاتمليونملايينتسعةنونليوننونليوناتالاناوكتيليوناوكتيليوناتواحدكوادريليونكوادريليوناتكوينتيليونكوينتيليوناتسبتيليونسبتيليوناتسبعةسكستليونسكستليوناتستةالفالافثلاثةاليومغداًتريليونتريليوناتاثنينأمسصفرhumanize-4.10.0/src/humanize/locale/ar/LC_MESSAGES/humanize.po0000644000000000000000000001571513615410400020562 0ustar00# Arabic (عربي) translations for humanize package. # Copyright (C) 2022. # This file is distributed under the same license as the humanize package. # AYMEN Mohammed , 2022. # 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: 2022-04-13 17:28+0300\n" "Last-Translator: AYMEN Mohammed \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=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 "ثانية" #: 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] "1 سنة ، %d يوم" msgstr[1] "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] "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.10.0/src/humanize/locale/bn_BD/LC_MESSAGES/humanize.mo0000644000000000000000000000777113615410400021124 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.10.0/src/humanize/locale/bn_BD/LC_MESSAGES/humanize.po0000644000000000000000000001651213615410400021120 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.10.0/src/humanize/locale/ca_ES/LC_MESSAGES/humanize.mo0000644000000000000000000000642113615410400021121 0ustar00C4YL$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.10.0/src/humanize/locale/ca_ES/LC_MESSAGES/humanize.po0000644000000000000000000001454013615410400021125 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.10.0/src/humanize/locale/da_DK/LC_MESSAGES/humanize.mo0000644000000000000000000000662213615410400021114 0ustar00D<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.10.0/src/humanize/locale/da_DK/LC_MESSAGES/humanize.po0000644000000000000000000001466013615410400021120 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.10.0/src/humanize/locale/de_DE/LC_MESSAGES/humanize.mo0000644000000000000000000000643413615410400021113 0ustar00B,Y<   , : F T`"          ( 4 B N \ h v  %)=AYq pd 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.10.0/src/humanize/locale/de_DE/LC_MESSAGES/humanize.po0000644000000000000000000001503313615410400021111 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.10.0/src/humanize/locale/el_GR/LC_MESSAGES/humanize.mo0000644000000000000000000000674713615410400021152 0ustar00.=&9N_ f p|"*05 :HX]qu , 0:?76n KG &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.10.0/src/humanize/locale/el_GR/LC_MESSAGES/humanize.po0000644000000000000000000002121313615410400021136 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.10.0/src/humanize/locale/eo/LC_MESSAGES/humanize.mo0000644000000000000000000000642113615410400020552 0ustar00C4YL-> 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.10.0/src/humanize/locale/eo/LC_MESSAGES/humanize.po0000644000000000000000000001462413615410400020561 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.10.0/src/humanize/locale/es_ES/LC_MESSAGES/humanize.mo0000644000000000000000000000661213615410400021147 0ustar00D<a\ ?Tg|      "  0 > J X d r ~          )08H\bg lz  ! % 7 = C L ^ b l Mq    ! 6 F ] n v ~     " !                    & 1 8 C K T e z            . 4 K P X ] a i |   5<>+=6D94%2#)" !, 3:A 1*-;'/&0(@8B. C7 $ ?%d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: Report-Msgid-Bugs-To: PO-Revision-Date: 2020-03-31 21:08+0200 Last-Translator: Álvaro Mondéjar Language-Team: Language: es_ES MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Poedit 2.3 %d día%d días%d hora%d horas%d microsegundo%d microsegundos%d milisegundo%d milisegundos%d minuto%d minutos%d mes%d meses%d segundo%d segundos%d año%d añoshace %s%s y %sen %sªºªº1 año y %d día1 año y %d días1 año y %d mes1 año y %d meses1 año y 1 mesªºªºªºªºªºªºªºªºun díaun minutoun momentoun mesun segundoun añouna horabillónbillonesdecillóndecillonesochocincocuatrogúgolgúgolmillónmillonesnuevenonillónnonillonesahoraoctillónoctillonesunoquatrillónquatrillonesquintillónquintillonesseptillónseptillonessietesextillónsextillonesseismilmiltreshoymañanatrillóntrillonesdosayercerohumanize-4.10.0/src/humanize/locale/es_ES/LC_MESSAGES/humanize.po0000644000000000000000000001471113615410400021151 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] "billón" msgstr[1] "billones" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "trillón" msgstr[1] "trillones" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "quatrillón" msgstr[1] "quatrillones" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "quintillón" msgstr[1] "quintillones" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sextillón" msgstr[1] "sextillones" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "septillón" msgstr[1] "septillones" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "octillón" msgstr[1] "octillones" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "nonillón" msgstr[1] "nonillones" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "decillón" msgstr[1] "decillones" #: 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.10.0/src/humanize/locale/eu/LC_MESSAGES/humanize.mo0000644000000000000000000000603213615410400020556 0ustar00> SHIXi     , :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=UTF-8 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.10.0/src/humanize/locale/eu/LC_MESSAGES/humanize.po0000644000000000000000000001457213615410400020571 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.10.0/src/humanize/locale/fa_IR/LC_MESSAGES/humanize.mo0000644000000000000000000000765213615410400021136 0ustar00D<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.10.0/src/humanize/locale/fa_IR/LC_MESSAGES/humanize.po0000644000000000000000000001573313615410400021140 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.10.0/src/humanize/locale/fi_FI/LC_MESSAGES/humanize.mo0000644000000000000000000000645113615410400021126 0ustar00B,Y<   , : F T`"          ( 4 B N \ h v  %)=AYq UI a t         ) * K _ a c e g i k m o q s u w y { }              " : > V [ w          # :"?%7234'B=9 .A& - < 60,> )*@(/5#!8;1$ +%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: humanize Report-Msgid-Bugs-To: PO-Revision-Date: 2017-03-02 11:26+0200 Last-Translator: Ville Skyttä Language-Team: Finnish Language: fi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Poedit 1.8.12 %d päivä%d päivää%d tunti%d tuntia%d minuutti%d minuuttia%d kuukausi%d kuukautta%d sekunti%d sekuntia%d vuosi%d vuotta%s sitten%s ja %s%s tästä....1 vuosi, %d päivä1 vuosi, %d päivää1 vuosi, %d kuukausi1 vuosi, %d kuukautta1 vuosi, 1 kuukausi................päiväminuuttihetkikuukausisekuntivuosituntimiljardiamiljardiadekiljoonaadekiljoonaakahdeksanviisineljägoogolgoogolmiljoonaamiljoonaayhdeksännoniljoonaanoniljoonaanytoktiljoonaaoktiljoonaayksikvadriljoonaakvadriljoonaakvintiljoonaakvintiljoonaaseptiljoonaaseptiljoonaaseitsemänsekstiljoonaasekstiljoonaakuusituhattatuhattakolmetänäänhuomennabiljoonaabiljoonaakaksieilennollahumanize-4.10.0/src/humanize/locale/fi_FI/LC_MESSAGES/humanize.po0000644000000000000000000001506013615410400021125 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.10.0/src/humanize/locale/fr_FR/LC_MESSAGES/humanize.mo0000644000000000000000000000512613615410400021146 0ustar007I & 0 < J V dp"         * 8 D R ^ l x   $x)    " * , . 3 "6 !Y {                          ! $ ) - 3 ? F K P .4/# 6, 57! * &(+$ )" 30'-1%2%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbillioneightfivefourninenowonesevensixthreetodaytomorrowtwoyesterdayzeroProject-Id-Version: PROJECT VERSION Report-Msgid-Bugs-To: PO-Revision-Date: 2013-06-22 08:52+0100 Last-Translator: Olivier Cortès Language-Team: fr_FR Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); Generated-By: Babel 0.9.6 X-Generator: Poedit 1.5.5 %d jour%d jours%d heure%d heures%d minute%d minutes%d mois%d mois%d seconde%d secondes%d an%d ansil y a %s%s et %sdans %seeèreerun an et %d jourun an et %d joursun an et %d moisun an et %d moisun an et un moiseeeeeeeeeeeeeeeeun jourune minuteun instantun moisune secondeun anune heuremilliardmilliardhuitcinqquatreneufmaintenantunseptsixtroisaujourd'huidemaindeuxhierzérohumanize-4.10.0/src/humanize/locale/fr_FR/LC_MESSAGES/humanize.po0000644000000000000000000001540113615410400021146 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: 2023-01-08 19:22+0200\n" "PO-Revision-Date: 2013-06-22 08:52+0100\n" "Last-Translator: Olivier Cortès \n" "Language-Team: fr_FR \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "Generated-By: Babel 0.9.6\n" "X-Generator: Poedit 1.5.5\n" #: src/humanize/number.py: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:178 msgid "thousand" msgid_plural "thousand" msgstr[0] "" msgstr[1] "" #: src/humanize/number.py:179 #, fuzzy 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 billiard" msgstr[1] "%(value)s billiard" #: src/humanize/number.py:183 #, fuzzy msgid "quintillion" msgid_plural "quintillion" msgstr[0] "%(value)s trillion" msgstr[1] "%(value)s trillion" #: src/humanize/number.py:184 #, fuzzy msgid "sextillion" msgid_plural "sextillion" msgstr[0] "%(value)s trilliard" msgstr[1] "%(value)s trilliard" #: src/humanize/number.py:185 #, fuzzy msgid "septillion" msgid_plural "septillion" msgstr[0] "%(value)s quatrillion" msgstr[1] "%(value)s quatrillion" #: src/humanize/number.py:186 #, fuzzy msgid "octillion" msgid_plural "octillion" msgstr[0] "%(value)s quadrilliard" msgstr[1] "%(value)s quadrilliard" #: src/humanize/number.py:187 #, fuzzy msgid "nonillion" msgid_plural "nonillion" msgstr[0] "%(value)s quintillion" msgstr[1] "%(value)s quintillion" #: src/humanize/number.py:188 #, fuzzy msgid "decillion" msgid_plural "decillion" msgstr[0] "%(value)s quintilliard" msgstr[1] "%(value)s quintilliard" #: 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 "zéro" #: src/humanize/number.py:302 msgid "one" msgstr "un" #: src/humanize/number.py:303 msgid "two" msgstr "deux" #: src/humanize/number.py:304 msgid "three" msgstr "trois" #: src/humanize/number.py:305 msgid "four" msgstr "quatre" #: src/humanize/number.py:306 msgid "five" msgstr "cinq" #: src/humanize/number.py:307 msgid "six" msgstr "six" #: src/humanize/number.py:308 msgid "seven" msgstr "sept" #: src/humanize/number.py:309 msgid "eight" msgstr "huit" #: src/humanize/number.py:310 msgid "nine" msgstr "neuf" #: src/humanize/time.py:152 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microseconde" msgstr[1] "%d microsecondes" #: src/humanize/time.py:161 #, fuzzy, python-format msgid "%d millisecond" msgid_plural "%d milliseconds" msgstr[0] "%d milliseconde" msgstr[1] "%d millisecondes" #: src/humanize/time.py:164 src/humanize/time.py:259 msgid "a moment" msgstr "un instant" #: src/humanize/time.py:167 msgid "a second" msgstr "une seconde" #: src/humanize/time.py:170 #, python-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d seconde" msgstr[1] "%d secondes" #: src/humanize/time.py:173 msgid "a minute" msgstr "une minute" #: src/humanize/time.py:177 #, python-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d minute" msgstr[1] "%d minutes" #: src/humanize/time.py:180 msgid "an hour" msgstr "une heure" #: src/humanize/time.py:184 #, python-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d heure" msgstr[1] "%d heures" #: src/humanize/time.py:188 msgid "a day" msgstr "un jour" #: src/humanize/time.py:191 src/humanize/time.py:194 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d jour" msgstr[1] "%d jours" #: src/humanize/time.py:197 msgid "a month" msgstr "un mois" #: src/humanize/time.py:199 #, python-format msgid "%d month" msgid_plural "%d months" msgstr[0] "%d mois" msgstr[1] "%d mois" #: src/humanize/time.py:203 msgid "a year" msgstr "un an" #: 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 an et %d jour" msgstr[1] "un an et %d jours" #: src/humanize/time.py:210 msgid "1 year, 1 month" msgstr "un an et un mois" #: src/humanize/time.py:213 #, 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:219 #, python-format msgid "%d year" msgid_plural "%d years" msgstr[0] "%d an" msgstr[1] "%d ans" #: src/humanize/time.py:256 #, python-format msgid "%s from now" msgstr "dans %s" #: src/humanize/time.py:256 #, python-format msgid "%s ago" msgstr "il y a %s" #: src/humanize/time.py:260 msgid "now" msgstr "maintenant" #: src/humanize/time.py:284 msgid "today" msgstr "aujourd'hui" #: src/humanize/time.py:287 msgid "tomorrow" msgstr "demain" #: src/humanize/time.py:290 msgid "yesterday" msgstr "hier" #: src/humanize/time.py:600 #, python-format msgid "%s and %s" msgstr "%s et %s" humanize-4.10.0/src/humanize/locale/he_IL/LC_MESSAGES/humanize.mo0000644000000000000000000000743413615410400021134 0ustar00D<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.10.0/src/humanize/locale/he_IL/LC_MESSAGES/humanize.po0000644000000000000000000001546113615410400021136 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.10.0/src/humanize/locale/hu_HU/LC_MESSAGES/humanize.mo0000644000000000000000000000641613615410400021163 0ustar00B,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.10.0/src/humanize/locale/hu_HU/LC_MESSAGES/humanize.po0000644000000000000000000001500613615410400021161 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.10.0/src/humanize/locale/id_ID/LC_MESSAGES/humanize.mo0000644000000000000000000000567513615410400021131 0ustar00A$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=UTF-8 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.10.0/src/humanize/locale/id_ID/LC_MESSAGES/humanize.po0000644000000000000000000001366013615410400021125 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.10.0/src/humanize/locale/it_IT/LC_MESSAGES/humanize.mo0000644000000000000000000000631213615410400021156 0ustar00B,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.10.0/src/humanize/locale/it_IT/LC_MESSAGES/humanize.po0000644000000000000000000001470313615410400021164 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.10.0/src/humanize/locale/ja_JP/LC_MESSAGES/humanize.mo0000644000000000000000000000463113615410400021133 0ustar004G\xy     "."Mp              * 6 DPV_gpw aIOX^gmsy        # * 1 6 ; C H M U Y ] a h l p t x |     " 2'$4! & %-,*0 )# (+.1 /3%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea montha seconda yearan houreightfivefourmillionmillionnineonesevensixthreetodaytomorrowtrilliontrilliontwoyesterdayProject-Id-Version: humanize Report-Msgid-Bugs-To: PO-Revision-Date: 2018-01-22 10:48+0900 Last-Translator: Kan Torii Language-Team: Japanese Language: ja MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; Generated-By: Babel 0.9.6 X-Generator: Poedit 2.0.6 %d日%d時間%d分%dヶ月%d秒%d年%s前%s後番目番目番目番目1年 %d日1年 %dヶ月1年 1ヶ月番目番目番目番目番目番目番目番目番目番目番目番目番目番目番目番目1日1分1ヶ月1秒1年1時間八五四百万九一七六三本日明日兆二昨日humanize-4.10.0/src/humanize/locale/ja_JP/LC_MESSAGES/humanize.po0000644000000000000000000001374213615410400021141 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.10.0/src/humanize/locale/ko_KR/LC_MESSAGES/humanize.mo0000644000000000000000000000374013615410400021155 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.10.0/src/humanize/locale/ko_KR/LC_MESSAGES/humanize.po0000644000000000000000000001556213615410400021165 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.10.0/src/humanize/locale/nb/LC_MESSAGES/humanize.mo0000644000000000000000000000670113615410400020547 0ustar00D<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.10.0/src/humanize/locale/nb/LC_MESSAGES/humanize.po0000644000000000000000000001477413615410400020563 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.10.0/src/humanize/locale/nl_NL/LC_MESSAGES/humanize.mo0000644000000000000000000000627213615410400021155 0ustar00A$Y,    * 6 DP"o           $ 2 > L X frx -1Iaw} g9 I W l          #  % ( + . 1 4 7 : = @ C F I L O R U ] h s }             ( . > P h n         :">%7234'A<9 .@& - ; 60,= )*?(/5#!81$ +%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: PROJECT VERSION Report-Msgid-Bugs-To: PO-Revision-Date: 2015-03-25 21:08+0100 Last-Translator: Martin van Wingerden Language-Team: nl_NL Language: nl_NL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Generated-By: Babel 0.9.6 X-Generator: Poedit 1.7.5 %d dag%d dagen%d uur%d uur%d minuut%d minuten%d maand%d maanden%d seconde%d seconden%d jaar%d jaar%s geleden%s en %sover %sdedesteste1 jaar, %d dag1 jaar, %d dagen1 jaar, %d maand1 jaar, %d maanden1 jaar, 1 maanddedededededededededededededededeeen dageen minuuteen momenteen maandeen secondeeen jaareen uurmiljardmiljardquintiljardquintiljardachtvijfviergoogolgoogolmiljoenmiljoennegenquintiljoenquintiljoennuquadriljardquadriljardéénbiljardbiljardtriljoentriljoenquadriljoenquadriljoenzeventriljardtriljardzesdrievandaagmorgenbiljoenbiljoentweegisterennulhumanize-4.10.0/src/humanize/locale/nl_NL/LC_MESSAGES/humanize.po0000644000000000000000000001472313615410400021160 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.10.0/src/humanize/locale/pl_PL/LC_MESSAGES/humanize.mo0000644000000000000000000000725113615410400021157 0ustar00D<a\ ?Tg|      "  0 > J X d r ~          )08H\bg lz  ! % 7 = C L ^ b l tq   . +M y %          , :C ~                         ' & , 3 : Q j $u  '    $+2MUnsy5<>+=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.10.0/src/humanize/locale/pl_PL/LC_MESSAGES/humanize.po0000644000000000000000000001620213615410400021156 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.10.0/src/humanize/locale/pt_BR/LC_MESSAGES/humanize.mo0000644000000000000000000000616013615410400021155 0ustar00A$Y,    * 6 DP"o           $ 2 > L X frx -1Iaw} $   + < S b i q w z }                       & 1 8 A Q e j p w            6 ; A F N ` e k :">%7234'A<9 .@& - ; 60,= )*?(/5#!81$ +%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: Report-Msgid-Bugs-To: PO-Revision-Date: 2016-06-15 15:58-0300 Last-Translator: Language-Team: Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); X-Generator: Poedit 1.8.5 %d dia%d dias%d hora%d horas%d minuto%d minutos%d mês%d meses%d segundo%d segundos%d ano%d anoshá %s%s e %sem %sªºªº1 ano e %d dia1 ano e %d dias1 ano e %d mês1 ano e %d meses1 ano e 1 mêsªºªºªºªºªºªºªºªºum diaum minutoum momentoum mêsum segundoum anouma horabilhãobilhãodecilhãodecilhãooitocincoquatroundecilhãoundecilhãomilhãomilhãonovenonilhãononilhãoagoraoctilhãooctilhãoumquatrilhãoquatrilhãoquintilhãoquintilhãoseptilhãoseptilhãosetesextilhãosextilhãoseistrêshojeamanhãtrilhãotrilhãodoisontemzerohumanize-4.10.0/src/humanize/locale/pt_BR/LC_MESSAGES/humanize.po0000644000000000000000000001460313615410400021161 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: 2016-06-15 15:58-0300\n" "Last-Translator: \n" "Language-Team: \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 1.8.5\n" #: src/humanize/number.py: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] "bilhão" msgstr[1] "bilhão" #: src/humanize/number.py:181 msgid "trillion" msgid_plural "trillion" msgstr[0] "trilhão" msgstr[1] "trilhão" #: src/humanize/number.py:182 msgid "quadrillion" msgid_plural "quadrillion" msgstr[0] "quatrilhão" msgstr[1] "quatrilhão" #: src/humanize/number.py:183 msgid "quintillion" msgid_plural "quintillion" msgstr[0] "quintilhão" msgstr[1] "quintilhão" #: src/humanize/number.py:184 msgid "sextillion" msgid_plural "sextillion" msgstr[0] "sextilhão" msgstr[1] "sextilhão" #: src/humanize/number.py:185 msgid "septillion" msgid_plural "septillion" msgstr[0] "septilhão" msgstr[1] "septilhão" #: src/humanize/number.py:186 msgid "octillion" msgid_plural "octillion" msgstr[0] "octilhão" msgstr[1] "octilhão" #: src/humanize/number.py:187 msgid "nonillion" msgid_plural "nonillion" msgstr[0] "nonilhão" msgstr[1] "nonilhão" #: src/humanize/number.py:188 msgid "decillion" msgid_plural "decillion" msgstr[0] "decilhão" msgstr[1] "decilhão" #: src/humanize/number.py:189 msgid "googol" msgid_plural "googol" msgstr[0] "undecilhão" msgstr[1] "undecilhã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 #, fuzzy, python-format msgid "%d microsecond" msgid_plural "%d microseconds" msgstr[0] "%d microssegundo" msgstr[1] "%d microssegundos" #: src/humanize/time.py:161 #, fuzzy, 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 "em %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.10.0/src/humanize/locale/pt_PT/LC_MESSAGES/humanize.mo0000644000000000000000000000651313615410400021177 0ustar00C4YL$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.10.0/src/humanize/locale/pt_PT/LC_MESSAGES/humanize.po0000644000000000000000000001465613615410400021211 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.10.0/src/humanize/locale/ru_RU/LC_MESSAGES/humanize.mo0000644000000000000000000001067213615410400021206 0ustar00D<a\ ?Tg|      "  0 > J X d r ~          )08H\bg lz  ! % 7 = C L ^ b l q !8 #Z Q~ Q -" /P 3       ? MM                    ,7FM8T8  &2 C>P >JJ/DzJ $CJ Y8f 5<>+=6D94%2#)" !, 3:A 1*-;'/&0(@8B. C7 $ ?%d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: PROJECT VERSION Report-Msgid-Bugs-To: PO-Revision-Date: 2014-03-24 20:32+0300 Last-Translator: Sergey Prokhorov Language-Team: ru_RU Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); Generated-By: Babel 0.9.6 X-Generator: Poedit 1.5.4 %d день%d дня%d дней%d час%d часа%d часов%d микросекунда%d микросекунды%d микросекунд%d миллисекунда%d миллисекунды%d миллисекунд%d минута%d минуты%d минут%d месяц%d месяца%d месяцев%d секунда%d секунды%d секунд%d год%d года%d лет%s назад%s и %sчерез %sойойыйый1 год, %d день1 год, %d дня1 год, %d дней1 год, %d месяц1 год, %d месяца1 год, %d месяцев1 год, 1 месяцойойийийыйыйыйыйойойойойойойыйыйденьминутутолько чтомесяцсекундугодчасмиллиардмиллиардамиллиардовдецилиондецилионадецилионоввосемьпятьчетырегоголгоголагоголовмиллионмиллионамиллионовдевятьнониллионнониллионанониллионовсейчасоктиллионоктиллионаоктиллионоводинквадриллионквадриллионаквадриллионовквинтиллионквинтиллионаквинтиллионовсептиллионсептиллионасептиллионовсемьсикстиллионсикстиллионасикстиллионовшестьтысячатысячитысячтрисегоднязавтратриллионтриллионатриллионовдвавчеранольhumanize-4.10.0/src/humanize/locale/ru_RU/LC_MESSAGES/humanize.po0000644000000000000000000001735113615410400021212 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.10.0/src/humanize/locale/sk_SK/LC_MESSAGES/humanize.mo0000644000000000000000000000672413615410400021167 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.10.0/src/humanize/locale/sk_SK/LC_MESSAGES/humanize.po0000644000000000000000000001602313615410400021163 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.10.0/src/humanize/locale/sl_SI/LC_MESSAGES/humanize.mo0000644000000000000000000000761313615410400021164 0ustar00D<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.10.0/src/humanize/locale/sl_SI/LC_MESSAGES/humanize.po0000644000000000000000000001671113615410400021166 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.10.0/src/humanize/locale/sv_SE/LC_MESSAGES/humanize.mo0000644000000000000000000000657013615410400021173 0ustar00D<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.10.0/src/humanize/locale/sv_SE/LC_MESSAGES/humanize.po0000644000000000000000000001463113615410400021173 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.10.0/src/humanize/locale/tlh/LC_MESSAGES/humanize.mo0000644000000000000000000000555313615410400020743 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.10.0/src/humanize/locale/tlh/LC_MESSAGES/humanize.po0000644000000000000000000001443213615410400020742 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.10.0/src/humanize/locale/tr_TR/LC_MESSAGES/humanize.mo0000644000000000000000000000660113615410400021201 0ustar00D<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.10.0/src/humanize/locale/tr_TR/LC_MESSAGES/humanize.po0000644000000000000000000001523713615410400021211 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.10.0/src/humanize/locale/uk_UA/LC_MESSAGES/humanize.mo0000644000000000000000000001013413615410400021147 0ustar00B,Y<   , : F T`"          ( 4 B N \ h v  %)=AYq o!c - 3 1 3 #M q      ? O : S X ] b g l q v {             2 >5 t  " 2 > 9>DJDDaJh $ 8A HS:"?%7234'B=9 .A& - < 60,> )*@(/5#!8;1$ +%d day%d days%d hour%d hours%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: PROJECT VERSION Report-Msgid-Bugs-To: PO-Revision-Date: Last-Translator: TL Language-Team: uk_UA Language: uk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); Generated-By: X-Generator: %d день%d дня%d днів%d година%d години%d годин%d хвилина%d хвилини%d хвилин%d місяць%d місяця%d місяців%d секунда%d секунди%d секунд%d рік%d роки%d років%s назад%s й %sчерез %sийийийий1 рік, %d день1 рік, %d дня1 рік, %d днів1 рік, %d місяць1 рік, %d місяця1 рік, %d місяців1 рік, 1 місяцьийийійійийийийийийийийийийийийийденьхвилинау цей моментмісяцьсекундарікгодинамільярдмільярдамільярдівдецильйондецильйонадецильйоніввісімп'ятьчотиригуголгуглагуглівмільйонмільйонамільйонівдев'ятьнонильйоннонильйонанонильйонівзаразоктильйоноктильйонаоктильйоніводинквадрильйонквадрильйонаквадрильйонівквинтиліонквинтиліонаквинтиліонівсептильйонсептильйонасептильйонівсімсикстильйонсикстильйонасикстильйонівшістьтисячатисячітисячтрисьогоднізавтратрильйонтрильйонатрильйонівдвавчоранульhumanize-4.10.0/src/humanize/locale/uk_UA/LC_MESSAGES/humanize.po0000644000000000000000000001676413615410400021171 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.10.0/src/humanize/locale/vi_VN/LC_MESSAGES/humanize.mo0000644000000000000000000000613413615410400021171 0ustar00=S89HYx      *6"Ux             $ 2 > LX^gpx ( ,6;     / C U e q {      !                     + 8 D O [ e j o %u    -     - B F U  5 %1!96*032 "<,-  ;$#7(4+)&=8'/. :%d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbillioneightfivefourmillionmillionninenowonequadrillionquadrillionsevensixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: PROJECT VERSION Report-Msgid-Bugs-To: PO-Revision-Date: 2017-05-30 11:51+0700 Last-Translator: Olivier Cortès Language-Team: vi_VI Language: vi_VN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); Generated-By: Babel 0.9.6 X-Generator: Poedit 1.8.7.1 %d ngày%d ngày%d giờ%d giờ%d micro giây%d micro giây%d mili giây%d mili giây%d phút%d phút%d tháng%d tháng%d giây%d giây%d năm%d năm%s trước%s và %s%s ngày tới....1 năm %d ngày1 năm %d ngày1 năm %d thángun an et %d mois1 năm 1 tháng................một ngàymột phútngay lúc nàymột thángmột giâymột nămmột giờtỷtỷtámnămbốn%(value)s triệu%(value)s triệuchínngay bây giờmột%(value)s triệu tỷ%(value)s triệu tỷbảysáunghìnnghìnbahôm nayngày mai%(value)s nghìn tỷ%(value)s nghìn tỷhaingày hôm quakhônghumanize-4.10.0/src/humanize/locale/vi_VN/LC_MESSAGES/humanize.po0000644000000000000000000001541713615410400021200 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.10.0/src/humanize/locale/zh_CN/LC_MESSAGES/humanize.mo0000644000000000000000000000575513615410400021161 0ustar00@Y     *6"Ux             $ 2 > LX^gpx /G]cy} ?   " . : F R [ d h l p t                          - 1 5 9 M [ _ m t            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之后第第第第%d年%d年1年又%d月1年又%d月1年又1月第第第第第第第第第第第第第第第第1天1分一会儿1月1秒1年1小时十亿十亿十沟十沟八五四古高尔古高尔百万百万九百穰百穰现在千秭千秭一万亿万亿百京百京秭秭七十垓十垓六千千三今天明天兆兆二昨天humanize-4.10.0/src/humanize/locale/zh_CN/LC_MESSAGES/humanize.po0000644000000000000000000001434413615410400021156 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] "%d年" msgstr[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.10.0/src/humanize/locale/zh_HK/LC_MESSAGES/humanize.mo0000644000000000000000000000637313615410400021160 0ustar00D<a\ ?Tg|      "  0 > J X d r ~          )08H\bg lz  ! % 7 = C L ^ b l >q       * 6 @ J T X \ ` d %r                          ) 7 ; ? C W e i w ~             5<>+=6D94%2#)" !, 3:A 1*-;'/&0(@8B. C7 $ ?%d day%d days%d hour%d hours%d microsecond%d microseconds%d millisecond%d milliseconds%d minute%d minutes%d month%d months%d second%d seconds%d year%d years%s ago%s and %s%s from now0 (female)th0 (male)th1 (female)st1 (male)st1 year, %d day1 year, %d days1 year, %d month1 year, %d months1 year, 1 month2 (female)nd2 (male)nd3 (female)rd3 (male)rd4 (female)th4 (male)th5 (female)th5 (male)th6 (female)th6 (male)th7 (female)th7 (male)th8 (female)th8 (male)th9 (female)th9 (male)tha daya minutea momenta montha seconda yearan hourbillionbilliondecilliondecillioneightfivefourgoogolgoogolmillionmillionninenonillionnonillionnowoctillionoctilliononequadrillionquadrillionquintillionquintillionseptillionseptillionsevensextillionsextillionsixthousandthousandthreetodaytomorrowtrilliontrilliontwoyesterdayzeroProject-Id-Version: 1.0 Report-Msgid-Bugs-To: PO-Revision-Date: 2016-11-14 23:02+0000 Last-Translator: Edward Ho Language-Team: Chinese (traditional) Language: zh_HK MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); %d 天%d 天%d 小時%d 小時%d 微秒%d 微秒%d 毫秒%d 毫秒%d 分鐘%d 分鐘%d 月%d 月%d 秒%d 秒%d年%d年%s 之前%s 與 %s%s 之後第第第第%d 年%d 年1 年又 %d 個月1 年又 %d 個月1 年又 1 個月第第第第第第第第第第第第第第第第1 天1 分鐘一會1 月1 秒1 年1 小時十億十億十溝十溝八五四古高爾古高爾百萬百萬九百穰百穰現在千秭千秭一萬億萬億百京百京秭秭七十垓十垓六千千三今天明天兆兆二昨天零humanize-4.10.0/src/humanize/locale/zh_HK/LC_MESSAGES/humanize.po0000644000000000000000000001454613615410400021164 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] "%d 年" msgstr[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.10.0/tests/__init__.py0000644000000000000000000000000013615410400013575 0ustar00humanize-4.10.0/tests/test_filesize.py0000644000000000000000000000241413615410400014722 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"), ([3000], "3.0 kB"), ([3000000], "3.0 MB"), ([3000000000], "3.0 GB"), ([3000000000000], "3.0 TB"), ([300, True], "300 Bytes"), ([3000, True], "2.9 KiB"), ([3000000, True], "2.9 MiB"), ([300, False, True], "300B"), ([3000, False, True], "2.9K"), ([3000000, False, True], "2.9M"), ([1024, False, True], "1.0K"), ([10**26 * 30, False, True], "2481.5Y"), ([10**26 * 30, True], "2481.5 YiB"), ([10**26 * 30], "3000.0 YB"), ([1, False, False], "1 Byte"), ([3141592, False, False, "%.2f"], "3.14 MB"), ([3000, False, True, "%.3f"], "2.930K"), ([3000000000, False, True, "%.0f"], "3G"), ([10**26 * 30, True, False, "%.3f"], "2481.542 YiB"), ], ) def test_naturalsize(test_args: list[int] | list[int | bool], expected: str) -> None: assert humanize.naturalsize(*test_args) == expected args_with_negative = test_args args_with_negative[0] *= -1 assert humanize.naturalsize(*args_with_negative) == "-" + expected humanize-4.10.0/tests/test_i18n.py0000644000000000000000000001400613615410400013667 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() @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("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" 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"), ( ("es_ES", 1000000, "1.0 millón"), ("es_ES", 3500000, "3.5 millones"), ("es_ES", 1000000000, "1.0 billón"), ("es_ES", 1200000000, "1.2 billones"), ("es_ES", 1000000000000, "1.0 trillón"), ("es_ES", 6700000000000, "6.7 trillones"), ), ) def test_intword_plurals(locale: 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", "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__file__() -> None: i18n = importlib.import_module("humanize.i18n") assert i18n._get_default_locale_path() is not None def test_default_locale_path_null__file__() -> None: i18n = importlib.import_module("humanize.i18n") i18n.__file__ = None assert i18n._get_default_locale_path() is None def test_default_locale_path_undefined__file__() -> None: i18n = importlib.import_module("humanize.i18n") del i18n.__file__ 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__file__(self) -> None: i18n = importlib.import_module("humanize.i18n") i18n.__file__ = None with pytest.raises(Exception) as excinfo: i18n.activate("ru_RU") assert str(excinfo.value) == self.expected_msg def test_default_locale_path_undefined__file__(self) -> None: i18n = importlib.import_module("humanize.i18n") del i18n.__file__ with pytest.raises(Exception) as excinfo: i18n.activate("ru_RU") assert str(excinfo.value) == self.expected_msg humanize-4.10.0/tests/test_number.py0000644000000000000000000002146313615410400014405 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"), ([None], "None"), (["1230000", "%0.2f"], "1.23 million"), ([10**101], "1" + "0" * 101), ([math.nan], "NaN"), ([math.inf], "+Inf"), ([-math.inf], "-Inf"), (["nan"], "NaN"), (["-inf"], "-Inf"), ], ) 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"), ], ) 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"), ([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.10.0/tests/test_time.py0000644000000000000000000006611413615410400014055 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=30), "a minute"), (dt.timedelta(minutes=2), "2 minutes"), (dt.timedelta(hours=1, minutes=30, seconds=30), "an hour"), (dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours"), (dt.timedelta(days=1), "a day"), (dt.timedelta(days=500), "1 year, 4 months"), (dt.timedelta(days=365 * 2 + 35), "2 years"), (dt.timedelta(seconds=1), "a second"), (dt.timedelta(seconds=30), "30 seconds"), (dt.timedelta(minutes=1, seconds=30), "a minute"), (dt.timedelta(minutes=2), "2 minutes"), (dt.timedelta(hours=1, minutes=30, seconds=30), "an hour"), (dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours"), (dt.timedelta(days=1), "a day"), (dt.timedelta(days=500), "1 year, 4 months"), (dt.timedelta(days=365 * 2 + 35), "2 years"), # regression tests for bugs in post-release humanize (dt.timedelta(days=10000), "27 years"), (dt.timedelta(days=365 + 35), "1 year, 1 month"), (30, "30 seconds"), (dt.timedelta(days=365 * 2 + 65), "2 years"), (dt.timedelta(days=365 + 4), "1 year, 4 days"), (dt.timedelta(days=35), "a month"), (dt.timedelta(days=65), "2 months"), (dt.timedelta(days=9), "9 days"), (dt.timedelta(days=365), "a year"), (dt.timedelta(days=365 * 1_141), "1,141 years"), ("NaN", "NaN"), # Returns non-numbers unchanged. # largest possible timedelta (dt.timedelta(days=999_999_999), "2,739,726 years"), ], ) def test_naturaldelta(test_input: 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=30), "a minute ago"), (NOW - dt.timedelta(minutes=2), "2 minutes ago"), (NOW - dt.timedelta(hours=1, minutes=30, seconds=30), "an hour ago"), (NOW - dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours ago"), (NOW - dt.timedelta(days=1), "a day ago"), (NOW - dt.timedelta(days=500), "1 year, 4 months ago"), (NOW - dt.timedelta(days=365 * 2 + 35), "2 years ago"), (NOW + dt.timedelta(seconds=1), "a second from now"), (NOW + dt.timedelta(seconds=30), "30 seconds from now"), (NOW + dt.timedelta(minutes=1, seconds=30), "a minute from now"), (NOW + dt.timedelta(minutes=2), "2 minutes from now"), (NOW + dt.timedelta(hours=1, minutes=30, seconds=30), "an hour from now"), (NOW + dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours from now"), (NOW + dt.timedelta(days=1), "a day from now"), (NOW + dt.timedelta(days=500), "1 year, 4 months from now"), (NOW + dt.timedelta(days=365 * 2 + 35), "2 years from now"), # regression tests for bugs in post-release humanize (NOW + dt.timedelta(days=10000), "27 years from now"), (NOW - dt.timedelta(days=365 + 35), "1 year, 1 month ago"), (dt.timedelta(days=-10000), "27 years from now"), (dt.timedelta(days=365 + 35), "1 year, 1 month ago"), (23.5, "23 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, 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=30), "a minute ago"), (NOW - dt.timedelta(minutes=2), "2 minutes ago"), (NOW - dt.timedelta(hours=1, minutes=30, seconds=30), "an hour ago"), (NOW - dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours ago"), (NOW - dt.timedelta(days=1), "a day ago"), (NOW - dt.timedelta(days=17), "17 days ago"), (NOW - dt.timedelta(days=47), "47 days ago"), (NOW - dt.timedelta(days=500), "1 year, 135 days ago"), (NOW - dt.timedelta(days=365 * 2 + 35), "2 years ago"), (NOW + dt.timedelta(seconds=1), "a second from now"), (NOW + dt.timedelta(seconds=30), "30 seconds from now"), (NOW + dt.timedelta(minutes=1, seconds=30), "a minute from now"), (NOW + dt.timedelta(minutes=2), "2 minutes from now"), (NOW + dt.timedelta(hours=1, minutes=30, seconds=30), "an hour from now"), (NOW + dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours from now"), (NOW + dt.timedelta(days=1), "a day from now"), (NOW + dt.timedelta(days=500), "1 year, 135 days from now"), (NOW + dt.timedelta(days=365 * 2 + 35), "2 years from now"), # regression tests for bugs in post-release humanize (NOW + dt.timedelta(days=10000), "27 years from now"), (NOW - dt.timedelta(days=365 + 35), "1 year, 35 days ago"), (dt.timedelta(days=-10000), "27 years from now"), (dt.timedelta(days=365 + 35), "1 year, 35 days ago"), (23.5, "23 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, 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 @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=30), "a minute ago"), (NOW_UTC - dt.timedelta(minutes=2), "2 minutes ago"), (NOW_UTC - dt.timedelta(hours=1, minutes=30, seconds=30), "an hour ago"), (NOW_UTC - dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours 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=30), "a minute from now"), (NOW_UTC + dt.timedelta(minutes=2), "2 minutes from now"), (NOW_UTC + dt.timedelta(hours=1, minutes=30, seconds=30), "an hour from now"), (NOW_UTC + dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours 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=30), "a minute ago"), (NOW_UTC - dt.timedelta(minutes=2), "2 minutes ago"), (NOW_UTC - dt.timedelta(hours=1, minutes=30, seconds=30), "an hour ago"), (NOW_UTC - dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours 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=30), "a minute from now"), (NOW_UTC + dt.timedelta(minutes=2), "2 minutes from now"), (NOW_UTC + dt.timedelta(hours=1, minutes=30, seconds=30), "an hour from now"), (NOW_UTC + dt.timedelta(hours=23, minutes=50, seconds=50), "23 hours 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: int | dt.timedelta, 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", ), ], ) def test_precisedelta_multiple_units( val: dt.timedelta, 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.00 milliseconds"), ( dt.timedelta(seconds=1, microseconds=230000), "seconds", "%0.2f", "1.23 seconds", ), ( dt.timedelta(hours=4, seconds=3, microseconds=200000), "seconds", "%0.2f", "4 hours and 3.20 seconds", ), ( dt.timedelta(days=5, hours=4, seconds=30 * 60), "seconds", "%0.2f", "5 days, 4 hours and 30 minutes", ), ( dt.timedelta(days=5, hours=4, seconds=30 * 60), "hours", "%0.2f", "5 days and 4.50 hours", ), (dt.timedelta(days=5, hours=4, seconds=30 * 60), "days", "%0.2f", "5.19 days"), (dt.timedelta(days=120), "months", "%0.2f", "3.93 months"), (dt.timedelta(days=183), "years", "%0.1f", "0.5 years"), ], ) def test_precisedelta_custom_format( val: dt.timedelta, 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, 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): humanize.precisedelta(1, minimum_unit="years", suppress=["years"]) with pytest.raises(ValueError): 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" humanize-4.10.0/.gitignore0000644000000000000000000000600613615410400012326 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/ # PyCharm # JetBrains specific template is maintained in a separate JetBrains.gitignore that can # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ humanize-4.10.0/LICENCE0000644000000000000000000000206613615410400011325 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.10.0/README.md0000644000000000000000000001377413615410400011627 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 - Norwegian - Persian - Polish - Russian - Simplified Chinese - Slovak - Slovenian - Spanish - Swedish - Turkish - Ukrainian - 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.10.0/pyproject.toml0000644000000000000000000000605413615410400013255 0ustar00[build-system] build-backend = "hatchling.build" requires = [ "hatch-vcs", "hatchling", ] [project] name = "humanize" description = "Python humanize utilities" readme = "README.md" keywords = [ "humanize time size", ] license = { text = "MIT" } maintainers = [ { name = "Hugo van Kemenade" }, ] authors = [ { name = "Jason Moiron", email = "jmoiron@jmoiron.net" }, ] requires-python = ">=3.8" classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Text Processing", "Topic :: Text Processing :: General", ] dynamic = [ "version", ] optional-dependencies.tests = [ "freezegun", "pytest", "pytest-cov", ] 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."Issue tracker" = "https://github.com/python-humanize/humanize/issues" urls."Release notes" = "https://github.com/python-humanize/humanize/releases" urls.Source = "https://github.com/python-humanize/humanize" [tool.hatch] version.source = "vcs" [tool.hatch.build] artifacts = [ "*.mo", ] [tool.hatch.version.raw-options] local_scheme = "no-local-version" [tool.ruff] fix = true lint.select = [ "C4", # flake8-comprehensions "D", # pydocstyle "E", # pycodestyle errors "EM", # flake8-errmsg "F", # pyflakes errors "I", # isort "ISC", # flake8-implicit-str-concat "LOG", # flake8-logging "PGH", # pygrep-hooks "PYI", # flake8-pyi "RUF022", # unsorted-dunder-all "RUF100", # unused noqa (yesqa) "UP", # pyupgrade "W", # pycodestyle warnings "YTT", # flake8-2020 ] lint.extend-ignore = [ "E203", # Whitespace before ':' "E221", # Multiple spaces before operator "E226", # Missing whitespace around arithmetic operator "E241", # Multiple spaces after ',' ] lint.per-file-ignores."tests/*" = [ "D", ] lint.isort.known-first-party = [ "humanize", ] lint.isort.required-imports = [ "from __future__ import annotations", ] lint.pydocstyle.convention = "google" [tool.pyproject-fmt] max_supported_python = "3.13" [tool.pytest.ini_options] addopts = "--color=yes" filterwarnings = [ "error", # https://github.com/dateutil/dateutil/issues/1314 "ignore:datetime.datetime.utcfromtimestamp:DeprecationWarning:dateutil.tz.tz", # Python <= 3.11 "ignore:sys.monitoring isn't available, using default core:coverage.exceptions.CoverageWarning", ] humanize-4.10.0/PKG-INFO0000644000000000000000000001730713615410400011441 0ustar00Metadata-Version: 2.3 Name: humanize Version: 4.10.0 Summary: Python humanize utilities 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: Issue tracker, https://github.com/python-humanize/humanize/issues Project-URL: Release notes, https://github.com/python-humanize/humanize/releases Project-URL: Source, https://github.com/python-humanize/humanize Author-email: Jason Moiron Maintainer: Hugo van Kemenade License: MIT License-File: LICENCE Keywords: humanize time size Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 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 :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Text Processing Classifier: Topic :: Text Processing :: General Requires-Python: >=3.8 Provides-Extra: tests Requires-Dist: freezegun; extra == 'tests' Requires-Dist: pytest; extra == 'tests' Requires-Dist: pytest-cov; 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 - Norwegian - Persian - Polish - Russian - Simplified Chinese - Slovak - Slovenian - Spanish - Swedish - Turkish - Ukrainian - 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.