mirror of
https://github.com/spiral-project/ihatemoney.git
synced 2025-05-06 13:01:50 +02:00
Merge branch 'master' into master
This commit is contained in:
commit
6f991be65d
57 changed files with 3376 additions and 1020 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -11,4 +11,5 @@ build
|
||||||
.vscode
|
.vscode
|
||||||
.env
|
.env
|
||||||
.pytest_cache
|
.pytest_cache
|
||||||
|
ihatemoney/budget.db
|
||||||
|
.idea/
|
||||||
|
|
13
.isort.cfg
Normal file
13
.isort.cfg
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
[settings]
|
||||||
|
# Needed for black compatibility
|
||||||
|
multi_line_output=3
|
||||||
|
include_trailing_comma=True
|
||||||
|
force_grid_wrap=0
|
||||||
|
line_length=88
|
||||||
|
combine_as_imports=True
|
||||||
|
|
||||||
|
# If set, imports will be sorted within their section independent to the import_type.
|
||||||
|
force_sort_within_sections=True
|
||||||
|
|
||||||
|
# skip
|
||||||
|
skip_glob=.local,**/migrations/**,**/node_modules/**,**/node-forge/**
|
|
@ -1,9 +1,9 @@
|
||||||
sudo: false
|
sudo: false
|
||||||
language: python
|
language: python
|
||||||
python:
|
python:
|
||||||
- "3.5"
|
|
||||||
- "3.6"
|
- "3.6"
|
||||||
- "3.7"
|
- "3.7"
|
||||||
|
- "3.8"
|
||||||
script: tox
|
script: tox
|
||||||
install:
|
install:
|
||||||
- pip install tox-travis
|
- pip install tox-travis
|
||||||
|
|
|
@ -9,7 +9,7 @@ This document describes changes between each past release.
|
||||||
- Add support for espanol latino america (es_419)
|
- Add support for espanol latino america (es_419)
|
||||||
- Use the external debts lib to solve settlements (#476)
|
- Use the external debts lib to solve settlements (#476)
|
||||||
- Remove balance column in statistics view (#323)
|
- Remove balance column in statistics view (#323)
|
||||||
|
- Remove requirements files in favor of setup.cfg pinning (#558)
|
||||||
|
|
||||||
4.1.3 (2019-09-18)
|
4.1.3 (2019-09-18)
|
||||||
==================
|
==================
|
||||||
|
|
|
@ -7,20 +7,27 @@ Adrien CLERC
|
||||||
Alexandre Avenel
|
Alexandre Avenel
|
||||||
Alexis Métaireau
|
Alexis Métaireau
|
||||||
Allan Nordhøy
|
Allan Nordhøy
|
||||||
|
am97
|
||||||
|
Andrew Dickinson
|
||||||
Arnaud Bos
|
Arnaud Bos
|
||||||
Baptiste Jonglez
|
Baptiste Jonglez
|
||||||
Benjamin Bouvier
|
Benjamin Bouvier
|
||||||
Berteh
|
Berteh
|
||||||
|
bmatticus
|
||||||
Brice Maron
|
Brice Maron
|
||||||
Byron Ullauri
|
Byron Ullauri
|
||||||
Carey Metcalfe
|
Carey Metcalfe
|
||||||
Daniel Schreiber
|
Daniel Schreiber
|
||||||
|
DavidRThrashJr
|
||||||
donkers
|
donkers
|
||||||
|
Edwin Smulders
|
||||||
Elizabeth Sherrock
|
Elizabeth Sherrock
|
||||||
|
eMerzh
|
||||||
Feth AREZKI
|
Feth AREZKI
|
||||||
Frédéric Sureau
|
Frédéric Sureau
|
||||||
Glandos
|
Glandos
|
||||||
Heimen Stoffels
|
Heimen Stoffels
|
||||||
|
James Leong
|
||||||
Jocelyn Delalande
|
Jocelyn Delalande
|
||||||
Lucas Verney
|
Lucas Verney
|
||||||
Luc Didry
|
Luc Didry
|
||||||
|
@ -37,3 +44,4 @@ Richard Coates
|
||||||
THANOS SIOURDAKIS
|
THANOS SIOURDAKIS
|
||||||
Toover
|
Toover
|
||||||
Xavier Mehrenberger
|
Xavier Mehrenberger
|
||||||
|
zorun
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
include *.rst
|
include *.rst
|
||||||
recursive-include ihatemoney *.rst *.py *.yaml *.po *.mo *.html *.css *.js *.eot *.svg *.woff *.txt *.png *.ini *.cfg *.j2
|
recursive-include ihatemoney *.rst *.py *.yaml *.po *.mo *.html *.css *.js *.eot *.svg *.woff *.txt *.png *.ini *.cfg *.j2
|
||||||
include LICENSE CONTRIBUTORS CHANGELOG.rst requirements.txt
|
include LICENSE CONTRIBUTORS CHANGELOG.rst
|
||||||
|
|
29
Makefile
29
Makefile
|
@ -11,10 +11,10 @@ ZOPFLIPNG := zopflipng
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: install ## Alias for install
|
all: install ## Alias for install
|
||||||
.PHONY: install
|
.PHONY: install
|
||||||
install: virtualenv $(INSTALL_STAMP) ## Install dependencies
|
install: virtualenv setup.cfg $(INSTALL_STAMP) ## Install dependencies
|
||||||
$(INSTALL_STAMP):
|
$(INSTALL_STAMP):
|
||||||
$(VENV)/bin/pip install -U pip
|
$(VENV)/bin/pip install -U pip
|
||||||
$(VENV)/bin/pip install -r requirements.txt
|
$(VENV)/bin/pip install -e .
|
||||||
touch $(INSTALL_STAMP)
|
touch $(INSTALL_STAMP)
|
||||||
|
|
||||||
.PHONY: virtualenv
|
.PHONY: virtualenv
|
||||||
|
@ -23,9 +23,9 @@ $(PYTHON):
|
||||||
$(VIRTUALENV) $(VENV)
|
$(VIRTUALENV) $(VENV)
|
||||||
|
|
||||||
.PHONY: install-dev
|
.PHONY: install-dev
|
||||||
install-dev: $(INSTALL_STAMP) $(DEV_STAMP) ## Install development dependencies
|
install-dev: virtualenv setup.cfg $(INSTALL_STAMP) $(DEV_STAMP) ## Install development dependencies
|
||||||
$(DEV_STAMP): $(PYTHON) dev-requirements.txt
|
$(DEV_STAMP): $(PYTHON)
|
||||||
$(VENV)/bin/pip install -Ur dev-requirements.txt
|
$(VENV)/bin/pip install -Ue .[dev]
|
||||||
touch $(DEV_STAMP)
|
touch $(DEV_STAMP)
|
||||||
|
|
||||||
.PHONY: remove-install-stamp
|
.PHONY: remove-install-stamp
|
||||||
|
@ -41,11 +41,19 @@ serve: install ## Run the ihatemoney server
|
||||||
$(PYTHON) -m ihatemoney.manage runserver
|
$(PYTHON) -m ihatemoney.manage runserver
|
||||||
|
|
||||||
.PHONY: test
|
.PHONY: test
|
||||||
test: $(DEV_STAMP) ## Run the tests
|
test: install-dev ## Run the tests
|
||||||
$(VENV)/bin/tox
|
$(VENV)/bin/tox
|
||||||
|
|
||||||
|
.PHONY: black
|
||||||
|
black: install-dev ## Run the tests
|
||||||
|
$(VENV)/bin/black --target-version=py34 .
|
||||||
|
|
||||||
|
.PHONY: isort
|
||||||
|
isort: install-dev ## Run the tests
|
||||||
|
$(VENV)/bin/isort -rc .
|
||||||
|
|
||||||
.PHONY: release
|
.PHONY: release
|
||||||
release: $(DEV_STAMP) ## Release a new version (see https://ihatemoney.readthedocs.io/en/latest/contributing.html#how-to-release)
|
release: install-dev ## Release a new version (see https://ihatemoney.readthedocs.io/en/latest/contributing.html#how-to-release)
|
||||||
$(VENV)/bin/fullrelease
|
$(VENV)/bin/fullrelease
|
||||||
|
|
||||||
.PHONY: compress-assets
|
.PHONY: compress-assets
|
||||||
|
@ -76,13 +84,6 @@ create-empty-database-revision: ## Create an empty database revision
|
||||||
@read -p "Please enter a message describing this revision: " rev_message; \
|
@read -p "Please enter a message describing this revision: " rev_message; \
|
||||||
$(PYTHON) -m ihatemoney.manage db revision -d ihatemoney/migrations -m "$${rev_message}"
|
$(PYTHON) -m ihatemoney.manage db revision -d ihatemoney/migrations -m "$${rev_message}"
|
||||||
|
|
||||||
.PHONY: build-requirements
|
|
||||||
build-requirements: ## Save currently installed packages to requirements.txt
|
|
||||||
$(VIRTUALENV) $(TEMPDIR)
|
|
||||||
$(TEMPDIR)/bin/pip install -U pip
|
|
||||||
$(TEMPDIR)/bin/pip install -Ue "."
|
|
||||||
$(TEMPDIR)/bin/pip freeze | grep -v -- '-e' > requirements.txt
|
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean: ## Destroy the virtual environment
|
clean: ## Destroy the virtual environment
|
||||||
rm -rf .venv
|
rm -rf .venv
|
||||||
|
|
12
README.rst
12
README.rst
|
@ -5,6 +5,10 @@ I hate money
|
||||||
:target: https://travis-ci.org/spiral-project/ihatemoney
|
:target: https://travis-ci.org/spiral-project/ihatemoney
|
||||||
:alt: Travis CI Build Status
|
:alt: Travis CI Build Status
|
||||||
|
|
||||||
|
.. image:: https://hosted.weblate.org/widgets/i-hate-money/-/i-hate-money/svg-badge.svg
|
||||||
|
:target: https://hosted.weblate.org/engage/i-hate-money/?utm_source=widget
|
||||||
|
:alt: Translation status from Weblate
|
||||||
|
|
||||||
*I hate money* is a web application made to ease shared budget management.
|
*I hate money* is a web application made to ease shared budget management.
|
||||||
It keeps track of who bought what, when, and for whom; and helps to settle the
|
It keeps track of who bought what, when, and for whom; and helps to settle the
|
||||||
bills.
|
bills.
|
||||||
|
@ -21,7 +25,7 @@ encouraged to do so.
|
||||||
Requirements
|
Requirements
|
||||||
============
|
============
|
||||||
|
|
||||||
* **Python**: 3.5, 3.6, 3.7.
|
* **Python**: 3.6, 3.7, 3.8.
|
||||||
* **Backends**: MySQL, PostgreSQL, SQLite, Memory.
|
* **Backends**: MySQL, PostgreSQL, SQLite, Memory.
|
||||||
|
|
||||||
Contributing
|
Contributing
|
||||||
|
@ -31,3 +35,9 @@ Do you wish to contribute to IHateMoney? Fantastic! There's a lot of very
|
||||||
useful help on the official `contributing
|
useful help on the official `contributing
|
||||||
<https://ihatemoney.readthedocs.io/en/latest/contributing.html>`_ page.
|
<https://ihatemoney.readthedocs.io/en/latest/contributing.html>`_ page.
|
||||||
|
|
||||||
|
Translation status
|
||||||
|
==================
|
||||||
|
|
||||||
|
.. image:: https://hosted.weblate.org/widgets/i-hate-money/-/i-hate-money/multi-blue.svg
|
||||||
|
:target: https://hosted.weblate.org/engage/i-hate-money/?utm_source=widget
|
||||||
|
:alt: Translation status for each language
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
zest.releaser
|
|
||||||
tox
|
|
||||||
pytest
|
|
||||||
flake8
|
|
||||||
Flask-Testing
|
|
||||||
black ; python_version >= '3.6'
|
|
|
@ -1,6 +1,3 @@
|
||||||
# coding: utf8
|
|
||||||
import sys, os
|
|
||||||
|
|
||||||
templates_path = ["_templates"]
|
templates_path = ["_templates"]
|
||||||
source_suffix = ".rst"
|
source_suffix = ".rst"
|
||||||
master_doc = "index"
|
master_doc = "index"
|
||||||
|
|
|
@ -1,84 +1,7 @@
|
||||||
Contributing
|
Contributing
|
||||||
############
|
############
|
||||||
|
|
||||||
Set up a dev environment
|
.. _how-to-contribute:
|
||||||
=======================
|
|
||||||
|
|
||||||
You must develop on top of the Git master branch::
|
|
||||||
|
|
||||||
git clone https://github.com/spiral-project/ihatemoney.git
|
|
||||||
|
|
||||||
Then you need to build your dev environment. Choose your way…
|
|
||||||
|
|
||||||
The quick way
|
|
||||||
-------------
|
|
||||||
|
|
||||||
If System :ref:`installation-requirements` are fulfilled, you can just issue::
|
|
||||||
|
|
||||||
make serve
|
|
||||||
|
|
||||||
It will setup a `virtualenv <https://pypi.python.org/pypi/virtualenv>`_,
|
|
||||||
install dependencies, and run the test server.
|
|
||||||
|
|
||||||
The hard way
|
|
||||||
------------
|
|
||||||
|
|
||||||
Alternatively, you can also use the `requirements.txt` file to install the
|
|
||||||
dependencies yourself. That would be::
|
|
||||||
|
|
||||||
pip install -r requirements.txt
|
|
||||||
pip install -e .
|
|
||||||
|
|
||||||
And then run the application::
|
|
||||||
|
|
||||||
cd ihatemoney
|
|
||||||
python run.py
|
|
||||||
|
|
||||||
Accessing dev server
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
In any case, you can point your browser at `http://localhost:5000 <http://localhost:5000>`_.
|
|
||||||
It's as simple as that!
|
|
||||||
|
|
||||||
Updating
|
|
||||||
--------
|
|
||||||
|
|
||||||
In case you want to update to newer versions (from Git), you can just run the "update" command::
|
|
||||||
|
|
||||||
make update
|
|
||||||
|
|
||||||
Create database migrations
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
In case you need to modify the database schema, first update the models in
|
|
||||||
``ihatemoney/models.py``. Then run the following command to create a new
|
|
||||||
database revision file::
|
|
||||||
|
|
||||||
make create-database-revision
|
|
||||||
|
|
||||||
If your changes are simple enough, the generated script will be populated with
|
|
||||||
the necessary migrations steps. You can edit the generated script. e.g: To add
|
|
||||||
data migrations.
|
|
||||||
|
|
||||||
For complex migrations, it is recommended to start from an empty revision file
|
|
||||||
which can be created with the following command::
|
|
||||||
|
|
||||||
make create-empty-database-revision
|
|
||||||
|
|
||||||
Useful settings
|
|
||||||
----------------
|
|
||||||
|
|
||||||
It is better to actually turn the debugging mode on when you're developing.
|
|
||||||
You can create a ``settings.cfg`` file, with the following content::
|
|
||||||
|
|
||||||
DEBUG = True
|
|
||||||
SQLACHEMY_ECHO = DEBUG
|
|
||||||
|
|
||||||
You can also set the `TESTING` flag to `True` so no mails are sent
|
|
||||||
(and no exception is raised) while you're on development mode.
|
|
||||||
Then before running the application, declare its path with ::
|
|
||||||
|
|
||||||
export IHATEMONEY_SETTINGS_FILE_PATH="$(pwd)/settings.cfg"
|
|
||||||
|
|
||||||
How to contribute
|
How to contribute
|
||||||
=================
|
=================
|
||||||
|
@ -93,21 +16,8 @@ As a developer
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
If you want to contribute code, you can write it and then issue a pull request
|
If you want to contribute code, you can write it and then issue a pull request
|
||||||
on github. Please, think about updating and running the tests before asking for
|
on github. To get started, please read :ref:`setup-dev-environment` and
|
||||||
a pull request as it will help us to maintain the code clean and running.
|
:ref:`contributing-developer`.
|
||||||
|
|
||||||
To do so::
|
|
||||||
|
|
||||||
make test
|
|
||||||
|
|
||||||
We are using the `black <https://black.readthedocs.io/en/stable/>`_ formatter
|
|
||||||
for all the Python files in this project. Be sure to run it locally on your
|
|
||||||
files. To do so, just run::
|
|
||||||
|
|
||||||
black ihatemoney
|
|
||||||
|
|
||||||
You can also integrate it with your dev environment (as a *format-on-save*
|
|
||||||
hook, for instance).
|
|
||||||
|
|
||||||
As a designer / Front-end developer
|
As a designer / Front-end developer
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
@ -139,6 +49,143 @@ will update the issue tracker with your feedback.
|
||||||
|
|
||||||
Thanks again!
|
Thanks again!
|
||||||
|
|
||||||
|
.. _setup-dev-environment:
|
||||||
|
|
||||||
|
Set up a dev environment
|
||||||
|
========================
|
||||||
|
|
||||||
|
You must develop on top of the Git master branch::
|
||||||
|
|
||||||
|
git clone https://github.com/spiral-project/ihatemoney.git
|
||||||
|
|
||||||
|
Then you need to build your dev environment. Choose your way…
|
||||||
|
|
||||||
|
The quick way
|
||||||
|
-------------
|
||||||
|
|
||||||
|
If System :ref:`installation-requirements` are fulfilled, you can just issue::
|
||||||
|
|
||||||
|
make serve
|
||||||
|
|
||||||
|
It will setup a `virtualenv <https://pypi.python.org/pypi/virtualenv>`_,
|
||||||
|
install dependencies, and run the test server.
|
||||||
|
|
||||||
|
The hard way
|
||||||
|
------------
|
||||||
|
|
||||||
|
Alternatively, you can use pip to install dependencies yourself. That would be::
|
||||||
|
|
||||||
|
pip install -e .
|
||||||
|
|
||||||
|
And then run the application::
|
||||||
|
|
||||||
|
cd ihatemoney
|
||||||
|
python run.py
|
||||||
|
|
||||||
|
Accessing dev server
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
In any case, you can point your browser at `http://localhost:5000 <http://localhost:5000>`_.
|
||||||
|
It's as simple as that!
|
||||||
|
|
||||||
|
Updating
|
||||||
|
--------
|
||||||
|
|
||||||
|
In case you want to update to newer versions (from Git), you can just run the "update" command::
|
||||||
|
|
||||||
|
make update
|
||||||
|
|
||||||
|
Useful settings
|
||||||
|
----------------
|
||||||
|
|
||||||
|
It is better to actually turn the debugging mode on when you're developing.
|
||||||
|
You can create a ``settings.cfg`` file, with the following content::
|
||||||
|
|
||||||
|
DEBUG = True
|
||||||
|
SQLACHEMY_ECHO = DEBUG
|
||||||
|
|
||||||
|
You can also set the `TESTING` flag to `True` so no mails are sent
|
||||||
|
(and no exception is raised) while you're on development mode.
|
||||||
|
Then before running the application, declare its path with ::
|
||||||
|
|
||||||
|
export IHATEMONEY_SETTINGS_FILE_PATH="$(pwd)/settings.cfg"
|
||||||
|
|
||||||
|
.. _contributing-developer:
|
||||||
|
|
||||||
|
Contributing as a developer
|
||||||
|
===========================
|
||||||
|
|
||||||
|
All code contributions should be submitted as Pull Requests on the
|
||||||
|
`github project <https://github.com/spiral-project/ihatemoney>`_.
|
||||||
|
|
||||||
|
Below are some points that you should check to help you prepare your Pull Request.
|
||||||
|
|
||||||
|
Running tests
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Please, think about updating and running the tests before asking for a pull request
|
||||||
|
as it will help us to maintain the code clean and running.
|
||||||
|
|
||||||
|
To run the tests::
|
||||||
|
|
||||||
|
make test
|
||||||
|
|
||||||
|
Tests can be edited in ``ihatemoney/tests/tests.py``. If some test cases fail because
|
||||||
|
of your changes, first check whether your code correctly handle these cases.
|
||||||
|
If you are confident that your code is correct and that the test cases simply need
|
||||||
|
to be updated to match your changes, update the test cases and send them as part of
|
||||||
|
your pull request.
|
||||||
|
|
||||||
|
If you are introducing a new feature, you need to either add tests to existing classes,
|
||||||
|
or add a new class (if your new feature is significantly different from existing code).
|
||||||
|
|
||||||
|
Formatting code
|
||||||
|
---------------
|
||||||
|
|
||||||
|
We are using `black <https://black.readthedocs.io/en/stable/>`_ and
|
||||||
|
`isort <https://timothycrosley.github.io/isort/>`_ formatters for all the Python
|
||||||
|
files in this project. Be sure to run it locally on your files.
|
||||||
|
To do so, just run::
|
||||||
|
|
||||||
|
make black isort
|
||||||
|
|
||||||
|
You can also integrate them with your dev environment (as a *format-on-save*
|
||||||
|
hook, for instance).
|
||||||
|
|
||||||
|
Creating database migrations
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
In case you need to modify the database schema, first make sure that you have
|
||||||
|
an up-to-date database by running the dev server at least once (the quick way
|
||||||
|
or the hard way, see above). The dev server applies all existing migrations
|
||||||
|
when starting up.
|
||||||
|
|
||||||
|
You can now update the models in ``ihatemoney/models.py``. Then run the following
|
||||||
|
command to create a new database revision file::
|
||||||
|
|
||||||
|
make create-database-revision
|
||||||
|
|
||||||
|
If your changes are simple enough, the generated script will be populated with
|
||||||
|
the necessary migrations steps. You can view and edit the generated script, which
|
||||||
|
is useful to review that the expected model changes have been properly detected.
|
||||||
|
Usually the auto-detection works well in most cases, but you can of course edit the
|
||||||
|
script to fix small issues. You could also edit the script to add data migrations.
|
||||||
|
|
||||||
|
When you are done with your changes, don't forget to add the migration script to
|
||||||
|
your final git commit!
|
||||||
|
|
||||||
|
If the migration script looks completely wrong, remove the script and start again
|
||||||
|
with an empty database. The simplest way is to remove or rename the dev database
|
||||||
|
located at ``/tmp/ihatemoney.db``, and run the dev server at least once.
|
||||||
|
|
||||||
|
For complex migrations, it is recommended to start from an empty revision file
|
||||||
|
which can be created with the following command::
|
||||||
|
|
||||||
|
make create-empty-database-revision
|
||||||
|
|
||||||
|
You then need to write the migration steps yourself.
|
||||||
|
|
||||||
|
|
||||||
How to build the documentation ?
|
How to build the documentation ?
|
||||||
================================
|
================================
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ Requirements
|
||||||
|
|
||||||
«Ihatemoney» depends on:
|
«Ihatemoney» depends on:
|
||||||
|
|
||||||
* **Python**: either 3.5, 3.6 or 3.7 will work.
|
* **Python**: either 3.6, 3.7 or 3.8 will work.
|
||||||
* **A Backend**: to choose among MySQL, PostgreSQL, SQLite or Memory.
|
* **A Backend**: to choose among MySQL, PostgreSQL, SQLite or Memory.
|
||||||
* **Virtualenv** (recommended): `virtualenv` package under Debian/Ubuntu.
|
* **Virtualenv** (recommended): `virtualenv` package under Debian/Ubuntu.
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
Sphinx==1.5.5
|
Sphinx==3.0.2
|
||||||
docutils==0.13.1
|
docutils==0.16
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
# coding: utf8
|
from functools import wraps
|
||||||
from flask import request, current_app
|
|
||||||
|
from flask import current_app, request
|
||||||
from flask_restful import Resource, abort
|
from flask_restful import Resource, abort
|
||||||
|
from werkzeug.security import check_password_hash
|
||||||
from wtforms.fields.core import BooleanField
|
from wtforms.fields.core import BooleanField
|
||||||
|
|
||||||
from ihatemoney.models import db, Project, Person, Bill
|
from ihatemoney.forms import EditProjectForm, MemberForm, ProjectForm, get_billform_for
|
||||||
from ihatemoney.forms import ProjectForm, EditProjectForm, MemberForm, get_billform_for
|
from ihatemoney.models import Bill, Person, Project, db
|
||||||
from werkzeug.security import check_password_hash
|
|
||||||
from functools import wraps
|
|
||||||
|
|
||||||
|
|
||||||
def need_auth(f):
|
def need_auth(f):
|
||||||
|
|
|
@ -1,17 +1,16 @@
|
||||||
# coding: utf8
|
|
||||||
from flask import Blueprint
|
from flask import Blueprint
|
||||||
from flask_restful import Api
|
|
||||||
from flask_cors import CORS
|
from flask_cors import CORS
|
||||||
|
from flask_restful import Api
|
||||||
|
|
||||||
from ihatemoney.api.common import (
|
from ihatemoney.api.common import (
|
||||||
ProjectsHandler,
|
|
||||||
ProjectHandler,
|
|
||||||
TokenHandler,
|
|
||||||
MemberHandler,
|
|
||||||
ProjectStatsHandler,
|
|
||||||
MembersHandler,
|
|
||||||
BillHandler,
|
BillHandler,
|
||||||
BillsHandler,
|
BillsHandler,
|
||||||
|
MemberHandler,
|
||||||
|
MembersHandler,
|
||||||
|
ProjectHandler,
|
||||||
|
ProjectsHandler,
|
||||||
|
ProjectStatsHandler,
|
||||||
|
TokenHandler,
|
||||||
)
|
)
|
||||||
|
|
||||||
api = Blueprint("api", __name__, url_prefix="/api")
|
api = Blueprint("api", __name__, url_prefix="/api")
|
||||||
|
|
|
@ -8,4 +8,4 @@ ACTIVATE_DEMO_PROJECT = True
|
||||||
ADMIN_PASSWORD = ""
|
ADMIN_PASSWORD = ""
|
||||||
ALLOW_PUBLIC_PROJECT_CREATION = True
|
ALLOW_PUBLIC_PROJECT_CREATION = True
|
||||||
ACTIVATE_ADMIN_DASHBOARD = False
|
ACTIVATE_ADMIN_DASHBOARD = False
|
||||||
SUPPORTED_LANGUAGES = ["en", "fr", "de", "nl", "es_419"]
|
SUPPORTED_LANGUAGES = ["en", "fr", "de", "nl", "es_419", "nb_NO", "id"]
|
||||||
|
|
|
@ -1,29 +1,27 @@
|
||||||
|
from datetime import datetime
|
||||||
|
from re import match
|
||||||
|
|
||||||
|
import email_validator
|
||||||
|
from flask import request
|
||||||
|
from flask_babel import lazy_gettext as _
|
||||||
|
from flask_wtf.file import FileAllowed, FileField, FileRequired
|
||||||
from flask_wtf.form import FlaskForm
|
from flask_wtf.form import FlaskForm
|
||||||
|
from jinja2 import Markup
|
||||||
|
from werkzeug.security import check_password_hash, generate_password_hash
|
||||||
from wtforms.fields.core import SelectField, SelectMultipleField
|
from wtforms.fields.core import SelectField, SelectMultipleField
|
||||||
from wtforms.fields.html5 import DateField, DecimalField, URLField
|
from wtforms.fields.html5 import DateField, DecimalField, URLField
|
||||||
from wtforms.fields.simple import PasswordField, SubmitField, StringField, BooleanField, HiddenField
|
from wtforms.fields.simple import BooleanField, HiddenField, PasswordField, StringField, SubmitField
|
||||||
from wtforms.validators import (
|
from wtforms.validators import (
|
||||||
Email,
|
|
||||||
DataRequired,
|
DataRequired,
|
||||||
ValidationError,
|
Email,
|
||||||
EqualTo,
|
EqualTo,
|
||||||
NumberRange,
|
NumberRange,
|
||||||
Optional,
|
Optional,
|
||||||
|
ValidationError,
|
||||||
)
|
)
|
||||||
from flask_wtf.file import FileField, FileAllowed, FileRequired
|
|
||||||
|
|
||||||
from flask_babel import lazy_gettext as _
|
from ihatemoney.models import LoggingMode, Person, Project
|
||||||
from flask import request
|
from ihatemoney.utils import eval_arithmetic_expression, slugify
|
||||||
from werkzeug.security import generate_password_hash, check_password_hash
|
|
||||||
|
|
||||||
from datetime import datetime
|
|
||||||
from re import match
|
|
||||||
from jinja2 import Markup
|
|
||||||
|
|
||||||
import email_validator
|
|
||||||
|
|
||||||
from ihatemoney.models import Project, Person, LoggingMode
|
|
||||||
from ihatemoney.utils import slugify, eval_arithmetic_expression
|
|
||||||
|
|
||||||
|
|
||||||
def strip_filter(string):
|
def strip_filter(string):
|
||||||
|
|
|
@ -1,15 +1,7 @@
|
||||||
from flask_babel import gettext as _
|
from flask_babel import gettext as _
|
||||||
from sqlalchemy_continuum import (
|
from sqlalchemy_continuum import Operation, parent_class
|
||||||
Operation,
|
|
||||||
parent_class,
|
|
||||||
)
|
|
||||||
|
|
||||||
from ihatemoney.models import (
|
from ihatemoney.models import BillVersion, Person, PersonVersion, ProjectVersion
|
||||||
PersonVersion,
|
|
||||||
ProjectVersion,
|
|
||||||
BillVersion,
|
|
||||||
Person,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def get_history_queries(project):
|
def get_history_queries(project):
|
||||||
|
@ -78,7 +70,7 @@ def get_history(project, human_readable_names=True):
|
||||||
for version_list in [person_query.all(), project_query.all(), bill_query.all()]:
|
for version_list in [person_query.all(), project_query.all(), bill_query.all()]:
|
||||||
for version in version_list:
|
for version in version_list:
|
||||||
object_type = {
|
object_type = {
|
||||||
"Person": _("Person"),
|
"Person": _("Participant"),
|
||||||
"Bill": _("Bill"),
|
"Bill": _("Bill"),
|
||||||
"Project": _("Project"),
|
"Project": _("Project"),
|
||||||
}[parent_class(type(version)).__name__]
|
}[parent_class(type(version)).__name__]
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import getpass
|
||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
import sys
|
import sys
|
||||||
import getpass
|
|
||||||
|
|
||||||
from flask_script import Manager, Command, Option
|
|
||||||
from flask_migrate import Migrate, MigrateCommand
|
from flask_migrate import Migrate, MigrateCommand
|
||||||
|
from flask_script import Command, Manager, Option
|
||||||
from werkzeug.security import generate_password_hash
|
from werkzeug.security import generate_password_hash
|
||||||
|
|
||||||
|
from ihatemoney.models import Project, db
|
||||||
from ihatemoney.run import create_app
|
from ihatemoney.run import create_app
|
||||||
from ihatemoney.models import db, Project
|
|
||||||
from ihatemoney.utils import create_jinja_env
|
from ihatemoney.utils import create_jinja_env
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ class GenerateConfig(Command):
|
||||||
|
|
||||||
def run(self, config_file):
|
def run(self, config_file):
|
||||||
env = create_jinja_env("conf-templates", strict_rendering=True)
|
env = create_jinja_env("conf-templates", strict_rendering=True)
|
||||||
template = env.get_template("%s.j2" % config_file)
|
template = env.get_template(f"{config_file}.j2")
|
||||||
|
|
||||||
bin_path = os.path.dirname(sys.executable)
|
bin_path = os.path.dirname(sys.executable)
|
||||||
pkg_path = os.path.abspath(os.path.dirname(__file__))
|
pkg_path = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
|
|
@ -12,6 +12,18 @@ msgstr ""
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Use IP tracking for project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import previously exported JSON file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project identifier"
|
msgid "Project identifier"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -106,6 +118,15 @@ msgstr ""
|
||||||
msgid "The email %(email)s is not valid"
|
msgid "The email %(email)s is not valid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Participant"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bill"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Too many failed login attempts, please retry later."
|
msgid "Too many failed login attempts, please retry later."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -139,6 +160,12 @@ msgstr ""
|
||||||
msgid "Password successfully reset."
|
msgid "Password successfully reset."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project successfully uploaded"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Invalid JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project successfully deleted"
|
msgid "Project successfully deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -150,7 +177,7 @@ msgid "Your invitations have been sent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(member)s had been added"
|
msgid "%(member)s has been added"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
|
@ -204,9 +231,6 @@ msgstr ""
|
||||||
msgid "Create a new project"
|
msgid "Create a new project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Number of members"
|
msgid "Number of members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -228,6 +252,9 @@ msgstr ""
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "see"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "The Dashboard is currently deactivated."
|
msgid "The Dashboard is currently deactivated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -237,6 +264,12 @@ msgstr ""
|
||||||
msgid "Edit project"
|
msgid "Edit project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Choose file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Download project's data"
|
msgid "Download project's data"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -258,6 +291,9 @@ msgstr ""
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Privacy Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Edit the project"
|
msgid "Edit the project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -288,6 +324,177 @@ msgstr ""
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History Settings Changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "from"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Remove IP Adresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to delete all recorded IP addresses from this "
|
||||||
|
"project?\n"
|
||||||
|
" The rest of the project history will be unaffected. This "
|
||||||
|
"action cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Delete"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Confirmation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to erase all history for this project? This action "
|
||||||
|
"cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "and"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "owers list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Who?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Balance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>This project has history disabled. New actions won't "
|
||||||
|
"appear below. You can enable history on the</i>\n"
|
||||||
|
" <a href=\"%(url)s\">settings page</a>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>The table below reflects actions recorded prior to "
|
||||||
|
"disabling project history. You can\n"
|
||||||
|
" <a href=\"#\" data-toggle=\"modal\" data-keyboard=\"false\" "
|
||||||
|
"data-target=\"#confirm-erase\">clear project history</a> to remove "
|
||||||
|
"them.</i></p>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Some entries below contain IP addresses, even though this project has IP "
|
||||||
|
"recording disabled. "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete stored IP addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No history to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Clear Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No IP Addresses to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Stored IP Addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Event"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be enabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be disabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "From IP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project private code changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project contact email changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project settings modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "deactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "reactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "External link changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed in a unknown way"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Nothing to list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Someone probably cleared the project history."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage your shared <br />expenses, easily"
|
msgid "Manage your shared <br />expenses, easily"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -335,6 +542,9 @@ msgstr ""
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -392,6 +602,12 @@ msgstr ""
|
||||||
msgid "Add a new bill"
|
msgid "Add a new bill"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Newer bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Older bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "When?"
|
msgid "When?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -418,9 +634,6 @@ msgstr ""
|
||||||
msgid "each"
|
msgid "each"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "see"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "No bills"
|
msgid "No bills"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -489,15 +702,15 @@ msgstr ""
|
||||||
msgid "To whom?"
|
msgid "To whom?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Who?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Paid"
|
msgid "Paid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Spent"
|
msgid "Spent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Balance"
|
msgid "Expenses by Month"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Period"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ def run_migrations_offline():
|
||||||
|
|
||||||
"""
|
"""
|
||||||
url = config.get_main_option("sqlalchemy.url")
|
url = config.get_main_option("sqlalchemy.url")
|
||||||
context.configure(url=url)
|
context.configure(url=url, include_object=include_object)
|
||||||
|
|
||||||
with context.begin_transaction():
|
with context.begin_transaction():
|
||||||
context.run_migrations()
|
context.run_migrations()
|
||||||
|
@ -75,6 +75,7 @@ def run_migrations_online():
|
||||||
context.configure(
|
context.configure(
|
||||||
connection=connection,
|
connection=connection,
|
||||||
target_metadata=target_metadata,
|
target_metadata=target_metadata,
|
||||||
|
include_object=include_object,
|
||||||
process_revision_directives=process_revision_directives,
|
process_revision_directives=process_revision_directives,
|
||||||
**current_app.extensions["migrate"].configure_args
|
**current_app.extensions["migrate"].configure_args
|
||||||
)
|
)
|
||||||
|
@ -86,6 +87,12 @@ def run_migrations_online():
|
||||||
connection.close()
|
connection.close()
|
||||||
|
|
||||||
|
|
||||||
|
def include_object(object, name, type_, reflected, compare_to):
|
||||||
|
if name == "sqlite_sequence":
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
if context.is_offline_mode():
|
if context.is_offline_mode():
|
||||||
run_migrations_offline()
|
run_migrations_offline()
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -165,6 +165,18 @@ def upgrade():
|
||||||
sa.Column("remote_addr", sa.String(length=50), nullable=True),
|
sa.Column("remote_addr", sa.String(length=50), nullable=True),
|
||||||
sa.PrimaryKeyConstraint("id"),
|
sa.PrimaryKeyConstraint("id"),
|
||||||
)
|
)
|
||||||
|
bind = op.get_bind()
|
||||||
|
if bind.engine.name == "sqlite":
|
||||||
|
with op.batch_alter_table("project", recreate="always") as batch_op:
|
||||||
|
batch_op.add_column(
|
||||||
|
sa.Column(
|
||||||
|
"logging_preference",
|
||||||
|
sa.Enum("DISABLED", "ENABLED", "RECORD_IP", name="loggingmode"),
|
||||||
|
server_default="ENABLED",
|
||||||
|
nullable=False,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
else:
|
||||||
op.add_column(
|
op.add_column(
|
||||||
"project",
|
"project",
|
||||||
sa.Column(
|
sa.Column(
|
||||||
|
@ -179,6 +191,12 @@ def upgrade():
|
||||||
|
|
||||||
def downgrade():
|
def downgrade():
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
|
||||||
|
bind = op.get_bind()
|
||||||
|
if bind.engine.name == "sqlite":
|
||||||
|
with op.batch_alter_table("project", recreate="always") as batch_op:
|
||||||
|
batch_op.drop_column("logging_preference")
|
||||||
|
else:
|
||||||
op.drop_column("project", "logging_preference")
|
op.drop_column("project", "logging_preference")
|
||||||
op.drop_table("transaction")
|
op.drop_table("transaction")
|
||||||
op.drop_index(
|
op.drop_index(
|
||||||
|
|
|
@ -15,6 +15,8 @@ import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
def upgrade():
|
||||||
|
bind = op.get_bind()
|
||||||
|
if bind.engine.name == "sqlite":
|
||||||
alter_table_batches = [
|
alter_table_batches = [
|
||||||
op.batch_alter_table(
|
op.batch_alter_table(
|
||||||
"person", recreate="always", table_kwargs={"sqlite_autoincrement": True}
|
"person", recreate="always", table_kwargs={"sqlite_autoincrement": True}
|
||||||
|
@ -23,7 +25,9 @@ def upgrade():
|
||||||
"bill", recreate="always", table_kwargs={"sqlite_autoincrement": True}
|
"bill", recreate="always", table_kwargs={"sqlite_autoincrement": True}
|
||||||
),
|
),
|
||||||
op.batch_alter_table(
|
op.batch_alter_table(
|
||||||
"billowers", recreate="always", table_kwargs={"sqlite_autoincrement": True}
|
"billowers",
|
||||||
|
recreate="always",
|
||||||
|
table_kwargs={"sqlite_autoincrement": True},
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -33,15 +37,21 @@ def upgrade():
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
def downgrade():
|
||||||
|
bind = op.get_bind()
|
||||||
|
if bind.engine.name == "sqlite":
|
||||||
alter_table_batches = [
|
alter_table_batches = [
|
||||||
op.batch_alter_table(
|
op.batch_alter_table(
|
||||||
"person", recreate="always", table_kwargs={"sqlite_autoincrement": False}
|
"person",
|
||||||
|
recreate="always",
|
||||||
|
table_kwargs={"sqlite_autoincrement": False},
|
||||||
),
|
),
|
||||||
op.batch_alter_table(
|
op.batch_alter_table(
|
||||||
"bill", recreate="always", table_kwargs={"sqlite_autoincrement": False}
|
"bill", recreate="always", table_kwargs={"sqlite_autoincrement": False}
|
||||||
),
|
),
|
||||||
op.batch_alter_table(
|
op.batch_alter_table(
|
||||||
"billowers", recreate="always", table_kwargs={"sqlite_autoincrement": False}
|
"billowers",
|
||||||
|
recreate="always",
|
||||||
|
table_kwargs={"sqlite_autoincrement": False},
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -1,33 +1,29 @@
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
import sqlalchemy
|
|
||||||
from flask_sqlalchemy import SQLAlchemy, BaseQuery
|
|
||||||
from flask import g, current_app
|
|
||||||
|
|
||||||
from debts import settle
|
from debts import settle
|
||||||
from sqlalchemy import orm
|
from flask import current_app, g
|
||||||
from sqlalchemy.sql import func
|
from flask_sqlalchemy import BaseQuery, SQLAlchemy
|
||||||
from itsdangerous import (
|
from itsdangerous import (
|
||||||
TimedJSONWebSignatureSerializer,
|
|
||||||
URLSafeSerializer,
|
|
||||||
BadSignature,
|
BadSignature,
|
||||||
SignatureExpired,
|
SignatureExpired,
|
||||||
|
TimedJSONWebSignatureSerializer,
|
||||||
|
URLSafeSerializer,
|
||||||
)
|
)
|
||||||
from sqlalchemy_continuum import make_versioned
|
import sqlalchemy
|
||||||
|
from sqlalchemy import orm
|
||||||
|
from sqlalchemy.sql import func
|
||||||
|
from sqlalchemy_continuum import make_versioned, version_class
|
||||||
from sqlalchemy_continuum.plugins import FlaskPlugin
|
from sqlalchemy_continuum.plugins import FlaskPlugin
|
||||||
from sqlalchemy_continuum import version_class
|
|
||||||
|
|
||||||
from ihatemoney.patch_sqlalchemy_continuum import PatchedBuilder
|
from ihatemoney.patch_sqlalchemy_continuum import PatchedBuilder
|
||||||
from ihatemoney.versioning import (
|
from ihatemoney.versioning import (
|
||||||
LoggingMode,
|
|
||||||
ConditionalVersioningManager,
|
ConditionalVersioningManager,
|
||||||
version_privacy_predicate,
|
LoggingMode,
|
||||||
get_ip_if_allowed,
|
get_ip_if_allowed,
|
||||||
|
version_privacy_predicate,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
make_versioned(
|
make_versioned(
|
||||||
user_cls=None,
|
user_cls=None,
|
||||||
manager=ConditionalVersioningManager(
|
manager=ConditionalVersioningManager(
|
||||||
|
@ -327,7 +323,7 @@ class Project(db.Model):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<Project %s>" % self.name
|
return f"<Project {self.name}>"
|
||||||
|
|
||||||
|
|
||||||
class Person(db.Model):
|
class Person(db.Model):
|
||||||
|
@ -385,7 +381,7 @@ class Person(db.Model):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<Person %s for project %s>" % (self.name, self.project.name)
|
return f"<Person {self.name} for project {self.project.name}>"
|
||||||
|
|
||||||
|
|
||||||
# We need to manually define a join table for m2m relations
|
# We need to manually define a join table for m2m relations
|
||||||
|
@ -466,13 +462,12 @@ class Bill(db.Model):
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "%s for %s" % (self.amount, self.what)
|
return self.what
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<Bill of %s from %s for %s>" % (
|
return (
|
||||||
self.amount,
|
f"<Bill of {self.amount} from {self.payer} for "
|
||||||
self.payer,
|
f"{', '.join([o.name for o in self.owers])}>"
|
||||||
", ".join([o.name for o in self.owers]),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ from sqlalchemy_continuum import Operation
|
||||||
from sqlalchemy_continuum.builder import Builder
|
from sqlalchemy_continuum.builder import Builder
|
||||||
from sqlalchemy_continuum.expression_reflector import VersionExpressionReflector
|
from sqlalchemy_continuum.expression_reflector import VersionExpressionReflector
|
||||||
from sqlalchemy_continuum.relationship_builder import RelationshipBuilder
|
from sqlalchemy_continuum.relationship_builder import RelationshipBuilder
|
||||||
from sqlalchemy_continuum.utils import option, adapt_columns
|
from sqlalchemy_continuum.utils import adapt_columns, option
|
||||||
|
|
||||||
|
|
||||||
class PatchedRelationShipBuilder(RelationshipBuilder):
|
class PatchedRelationShipBuilder(RelationshipBuilder):
|
||||||
|
|
|
@ -2,12 +2,13 @@ import os
|
||||||
import os.path
|
import os.path
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
from flask import Flask, g, request, session, render_template
|
from flask import Flask, g, render_template, request, session
|
||||||
from flask_babel import Babel
|
from flask_babel import Babel
|
||||||
from flask_mail import Mail
|
from flask_mail import Mail
|
||||||
from flask_migrate import Migrate, upgrade, stamp
|
from flask_migrate import Migrate, stamp, upgrade
|
||||||
from werkzeug.middleware.proxy_fix import ProxyFix
|
from werkzeug.middleware.proxy_fix import ProxyFix
|
||||||
|
|
||||||
|
from ihatemoney import default_settings
|
||||||
from ihatemoney.api.v1 import api as apiv1
|
from ihatemoney.api.v1 import api as apiv1
|
||||||
from ihatemoney.models import db
|
from ihatemoney.models import db
|
||||||
from ihatemoney.utils import (
|
from ihatemoney.utils import (
|
||||||
|
@ -19,8 +20,6 @@ from ihatemoney.utils import (
|
||||||
)
|
)
|
||||||
from ihatemoney.web import main as web_interface
|
from ihatemoney.web import main as web_interface
|
||||||
|
|
||||||
from ihatemoney import default_settings
|
|
||||||
|
|
||||||
|
|
||||||
def setup_database(app):
|
def setup_database(app):
|
||||||
"""Prepare the database. Create tables, run migrations etc."""
|
"""Prepare the database. Create tables, run migrations etc."""
|
||||||
|
|
|
@ -10,4 +10,5 @@
|
||||||
<div class="col-xs-12 col-sm-5 col-md-4 offset-md-2">
|
<div class="col-xs-12 col-sm-5 col-md-4 offset-md-2">
|
||||||
<a href='{{ url_for("main.home") }}'>{{ _("The best thing to do is probably to get back to the main page.")}}</a>
|
<a href='{{ url_for("main.home") }}'>{{ _("The best thing to do is probably to get back to the main page.")}}</a>
|
||||||
</div>
|
</div>
|
||||||
|
</main>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -124,18 +124,25 @@
|
||||||
{% if current_log_pref == LoggingMode.DISABLED or (current_log_pref != LoggingMode.RECORD_IP and any_ip_addresses) %}
|
{% if current_log_pref == LoggingMode.DISABLED or (current_log_pref != LoggingMode.RECORD_IP and any_ip_addresses) %}
|
||||||
<div id="history_warnings" class="card card-body bg-light">
|
<div id="history_warnings" class="card card-body bg-light">
|
||||||
{% if current_log_pref == LoggingMode.DISABLED %}
|
{% if current_log_pref == LoggingMode.DISABLED %}
|
||||||
<p>
|
<p>{% set url = url_for(".edit_project") %}
|
||||||
<i>{{ _("This project has history disabled. New actions won't appear below. You can enable history on the") }}</i>
|
{% trans %}
|
||||||
<a href="{{ url_for(".edit_project") }}">{{ _("settings page") }}</a>
|
<i>This project has history disabled. New actions won't appear below. You can enable history on the</i>
|
||||||
|
<a href="{{ url }}">settings page</a>
|
||||||
|
{% endtrans %}
|
||||||
</p>
|
</p>
|
||||||
{% if history %}
|
{% if history %}
|
||||||
<p><i>{{ _("The table below reflects actions recorded prior to disabling project history. You can ") }}
|
<p>
|
||||||
<a href="#" data-toggle="modal" data-keyboard="false" data-target="#confirm-erase">{{ _("clear project history") }}</a> {{ _("to remove them.") }}</i></p>
|
{% trans %}
|
||||||
|
<i>The table below reflects actions recorded prior to disabling project history. You can
|
||||||
|
<a href="#" data-toggle="modal" data-keyboard="false" data-target="#confirm-erase">clear project history</a> to remove them.</i></p>
|
||||||
|
{% endtrans %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if current_log_pref != LoggingMode.RECORD_IP and any_ip_addresses %}
|
{% if current_log_pref != LoggingMode.RECORD_IP and any_ip_addresses %}
|
||||||
<p><i>{{ _("Some entries below contain IP addresses, even though this project has IP recording disabled. ") }}
|
<p>
|
||||||
<a href="#" data-toggle="modal" data-keyboard="false" data-target="#confirm-ip-delete">{{ _("Delete stored IP addresses") }}</a></i></p>
|
<i>{{ _("Some entries below contain IP addresses, even though this project has IP recording disabled. ") }}
|
||||||
|
<a href="#" data-toggle="modal" data-keyboard="false" data-target="#confirm-ip-delete">{{ _("Delete stored IP addresses") }}</a></i>
|
||||||
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -160,10 +167,11 @@
|
||||||
<th style="width: 15%">{{ _("Time") }}</th>
|
<th style="width: 15%">{{ _("Time") }}</th>
|
||||||
<th style="width: 65%">{{ _("Event") }}</th>
|
<th style="width: 65%">{{ _("Event") }}</th>
|
||||||
<th style="width: 20%">
|
<th style="width: 20%">
|
||||||
<span data-toggle="tooltip" title="{{_('IP address recording can be') }}
|
<span data-toggle="tooltip" title="{% if current_log_pref != LoggingMode.RECORD_IP %}
|
||||||
{% if current_log_pref != LoggingMode.RECORD_IP %}
|
{{_('IP address recording can be enabled on the settings page') }}
|
||||||
{{ _("enabled") }}{% else %}{{ _("disabled") }}{% endif %}
|
{% else %}
|
||||||
{{ _('on the Settings page') }}">
|
{{_('IP address recording can be disabled on the settings page') }}
|
||||||
|
{% endif %}">
|
||||||
{{ _("From IP") }}</span></th>
|
{{ _("From IP") }}</span></th>
|
||||||
</tr></thead>
|
</tr></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -201,7 +209,7 @@
|
||||||
{{ event.object_type }} <em class="font-italic">{{ event.object_desc }}</em>
|
{{ event.object_type }} <em class="font-italic">{{ event.object_desc }}</em>
|
||||||
{% if event.val_after == False %}{{ _("deactivated") }}{% else %}{{ _("reactivated") }}{% endif %}
|
{% if event.val_after == False %}{{ _("deactivated") }}{% else %}{{ _("reactivated") }}{% endif %}
|
||||||
{% elif event.prop_changed == "name" or event.prop_changed == "what" %}
|
{% elif event.prop_changed == "name" or event.prop_changed == "what" %}
|
||||||
{{ describe_object(event) }} {{ _("renamed") }} {{ _("to") }} <em class="font-italic">{{ event.val_after }}</em>
|
{{ describe_object(event) }} {{ _("renamed to") }} <em class="font-italic">{{ event.val_after }}</em>
|
||||||
{% elif event.prop_changed == "weight" %}
|
{% elif event.prop_changed == "weight" %}
|
||||||
{{ simple_property_change(event, _("Weight")) }}
|
{{ simple_property_change(event, _("Weight")) }}
|
||||||
{% elif event.prop_changed == "external_link" %}
|
{% elif event.prop_changed == "external_link" %}
|
||||||
|
@ -240,8 +248,7 @@
|
||||||
<i class="icon icon-white hand-holding-heart">{{ static_include("images/hand-holding-heart.svg") | safe }}</i>
|
<i class="icon icon-white hand-holding-heart">{{ static_include("images/hand-holding-heart.svg") | safe }}</i>
|
||||||
<h3>{{ _('Nothing to list')}}</h3>
|
<h3>{{ _('Nothing to list')}}</h3>
|
||||||
<p>
|
<p>
|
||||||
{{ _("Someone probably") }}<br />
|
{{ _("Someone probably cleared the project history.") }}
|
||||||
{{ _("cleared the project history.") }}
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div></div>
|
</div></div>
|
||||||
|
|
|
@ -1,26 +1,22 @@
|
||||||
# coding: utf8
|
import base64
|
||||||
|
from collections import defaultdict
|
||||||
|
import datetime
|
||||||
|
import io
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
from time import sleep
|
||||||
import unittest
|
import unittest
|
||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
import datetime
|
|
||||||
import os
|
|
||||||
import io
|
|
||||||
import json
|
|
||||||
import base64
|
|
||||||
|
|
||||||
from collections import defaultdict
|
|
||||||
from time import sleep
|
|
||||||
|
|
||||||
from werkzeug.security import generate_password_hash, check_password_hash
|
|
||||||
from flask import session
|
from flask import session
|
||||||
from flask_testing import TestCase
|
from flask_testing import TestCase
|
||||||
|
|
||||||
from ihatemoney.run import create_app, db, load_configuration
|
|
||||||
from ihatemoney.manage import GenerateConfig, GeneratePasswordHash, DeleteProject
|
|
||||||
from ihatemoney import models, history
|
|
||||||
from ihatemoney.versioning import LoggingMode
|
|
||||||
from ihatemoney import utils
|
|
||||||
from sqlalchemy import orm
|
from sqlalchemy import orm
|
||||||
|
from werkzeug.security import check_password_hash, generate_password_hash
|
||||||
|
|
||||||
|
from ihatemoney import history, models, utils
|
||||||
|
from ihatemoney.manage import DeleteProject, GenerateConfig, GeneratePasswordHash
|
||||||
|
from ihatemoney.run import create_app, db, load_configuration
|
||||||
|
from ihatemoney.versioning import LoggingMode
|
||||||
|
|
||||||
# Unset configuration file env var if previously set
|
# Unset configuration file env var if previously set
|
||||||
os.environ.pop("IHATEMONEY_SETTINGS_FILE_PATH", None)
|
os.environ.pop("IHATEMONEY_SETTINGS_FILE_PATH", None)
|
||||||
|
@ -62,7 +58,7 @@ class BaseTestCase(TestCase):
|
||||||
"name": name,
|
"name": name,
|
||||||
"id": name,
|
"id": name,
|
||||||
"password": name,
|
"password": name,
|
||||||
"contact_email": "%s@notmyidea.org" % name,
|
"contact_email": f"{name}@notmyidea.org",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -71,7 +67,7 @@ class BaseTestCase(TestCase):
|
||||||
id=name,
|
id=name,
|
||||||
name=str(name),
|
name=str(name),
|
||||||
password=generate_password_hash(name),
|
password=generate_password_hash(name),
|
||||||
contact_email="%s@notmyidea.org" % name,
|
contact_email=f"{name}@notmyidea.org",
|
||||||
)
|
)
|
||||||
models.db.session.add(project)
|
models.db.session.add(project)
|
||||||
models.db.session.commit()
|
models.db.session.commit()
|
||||||
|
@ -86,7 +82,7 @@ class IhatemoneyTestCase(BaseTestCase):
|
||||||
return self.assertEqual(
|
return self.assertEqual(
|
||||||
expected,
|
expected,
|
||||||
resp.status_code,
|
resp.status_code,
|
||||||
"%s expected %s, got %s" % (url, expected, resp.status_code),
|
f"{url} expected {expected}, got {resp.status_code}",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -413,7 +409,7 @@ class BudgetTestCase(IhatemoneyTestCase):
|
||||||
)
|
)
|
||||||
|
|
||||||
# remove fred
|
# remove fred
|
||||||
self.client.post("/raclette/members/%s/delete" % fred_id)
|
self.client.post(f"/raclette/members/{fred_id}/delete")
|
||||||
|
|
||||||
# he is still in the database, but is deactivated
|
# he is still in the database, but is deactivated
|
||||||
self.assertEqual(len(models.Project.query.get("raclette").members), 2)
|
self.assertEqual(len(models.Project.query.get("raclette").members), 2)
|
||||||
|
@ -423,7 +419,7 @@ class BudgetTestCase(IhatemoneyTestCase):
|
||||||
# a bill or displaying the balance
|
# a bill or displaying the balance
|
||||||
result = self.client.get("/raclette/")
|
result = self.client.get("/raclette/")
|
||||||
self.assertNotIn(
|
self.assertNotIn(
|
||||||
("/raclette/members/%s/delete" % fred_id), result.data.decode("utf-8")
|
(f"/raclette/members/{fred_id}/delete"), result.data.decode("utf-8")
|
||||||
)
|
)
|
||||||
|
|
||||||
result = self.client.get("/raclette/add")
|
result = self.client.get("/raclette/add")
|
||||||
|
@ -622,7 +618,7 @@ class BudgetTestCase(IhatemoneyTestCase):
|
||||||
|
|
||||||
# edit the bill
|
# edit the bill
|
||||||
self.client.post(
|
self.client.post(
|
||||||
"/raclette/edit/%s" % bill.id,
|
f"/raclette/edit/{bill.id}",
|
||||||
data={
|
data={
|
||||||
"date": "2011-08-10",
|
"date": "2011-08-10",
|
||||||
"what": "fromage à raclette",
|
"what": "fromage à raclette",
|
||||||
|
@ -636,7 +632,7 @@ class BudgetTestCase(IhatemoneyTestCase):
|
||||||
self.assertEqual(bill.amount, 10, "bill edition")
|
self.assertEqual(bill.amount, 10, "bill edition")
|
||||||
|
|
||||||
# delete the bill
|
# delete the bill
|
||||||
self.client.get("/raclette/delete/%s" % bill.id)
|
self.client.get(f"/raclette/delete/{bill.id}")
|
||||||
self.assertEqual(0, len(models.Bill.query.all()), "bill deletion")
|
self.assertEqual(0, len(models.Bill.query.all()), "bill deletion")
|
||||||
|
|
||||||
# test balance
|
# test balance
|
||||||
|
@ -1082,7 +1078,7 @@ class BudgetTestCase(IhatemoneyTestCase):
|
||||||
self.assertNotEqual(
|
self.assertNotEqual(
|
||||||
0.0,
|
0.0,
|
||||||
rounded_amount,
|
rounded_amount,
|
||||||
msg="%f is equal to zero after rounding" % t["amount"],
|
msg=f"{t['amount']} is equal to zero after rounding",
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_export(self):
|
def test_export(self):
|
||||||
|
@ -1428,7 +1424,7 @@ class APITestCase(IhatemoneyTestCase):
|
||||||
def api_create(self, name, id=None, password=None, contact=None):
|
def api_create(self, name, id=None, password=None, contact=None):
|
||||||
id = id or name
|
id = id or name
|
||||||
password = password or name
|
password = password or name
|
||||||
contact = contact or "%s@notmyidea.org" % name
|
contact = contact or f"{name}@notmyidea.org"
|
||||||
|
|
||||||
return self.client.post(
|
return self.client.post(
|
||||||
"/api/projects",
|
"/api/projects",
|
||||||
|
@ -1442,7 +1438,7 @@ class APITestCase(IhatemoneyTestCase):
|
||||||
|
|
||||||
def api_add_member(self, project, name, weight=1):
|
def api_add_member(self, project, name, weight=1):
|
||||||
self.client.post(
|
self.client.post(
|
||||||
"/api/projects/%s/members" % project,
|
f"/api/projects/{project}/members",
|
||||||
data={"name": name, "weight": weight},
|
data={"name": name, "weight": weight},
|
||||||
headers=self.get_auth(project),
|
headers=self.get_auth(project),
|
||||||
)
|
)
|
||||||
|
@ -1450,11 +1446,11 @@ class APITestCase(IhatemoneyTestCase):
|
||||||
def get_auth(self, username, password=None):
|
def get_auth(self, username, password=None):
|
||||||
password = password or username
|
password = password or username
|
||||||
base64string = (
|
base64string = (
|
||||||
base64.encodebytes(("%s:%s" % (username, password)).encode("utf-8"))
|
base64.encodebytes(f"{username}:{password}".encode("utf-8"))
|
||||||
.decode("utf-8")
|
.decode("utf-8")
|
||||||
.replace("\n", "")
|
.replace("\n", "")
|
||||||
)
|
)
|
||||||
return {"Authorization": "Basic %s" % base64string}
|
return {"Authorization": f"Basic {base64string}"}
|
||||||
|
|
||||||
def test_cors_requests(self):
|
def test_cors_requests(self):
|
||||||
# Create a project and test that CORS headers are present if requested.
|
# Create a project and test that CORS headers are present if requested.
|
||||||
|
@ -1610,7 +1606,7 @@ class APITestCase(IhatemoneyTestCase):
|
||||||
# Access with token
|
# Access with token
|
||||||
resp = self.client.get(
|
resp = self.client.get(
|
||||||
"/api/projects/raclette/token",
|
"/api/projects/raclette/token",
|
||||||
headers={"Authorization": "Basic %s" % decoded_resp["token"]},
|
headers={"Authorization": f"Basic {decoded_resp['token']}"},
|
||||||
)
|
)
|
||||||
|
|
||||||
self.assertEqual(200, resp.status_code)
|
self.assertEqual(200, resp.status_code)
|
||||||
|
@ -2139,10 +2135,10 @@ class APITestCase(IhatemoneyTestCase):
|
||||||
resp = self.client.get("/raclette/history", follow_redirects=True)
|
resp = self.client.get("/raclette/history", follow_redirects=True)
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"Person %s added" % em_surround("alexis"), resp.data.decode("utf-8")
|
f"Participant {em_surround('alexis')} added", resp.data.decode("utf-8")
|
||||||
)
|
)
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"Project %s added" % em_surround("raclette"), resp.data.decode("utf-8"),
|
f"Project {em_surround('raclette')} added", resp.data.decode("utf-8"),
|
||||||
)
|
)
|
||||||
self.assertEqual(resp.data.decode("utf-8").count("<td> -- </td>"), 2)
|
self.assertEqual(resp.data.decode("utf-8").count("<td> -- </td>"), 2)
|
||||||
self.assertNotIn("127.0.0.1", resp.data.decode("utf-8"))
|
self.assertNotIn("127.0.0.1", resp.data.decode("utf-8"))
|
||||||
|
@ -2278,7 +2274,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
resp = self.client.get("/demo/history")
|
resp = self.client.get("/demo/history")
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"Project %s added" % em_surround("demo"), resp.data.decode("utf-8"),
|
f"Project {em_surround('demo')} added", resp.data.decode("utf-8"),
|
||||||
)
|
)
|
||||||
self.assertEqual(resp.data.decode("utf-8").count("<td> -- </td>"), 1)
|
self.assertEqual(resp.data.decode("utf-8").count("<td> -- </td>"), 1)
|
||||||
self.assertNotIn("127.0.0.1", resp.data.decode("utf-8"))
|
self.assertNotIn("127.0.0.1", resp.data.decode("utf-8"))
|
||||||
|
@ -2334,7 +2330,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
self.assertNotIn("127.0.0.1", resp.data.decode("utf-8"))
|
self.assertNotIn("127.0.0.1", resp.data.decode("utf-8"))
|
||||||
self.assertNotIn("<td> -- </td>", resp.data.decode("utf-8"))
|
self.assertNotIn("<td> -- </td>", resp.data.decode("utf-8"))
|
||||||
self.assertNotIn(
|
self.assertNotIn(
|
||||||
"Project %s added" % em_surround("demo"), resp.data.decode("utf-8")
|
f"Project {em_surround('demo')} added", resp.data.decode("utf-8")
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_project_edit(self):
|
def test_project_edit(self):
|
||||||
|
@ -2350,18 +2346,16 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
|
|
||||||
resp = self.client.get("/demo/history")
|
resp = self.client.get("/demo/history")
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
|
self.assertIn(f"Project {em_surround('demo')} added", resp.data.decode("utf-8"))
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"Project %s added" % em_surround("demo"), resp.data.decode("utf-8")
|
f"Project contact email changed to {em_surround('demo2@notmyidea.org')}",
|
||||||
)
|
|
||||||
self.assertIn(
|
|
||||||
"Project contact email changed to %s" % em_surround("demo2@notmyidea.org"),
|
|
||||||
resp.data.decode("utf-8"),
|
resp.data.decode("utf-8"),
|
||||||
)
|
)
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"Project private code changed", resp.data.decode("utf-8"),
|
"Project private code changed", resp.data.decode("utf-8"),
|
||||||
)
|
)
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"Project renamed to %s" % em_surround("demo2"), resp.data.decode("utf-8"),
|
f"Project renamed to {em_surround('demo2')}", resp.data.decode("utf-8"),
|
||||||
)
|
)
|
||||||
self.assertLess(
|
self.assertLess(
|
||||||
resp.data.decode("utf-8").index("Project renamed "),
|
resp.data.decode("utf-8").index("Project renamed "),
|
||||||
|
@ -2477,7 +2471,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
|
|
||||||
# edit the bill
|
# edit the bill
|
||||||
resp = self.client.post(
|
resp = self.client.post(
|
||||||
"/demo/edit/%i" % bill_id,
|
f"/demo/edit/{bill_id}",
|
||||||
data={
|
data={
|
||||||
"date": "2011-08-10",
|
"date": "2011-08-10",
|
||||||
"what": "fromage à raclette",
|
"what": "fromage à raclette",
|
||||||
|
@ -2489,12 +2483,12 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
)
|
)
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
# delete the bill
|
# delete the bill
|
||||||
resp = self.client.get("/demo/delete/%i" % bill_id, follow_redirects=True)
|
resp = self.client.get(f"/demo/delete/{bill_id}", follow_redirects=True)
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
|
|
||||||
# delete user using POST method
|
# delete user using POST method
|
||||||
resp = self.client.post(
|
resp = self.client.post(
|
||||||
"/demo/members/%i/delete" % user_id, follow_redirects=True
|
f"/demo/members/{user_id}/delete", follow_redirects=True
|
||||||
)
|
)
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
|
|
||||||
|
@ -2596,7 +2590,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
resp = self.client.get("/demo/history")
|
resp = self.client.get("/demo/history")
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"Person %s added" % em_surround("alexis"), resp.data.decode("utf-8")
|
f"Participant {em_surround('alexis')} added", resp.data.decode("utf-8")
|
||||||
)
|
)
|
||||||
|
|
||||||
# create a bill
|
# create a bill
|
||||||
|
@ -2616,7 +2610,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
resp = self.client.get("/demo/history")
|
resp = self.client.get("/demo/history")
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"Bill %s added" % em_surround("25.0 for fromage à raclette"),
|
f"Bill {em_surround('fromage à raclette')} added",
|
||||||
resp.data.decode("utf-8"),
|
resp.data.decode("utf-8"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -2637,26 +2631,26 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
resp = self.client.get("/demo/history")
|
resp = self.client.get("/demo/history")
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"Bill %s added" % em_surround("25.0 for fromage à raclette"),
|
f"Bill {em_surround('fromage à raclette')} added",
|
||||||
resp.data.decode("utf-8"),
|
resp.data.decode("utf-8"),
|
||||||
)
|
)
|
||||||
self.assertRegex(
|
self.assertRegex(
|
||||||
resp.data.decode("utf-8"),
|
resp.data.decode("utf-8"),
|
||||||
r"Bill %s:\s* Amount changed\s* from %s\s* to %s"
|
r"Bill %s:\s* Amount changed\s* from %s\s* to %s"
|
||||||
% (
|
% (
|
||||||
em_surround("25.0 for fromage à raclette", regex_escape=True),
|
em_surround("fromage à raclette", regex_escape=True),
|
||||||
em_surround("25.0", regex_escape=True),
|
em_surround("25.0", regex_escape=True),
|
||||||
em_surround("10.0", regex_escape=True),
|
em_surround("10.0", regex_escape=True),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"Bill %s renamed to %s"
|
"Bill %s renamed to %s"
|
||||||
% (em_surround("25.0 for fromage à raclette"), em_surround("new thing"),),
|
% (em_surround("fromage à raclette"), em_surround("new thing"),),
|
||||||
resp.data.decode("utf-8"),
|
resp.data.decode("utf-8"),
|
||||||
)
|
)
|
||||||
self.assertLess(
|
self.assertLess(
|
||||||
resp.data.decode("utf-8").index(
|
resp.data.decode("utf-8").index(
|
||||||
"Bill %s renamed to" % em_surround("25.0 for fromage à raclette")
|
f"Bill {em_surround('fromage à raclette')} renamed to"
|
||||||
),
|
),
|
||||||
resp.data.decode("utf-8").index("Amount changed"),
|
resp.data.decode("utf-8").index("Amount changed"),
|
||||||
)
|
)
|
||||||
|
@ -2668,8 +2662,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
resp = self.client.get("/demo/history")
|
resp = self.client.get("/demo/history")
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"Bill %s removed" % em_surround("10.0 for new thing"),
|
f"Bill {em_surround('new thing')} removed", resp.data.decode("utf-8"),
|
||||||
resp.data.decode("utf-8"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# edit user
|
# edit user
|
||||||
|
@ -2684,7 +2677,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
self.assertRegex(
|
self.assertRegex(
|
||||||
resp.data.decode("utf-8"),
|
resp.data.decode("utf-8"),
|
||||||
r"Person %s:\s* Weight changed\s* from %s\s* to %s"
|
r"Participant %s:\s* Weight changed\s* from %s\s* to %s"
|
||||||
% (
|
% (
|
||||||
em_surround("alexis", regex_escape=True),
|
em_surround("alexis", regex_escape=True),
|
||||||
em_surround("1.0", regex_escape=True),
|
em_surround("1.0", regex_escape=True),
|
||||||
|
@ -2692,13 +2685,13 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"Person %s renamed to %s"
|
"Participant %s renamed to %s"
|
||||||
% (em_surround("alexis"), em_surround("new name"),),
|
% (em_surround("alexis"), em_surround("new name"),),
|
||||||
resp.data.decode("utf-8"),
|
resp.data.decode("utf-8"),
|
||||||
)
|
)
|
||||||
self.assertLess(
|
self.assertLess(
|
||||||
resp.data.decode("utf-8").index(
|
resp.data.decode("utf-8").index(
|
||||||
"Person %s renamed" % em_surround("alexis")
|
f"Participant {em_surround('alexis')} renamed"
|
||||||
),
|
),
|
||||||
resp.data.decode("utf-8").index("Weight changed"),
|
resp.data.decode("utf-8").index("Weight changed"),
|
||||||
)
|
)
|
||||||
|
@ -2710,7 +2703,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
resp = self.client.get("/demo/history")
|
resp = self.client.get("/demo/history")
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"Person %s removed" % em_surround("new name"), resp.data.decode("utf-8")
|
f"Participant {em_surround('new name')} removed", resp.data.decode("utf-8")
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_double_bill_double_person_edit_second(self):
|
def test_double_bill_double_person_edit_second(self):
|
||||||
|
@ -2763,9 +2756,8 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
self.assertRegex(
|
self.assertRegex(
|
||||||
resp.data.decode("utf-8"),
|
resp.data.decode("utf-8"),
|
||||||
r"Bill %s:\s* Amount changed\s* from %s\s* to %s"
|
r"Bill {}:\s* Amount changed\s* from {}\s* to {}".format(
|
||||||
% (
|
em_surround("Bill 1", regex_escape=True),
|
||||||
em_surround("25.0 for Bill 1", regex_escape=True),
|
|
||||||
em_surround("25.0", regex_escape=True),
|
em_surround("25.0", regex_escape=True),
|
||||||
em_surround("88.0", regex_escape=True),
|
em_surround("88.0", regex_escape=True),
|
||||||
),
|
),
|
||||||
|
@ -2773,8 +2765,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
|
|
||||||
self.assertNotRegex(
|
self.assertNotRegex(
|
||||||
resp.data.decode("utf-8"),
|
resp.data.decode("utf-8"),
|
||||||
r"Removed\s* %s\s* and\s* %s\s* from\s* owers list"
|
r"Removed\s* {}\s* and\s* {}\s* from\s* owers list".format(
|
||||||
% (
|
|
||||||
em_surround("User 1", regex_escape=True),
|
em_surround("User 1", regex_escape=True),
|
||||||
em_surround("User 2", regex_escape=True),
|
em_surround("User 2", regex_escape=True),
|
||||||
),
|
),
|
||||||
|
@ -2809,12 +2800,9 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
self.assertEqual(resp.data.decode("utf-8").count("<td> -- </td>"), 5)
|
self.assertEqual(resp.data.decode("utf-8").count("<td> -- </td>"), 5)
|
||||||
self.assertNotIn("127.0.0.1", resp.data.decode("utf-8"))
|
self.assertNotIn("127.0.0.1", resp.data.decode("utf-8"))
|
||||||
|
self.assertIn(f"Bill {em_surround('Bill 1')} added", resp.data.decode("utf-8"))
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"Bill %s added" % em_surround("25.0 for Bill 1"), resp.data.decode("utf-8")
|
f"Bill {em_surround('Bill 1')} removed", resp.data.decode("utf-8"),
|
||||||
)
|
|
||||||
self.assertIn(
|
|
||||||
"Bill %s removed" % em_surround("25.0 for Bill 1"),
|
|
||||||
resp.data.decode("utf-8"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Add a new bill
|
# Add a new bill
|
||||||
|
@ -2833,21 +2821,13 @@ class HistoryTestCase(IhatemoneyTestCase):
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
self.assertEqual(resp.data.decode("utf-8").count("<td> -- </td>"), 6)
|
self.assertEqual(resp.data.decode("utf-8").count("<td> -- </td>"), 6)
|
||||||
self.assertNotIn("127.0.0.1", resp.data.decode("utf-8"))
|
self.assertNotIn("127.0.0.1", resp.data.decode("utf-8"))
|
||||||
self.assertIn(
|
self.assertIn(f"Bill {em_surround('Bill 1')} added", resp.data.decode("utf-8"))
|
||||||
"Bill %s added" % em_surround("25.0 for Bill 1"), resp.data.decode("utf-8")
|
|
||||||
)
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
resp.data.decode("utf-8").count(
|
resp.data.decode("utf-8").count(f"Bill {em_surround('Bill 1')} added"), 1,
|
||||||
"Bill %s added" % em_surround("25.0 for Bill 1")
|
|
||||||
),
|
|
||||||
1,
|
|
||||||
)
|
)
|
||||||
|
self.assertIn(f"Bill {em_surround('Bill 2')} added", resp.data.decode("utf-8"))
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"Bill %s added" % em_surround("20.0 for Bill 2"), resp.data.decode("utf-8")
|
f"Bill {em_surround('Bill 1')} removed", resp.data.decode("utf-8"),
|
||||||
)
|
|
||||||
self.assertIn(
|
|
||||||
"Bill %s removed" % em_surround("25.0 for Bill 1"),
|
|
||||||
resp.data.decode("utf-8"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_double_bill_double_person_edit_second_no_web(self):
|
def test_double_bill_double_person_edit_second_no_web(self):
|
||||||
|
|
BIN
ihatemoney/translations/cs/LC_MESSAGES/messages.mo
Normal file
BIN
ihatemoney/translations/cs/LC_MESSAGES/messages.mo
Normal file
Binary file not shown.
|
@ -1,16 +1,18 @@
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-10-24 18:27+0200\n"
|
"POT-Creation-Date: 2020-04-25 13:02+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: Automatically generated\n"
|
"Last-Translator: Automatically generated\n"
|
||||||
"Language-Team: none\n"
|
|
||||||
"Language: cs\n"
|
"Language: cs\n"
|
||||||
|
"Language-Team: none\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Translate Toolkit 2.4.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||||
|
@ -26,6 +28,18 @@ msgstr ""
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Use IP tracking for project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import previously exported JSON file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project identifier"
|
msgid "Project identifier"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -120,6 +134,15 @@ msgstr ""
|
||||||
msgid "The email %(email)s is not valid"
|
msgid "The email %(email)s is not valid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Participant"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bill"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Too many failed login attempts, please retry later."
|
msgid "Too many failed login attempts, please retry later."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -153,6 +176,12 @@ msgstr ""
|
||||||
msgid "Password successfully reset."
|
msgid "Password successfully reset."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project successfully uploaded"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Invalid JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project successfully deleted"
|
msgid "Project successfully deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -164,7 +193,7 @@ msgid "Your invitations have been sent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(member)s had been added"
|
msgid "%(member)s has been added"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
|
@ -218,9 +247,6 @@ msgstr ""
|
||||||
msgid "Create a new project"
|
msgid "Create a new project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Number of members"
|
msgid "Number of members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -242,6 +268,9 @@ msgstr ""
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "see"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "The Dashboard is currently deactivated."
|
msgid "The Dashboard is currently deactivated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -251,6 +280,12 @@ msgstr ""
|
||||||
msgid "Edit project"
|
msgid "Edit project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Choose file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Download project's data"
|
msgid "Download project's data"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -272,6 +307,9 @@ msgstr ""
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Privacy Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Edit the project"
|
msgid "Edit the project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -302,6 +340,177 @@ msgstr ""
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History Settings Changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "from"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Remove IP Adresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to delete all recorded IP addresses from this "
|
||||||
|
"project?\n"
|
||||||
|
" The rest of the project history will be unaffected. This "
|
||||||
|
"action cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Delete"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Confirmation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to erase all history for this project? This action "
|
||||||
|
"cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "and"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "owers list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Who?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Balance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>This project has history disabled. New actions won't "
|
||||||
|
"appear below. You can enable history on the</i>\n"
|
||||||
|
" <a href=\"%(url)s\">settings page</a>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>The table below reflects actions recorded prior to "
|
||||||
|
"disabling project history. You can\n"
|
||||||
|
" <a href=\"#\" data-toggle=\"modal\" data-keyboard=\"false\" "
|
||||||
|
"data-target=\"#confirm-erase\">clear project history</a> to remove "
|
||||||
|
"them.</i></p>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Some entries below contain IP addresses, even though this project has IP "
|
||||||
|
"recording disabled. "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete stored IP addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No history to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Clear Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No IP Addresses to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Stored IP Addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Event"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be enabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be disabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "From IP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project private code changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project contact email changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project settings modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "deactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "reactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "External link changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed in a unknown way"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Nothing to list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Someone probably cleared the project history."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage your shared <br />expenses, easily"
|
msgid "Manage your shared <br />expenses, easily"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -349,6 +558,9 @@ msgstr ""
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -406,6 +618,12 @@ msgstr ""
|
||||||
msgid "Add a new bill"
|
msgid "Add a new bill"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Newer bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Older bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "When?"
|
msgid "When?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -432,9 +650,6 @@ msgstr ""
|
||||||
msgid "each"
|
msgid "each"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "see"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "No bills"
|
msgid "No bills"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -503,14 +718,14 @@ msgstr ""
|
||||||
msgid "To whom?"
|
msgid "To whom?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Who?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Paid"
|
msgid "Paid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Spent"
|
msgid "Spent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Balance"
|
msgid "Expenses by Month"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Period"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
Binary file not shown.
|
@ -1,25 +1,26 @@
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-10-12 09:58+0200\n"
|
"POT-Creation-Date: 2020-04-25 13:02+0200\n"
|
||||||
"PO-Revision-Date: 2020-02-12 10:50+0000\n"
|
"PO-Revision-Date: 2020-02-12 10:50+0000\n"
|
||||||
"Last-Translator: flolilo <flolilo@mailbox.org>\n"
|
"Last-Translator: flolilo <flolilo@mailbox.org>\n"
|
||||||
"Language-Team: German <https://hosted.weblate.org/projects/i-hate-money/"
|
|
||||||
"i-hate-money/de/>\n"
|
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
|
"Language-Team: German <https://hosted.weblate.org/projects/i-hate-money/i"
|
||||||
|
"-hate-money/de/>\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
"X-Generator: Weblate 3.11-dev\n"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||||
"accepted."
|
"accepted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Kein gültiger Betrag oder Ausdruck. Es werden nur Zahlen und die Operatoren +"
|
"Kein gültiger Betrag oder Ausdruck. Es werden nur Zahlen und die "
|
||||||
" - * / akzeptiert."
|
"Operatoren + - * / akzeptiert."
|
||||||
|
|
||||||
msgid "Project name"
|
msgid "Project name"
|
||||||
msgstr "Projektname"
|
msgstr "Projektname"
|
||||||
|
@ -30,6 +31,18 @@ msgstr "Privater Code"
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-Mail"
|
msgstr "E-Mail"
|
||||||
|
|
||||||
|
msgid "Enable project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Use IP tracking for project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import previously exported JSON file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project identifier"
|
msgid "Project identifier"
|
||||||
msgstr "Projektkennung"
|
msgstr "Projektkennung"
|
||||||
|
|
||||||
|
@ -41,8 +54,8 @@ msgid ""
|
||||||
"A project with this identifier (\"%(project)s\") already exists. Please "
|
"A project with this identifier (\"%(project)s\") already exists. Please "
|
||||||
"choose a new identifier"
|
"choose a new identifier"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ein Projekt mit der Kennung (\"%(project)s\") existiert bereits. Bitte wähle "
|
"Ein Projekt mit der Kennung (\"%(project)s\") existiert bereits. Bitte "
|
||||||
"eine andere Kennung"
|
"wähle eine andere Kennung"
|
||||||
|
|
||||||
msgid "Get in"
|
msgid "Get in"
|
||||||
msgstr "Eintreten"
|
msgstr "Eintreten"
|
||||||
|
@ -80,6 +93,12 @@ msgstr "Von"
|
||||||
msgid "Amount paid"
|
msgid "Amount paid"
|
||||||
msgstr "Betrag"
|
msgstr "Betrag"
|
||||||
|
|
||||||
|
msgid "External link"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "A link to an external document, related to this bill"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "For whom?"
|
msgid "For whom?"
|
||||||
msgstr "Für wen?"
|
msgstr "Für wen?"
|
||||||
|
|
||||||
|
@ -120,6 +139,15 @@ msgstr "Einladung senden"
|
||||||
msgid "The email %(email)s is not valid"
|
msgid "The email %(email)s is not valid"
|
||||||
msgstr "Die E-Mail-Adresse(n) %(email)s ist/sind nicht gültig"
|
msgstr "Die E-Mail-Adresse(n) %(email)s ist/sind nicht gültig"
|
||||||
|
|
||||||
|
msgid "Participant"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bill"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project"
|
||||||
|
msgstr "Projekt"
|
||||||
|
|
||||||
msgid "Too many failed login attempts, please retry later."
|
msgid "Too many failed login attempts, please retry later."
|
||||||
msgstr "Zu viele fehlgeschlagene Anmeldeversuche, bitte versuche es später."
|
msgstr "Zu viele fehlgeschlagene Anmeldeversuche, bitte versuche es später."
|
||||||
|
|
||||||
|
@ -130,8 +158,7 @@ msgstr ""
|
||||||
"verbleibend."
|
"verbleibend."
|
||||||
|
|
||||||
msgid "You either provided a bad token or no project identifier."
|
msgid "You either provided a bad token or no project identifier."
|
||||||
msgstr ""
|
msgstr "Du hast entweder einen ungültigen Token oder keine Projekt-ID angegeben."
|
||||||
"Du hast entweder einen ungültigen Token oder keine Projekt-ID angegeben."
|
|
||||||
|
|
||||||
msgid "This private code is not the right one"
|
msgid "This private code is not the right one"
|
||||||
msgstr "Der private Code ist nicht korrekt"
|
msgstr "Der private Code ist nicht korrekt"
|
||||||
|
@ -158,6 +185,12 @@ msgstr "Unbekanntes Projekt"
|
||||||
msgid "Password successfully reset."
|
msgid "Password successfully reset."
|
||||||
msgstr "Passwort erfolgreich zurückgesetzt."
|
msgstr "Passwort erfolgreich zurückgesetzt."
|
||||||
|
|
||||||
|
msgid "Project successfully uploaded"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Invalid JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project successfully deleted"
|
msgid "Project successfully deleted"
|
||||||
msgstr "Projekt erfolgreich gelöscht"
|
msgstr "Projekt erfolgreich gelöscht"
|
||||||
|
|
||||||
|
@ -169,8 +202,8 @@ msgid "Your invitations have been sent"
|
||||||
msgstr "Deine Einladungen wurden versendet"
|
msgstr "Deine Einladungen wurden versendet"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(member)s had been added"
|
msgid "%(member)s has been added"
|
||||||
msgstr "%(member)s wurde(n) hinzugefügt"
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(name)s is part of this project again"
|
msgid "%(name)s is part of this project again"
|
||||||
|
@ -225,9 +258,6 @@ msgstr "?"
|
||||||
msgid "Create a new project"
|
msgid "Create a new project"
|
||||||
msgstr "Neues Projekt erstellen"
|
msgstr "Neues Projekt erstellen"
|
||||||
|
|
||||||
msgid "Project"
|
|
||||||
msgstr "Projekt"
|
|
||||||
|
|
||||||
msgid "Number of members"
|
msgid "Number of members"
|
||||||
msgstr "Anzahl der Teilnehmer"
|
msgstr "Anzahl der Teilnehmer"
|
||||||
|
|
||||||
|
@ -249,6 +279,9 @@ msgstr "Bearbeiten"
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr "Löschen"
|
msgstr "Löschen"
|
||||||
|
|
||||||
|
msgid "see"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "The Dashboard is currently deactivated."
|
msgid "The Dashboard is currently deactivated."
|
||||||
msgstr "Das Dashboard ist aktuell deaktiviert."
|
msgstr "Das Dashboard ist aktuell deaktiviert."
|
||||||
|
|
||||||
|
@ -258,6 +291,12 @@ msgstr "Bist du sicher?"
|
||||||
msgid "Edit project"
|
msgid "Edit project"
|
||||||
msgstr "Projekt bearbeiten"
|
msgstr "Projekt bearbeiten"
|
||||||
|
|
||||||
|
msgid "Import JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Choose file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Download project's data"
|
msgid "Download project's data"
|
||||||
msgstr "Projektdaten herunterladen"
|
msgstr "Projektdaten herunterladen"
|
||||||
|
|
||||||
|
@ -279,6 +318,9 @@ msgstr "Passwort vergessen?"
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Abbrechen"
|
msgstr "Abbrechen"
|
||||||
|
|
||||||
|
msgid "Privacy Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Edit the project"
|
msgid "Edit the project"
|
||||||
msgstr "Projekt bearbeiten"
|
msgstr "Projekt bearbeiten"
|
||||||
|
|
||||||
|
@ -309,6 +351,177 @@ msgstr "Einladung versenden"
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "Herunterladen"
|
msgstr "Herunterladen"
|
||||||
|
|
||||||
|
msgid "Disabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History Settings Changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "from"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Remove IP Adresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to delete all recorded IP addresses from this "
|
||||||
|
"project?\n"
|
||||||
|
" The rest of the project history will be unaffected. This "
|
||||||
|
"action cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Delete"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Confirmation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to erase all history for this project? This action "
|
||||||
|
"cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "and"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "owers list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Who?"
|
||||||
|
msgstr "Wer?"
|
||||||
|
|
||||||
|
msgid "Balance"
|
||||||
|
msgstr "Bilanz"
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>This project has history disabled. New actions won't "
|
||||||
|
"appear below. You can enable history on the</i>\n"
|
||||||
|
" <a href=\"%(url)s\">settings page</a>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>The table below reflects actions recorded prior to "
|
||||||
|
"disabling project history. You can\n"
|
||||||
|
" <a href=\"#\" data-toggle=\"modal\" data-keyboard=\"false\" "
|
||||||
|
"data-target=\"#confirm-erase\">clear project history</a> to remove "
|
||||||
|
"them.</i></p>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Some entries below contain IP addresses, even though this project has IP "
|
||||||
|
"recording disabled. "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete stored IP addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No history to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Clear Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No IP Addresses to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Stored IP Addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Event"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be enabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be disabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "From IP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project private code changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project contact email changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project settings modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "deactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "reactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "External link changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed in a unknown way"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Nothing to list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Someone probably cleared the project history."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage your shared <br />expenses, easily"
|
msgid "Manage your shared <br />expenses, easily"
|
||||||
msgstr "Verwalten deine geteilten <br />Ausgaben ganz einfach"
|
msgstr "Verwalten deine geteilten <br />Ausgaben ganz einfach"
|
||||||
|
|
||||||
|
@ -343,8 +556,9 @@ msgid ""
|
||||||
"This access code will be sent to your friends. It is stored as-is by the "
|
"This access code will be sent to your friends. It is stored as-is by the "
|
||||||
"server, so don\\'t reuse a personal password!"
|
"server, so don\\'t reuse a personal password!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Dieser Zugangscode wird an deine Freunde gesendet. Es wird als Klartext auf "
|
"Dieser Zugangscode wird an deine Freunde gesendet. Es wird als Klartext "
|
||||||
"dem Server gespeichert. Bitte verwenden daher kein persönliches Passwort!"
|
"auf dem Server gespeichert. Bitte verwenden daher kein persönliches "
|
||||||
|
"Passwort!"
|
||||||
|
|
||||||
msgid "Account manager"
|
msgid "Account manager"
|
||||||
msgstr "Konten"
|
msgstr "Konten"
|
||||||
|
@ -358,6 +572,9 @@ msgstr "Bilanz"
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr "Statistik"
|
msgstr "Statistik"
|
||||||
|
|
||||||
|
msgid "History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Einstellungen"
|
msgstr "Einstellungen"
|
||||||
|
|
||||||
|
@ -415,6 +632,12 @@ msgstr "Du kannst anfangen, Teilnehmer hinzuzufügen"
|
||||||
msgid "Add a new bill"
|
msgid "Add a new bill"
|
||||||
msgstr "Neue Ausgabe"
|
msgstr "Neue Ausgabe"
|
||||||
|
|
||||||
|
msgid "Newer bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Older bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "When?"
|
msgid "When?"
|
||||||
msgstr "Wann?"
|
msgstr "Wann?"
|
||||||
|
|
||||||
|
@ -485,8 +708,8 @@ msgid ""
|
||||||
"You can share the project identifier and the private code by any "
|
"You can share the project identifier and the private code by any "
|
||||||
"communication means."
|
"communication means."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Du kannst die Projekt-ID und den privaten Code auf jedem Kommunikationsweg "
|
"Du kannst die Projekt-ID und den privaten Code auf jedem "
|
||||||
"weitergeben."
|
"Kommunikationsweg weitergeben."
|
||||||
|
|
||||||
msgid "Identifier:"
|
msgid "Identifier:"
|
||||||
msgstr "ID:"
|
msgstr "ID:"
|
||||||
|
@ -495,8 +718,7 @@ msgid "Share the Link"
|
||||||
msgstr "Link teilen"
|
msgstr "Link teilen"
|
||||||
|
|
||||||
msgid "You can directly share the following link via your prefered medium"
|
msgid "You can directly share the following link via your prefered medium"
|
||||||
msgstr ""
|
msgstr "Du kannst den folgenden Link direkt über dein bevorzugtes Medium teilen"
|
||||||
"Du kannst den folgenden Link direkt über dein bevorzugtes Medium teilen"
|
|
||||||
|
|
||||||
msgid "Send via Emails"
|
msgid "Send via Emails"
|
||||||
msgstr "Per E-Mail versenden"
|
msgstr "Per E-Mail versenden"
|
||||||
|
@ -507,10 +729,10 @@ msgid ""
|
||||||
" creation of this budget management project and we will "
|
" creation of this budget management project and we will "
|
||||||
"send them an email for you."
|
"send them an email for you."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Gib eine (durch Kommas getrennte) Liste von E-Mail-Adressen an, die du über "
|
"Gib eine (durch Kommas getrennte) Liste von E-Mail-Adressen an, die du "
|
||||||
"die\n"
|
"über die\n"
|
||||||
"\t\t\tErstellung dieses Projekts informieren möchtest, und wir senden ihnen "
|
"\t\t\tErstellung dieses Projekts informieren möchtest, und wir senden "
|
||||||
"eine E-Mail."
|
"ihnen eine E-Mail."
|
||||||
|
|
||||||
msgid "Who pays?"
|
msgid "Who pays?"
|
||||||
msgstr "Wer zahlt?"
|
msgstr "Wer zahlt?"
|
||||||
|
@ -518,14 +740,21 @@ msgstr "Wer zahlt?"
|
||||||
msgid "To whom?"
|
msgid "To whom?"
|
||||||
msgstr "An wen?"
|
msgstr "An wen?"
|
||||||
|
|
||||||
msgid "Who?"
|
|
||||||
msgstr "Wer?"
|
|
||||||
|
|
||||||
msgid "Paid"
|
msgid "Paid"
|
||||||
msgstr "Bezahlt"
|
msgstr "Bezahlt"
|
||||||
|
|
||||||
msgid "Spent"
|
msgid "Spent"
|
||||||
msgstr "Ausgegeben"
|
msgstr "Ausgegeben"
|
||||||
|
|
||||||
msgid "Balance"
|
msgid "Expenses by Month"
|
||||||
msgstr "Bilanz"
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Period"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Someone probably"
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "cleared the project history."
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-10-01 21:48+0200\n"
|
"POT-Creation-Date: 2020-04-25 13:02+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: Automatically generated\n"
|
"Last-Translator: Automatically generated\n"
|
||||||
"Language: el\n"
|
"Language: el\n"
|
||||||
|
@ -12,7 +12,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||||
|
@ -28,6 +28,18 @@ msgstr ""
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Use IP tracking for project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import previously exported JSON file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project identifier"
|
msgid "Project identifier"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -122,6 +134,15 @@ msgstr ""
|
||||||
msgid "The email %(email)s is not valid"
|
msgid "The email %(email)s is not valid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Participant"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bill"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Too many failed login attempts, please retry later."
|
msgid "Too many failed login attempts, please retry later."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -155,6 +176,12 @@ msgstr ""
|
||||||
msgid "Password successfully reset."
|
msgid "Password successfully reset."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project successfully uploaded"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Invalid JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project successfully deleted"
|
msgid "Project successfully deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -166,7 +193,7 @@ msgid "Your invitations have been sent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(member)s had been added"
|
msgid "%(member)s has been added"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
|
@ -220,9 +247,6 @@ msgstr ""
|
||||||
msgid "Create a new project"
|
msgid "Create a new project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Number of members"
|
msgid "Number of members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -244,6 +268,9 @@ msgstr ""
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "see"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "The Dashboard is currently deactivated."
|
msgid "The Dashboard is currently deactivated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -253,6 +280,12 @@ msgstr ""
|
||||||
msgid "Edit project"
|
msgid "Edit project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Choose file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Download project's data"
|
msgid "Download project's data"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -274,6 +307,9 @@ msgstr ""
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Privacy Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Edit the project"
|
msgid "Edit the project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -304,6 +340,177 @@ msgstr ""
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History Settings Changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "from"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Remove IP Adresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to delete all recorded IP addresses from this "
|
||||||
|
"project?\n"
|
||||||
|
" The rest of the project history will be unaffected. This "
|
||||||
|
"action cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Delete"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Confirmation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to erase all history for this project? This action "
|
||||||
|
"cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "and"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "owers list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Who?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Balance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>This project has history disabled. New actions won't "
|
||||||
|
"appear below. You can enable history on the</i>\n"
|
||||||
|
" <a href=\"%(url)s\">settings page</a>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>The table below reflects actions recorded prior to "
|
||||||
|
"disabling project history. You can\n"
|
||||||
|
" <a href=\"#\" data-toggle=\"modal\" data-keyboard=\"false\" "
|
||||||
|
"data-target=\"#confirm-erase\">clear project history</a> to remove "
|
||||||
|
"them.</i></p>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Some entries below contain IP addresses, even though this project has IP "
|
||||||
|
"recording disabled. "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete stored IP addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No history to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Clear Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No IP Addresses to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Stored IP Addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Event"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be enabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be disabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "From IP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project private code changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project contact email changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project settings modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "deactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "reactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "External link changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed in a unknown way"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Nothing to list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Someone probably cleared the project history."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage your shared <br />expenses, easily"
|
msgid "Manage your shared <br />expenses, easily"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -351,6 +558,9 @@ msgstr ""
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -408,6 +618,12 @@ msgstr ""
|
||||||
msgid "Add a new bill"
|
msgid "Add a new bill"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Newer bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Older bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "When?"
|
msgid "When?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -434,9 +650,6 @@ msgstr ""
|
||||||
msgid "each"
|
msgid "each"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "see"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "No bills"
|
msgid "No bills"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -505,97 +718,14 @@ msgstr ""
|
||||||
msgid "To whom?"
|
msgid "To whom?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Who?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Paid"
|
msgid "Paid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Spent"
|
msgid "Spent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Balance"
|
msgid "Expenses by Month"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid ""
|
msgid "Period"
|
||||||
#~ "Not a valid amount or expression.Only"
|
msgstr ""
|
||||||
#~ " numbers and + - * / "
|
|
||||||
#~ "operatorsare accepted."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "What do you want to download ?"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "bills"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "transactions"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Export file format"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Edit this project"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Download this project's data"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Type user name here"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "No, thanks"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Manage your shared <br>expenses, easily"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Log to an existing project"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "log in"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "or create a new one"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "let's get started"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "options"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Project settings"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "This is a free software"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Invite people to join this project!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Added on"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Nothing to list yet. You probably want to"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "Specify a (comma separated) list of "
|
|
||||||
#~ "email adresses you want to notify "
|
|
||||||
#~ "about the\n"
|
|
||||||
#~ "creation of this budget management "
|
|
||||||
#~ "project and we will send them an"
|
|
||||||
#~ " email for you."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "If you prefer, you can share the project identifier and the shared\n"
|
|
||||||
#~ "password by other communication means. "
|
|
||||||
#~ "Or even directly share the following "
|
|
||||||
#~ "link:"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "A link to reset your password has been sent to your email."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-10-20 11:52+0200\n"
|
"POT-Creation-Date: 2020-04-25 13:02+0200\n"
|
||||||
"PO-Revision-Date: 2019-09-25 22:28+0000\n"
|
"PO-Revision-Date: 2019-09-25 22:28+0000\n"
|
||||||
"Last-Translator: Diego Caraballo <diegocaraballo84@gmail.com>\n"
|
"Last-Translator: Diego Caraballo <diegocaraballo84@gmail.com>\n"
|
||||||
"Language: es_419\n"
|
"Language: es_419\n"
|
||||||
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||||
|
@ -31,6 +31,18 @@ msgstr "Código privado"
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Correo Electrónico"
|
msgstr "Correo Electrónico"
|
||||||
|
|
||||||
|
msgid "Enable project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Use IP tracking for project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import previously exported JSON file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project identifier"
|
msgid "Project identifier"
|
||||||
msgstr "Identificador de proyecto"
|
msgstr "Identificador de proyecto"
|
||||||
|
|
||||||
|
@ -127,6 +139,15 @@ msgstr "Enviar invitaciones"
|
||||||
msgid "The email %(email)s is not valid"
|
msgid "The email %(email)s is not valid"
|
||||||
msgstr "El correo electrónico %(email)s no es válido"
|
msgstr "El correo electrónico %(email)s no es válido"
|
||||||
|
|
||||||
|
msgid "Participant"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bill"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project"
|
||||||
|
msgstr "Proyecto"
|
||||||
|
|
||||||
msgid "Too many failed login attempts, please retry later."
|
msgid "Too many failed login attempts, please retry later."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Demasiados intentos fallidos de inicio de sesión, vuelva a intentarlo más"
|
"Demasiados intentos fallidos de inicio de sesión, vuelva a intentarlo más"
|
||||||
|
@ -164,6 +185,12 @@ msgstr "Proyecto desconocido"
|
||||||
msgid "Password successfully reset."
|
msgid "Password successfully reset."
|
||||||
msgstr "Contraseña restablecida con éxito."
|
msgstr "Contraseña restablecida con éxito."
|
||||||
|
|
||||||
|
msgid "Project successfully uploaded"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Invalid JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project successfully deleted"
|
msgid "Project successfully deleted"
|
||||||
msgstr "Proyecto eliminado correctamente"
|
msgstr "Proyecto eliminado correctamente"
|
||||||
|
|
||||||
|
@ -175,8 +202,8 @@ msgid "Your invitations have been sent"
|
||||||
msgstr "Sus invitaciones han sido enviadas"
|
msgstr "Sus invitaciones han sido enviadas"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(member)s had been added"
|
msgid "%(member)s has been added"
|
||||||
msgstr "se han añadido %(member)s"
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(name)s is part of this project again"
|
msgid "%(name)s is part of this project again"
|
||||||
|
@ -231,9 +258,6 @@ msgstr "?"
|
||||||
msgid "Create a new project"
|
msgid "Create a new project"
|
||||||
msgstr "Crear un nuevo proyecto"
|
msgstr "Crear un nuevo proyecto"
|
||||||
|
|
||||||
msgid "Project"
|
|
||||||
msgstr "Proyecto"
|
|
||||||
|
|
||||||
msgid "Number of members"
|
msgid "Number of members"
|
||||||
msgstr "Número de miembros"
|
msgstr "Número de miembros"
|
||||||
|
|
||||||
|
@ -255,6 +279,9 @@ msgstr "Editar"
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr "Eliminar"
|
msgstr "Eliminar"
|
||||||
|
|
||||||
|
msgid "see"
|
||||||
|
msgstr "ver"
|
||||||
|
|
||||||
msgid "The Dashboard is currently deactivated."
|
msgid "The Dashboard is currently deactivated."
|
||||||
msgstr "El panel está desactivado actualmente."
|
msgstr "El panel está desactivado actualmente."
|
||||||
|
|
||||||
|
@ -264,6 +291,12 @@ msgstr "¿Estás seguro?"
|
||||||
msgid "Edit project"
|
msgid "Edit project"
|
||||||
msgstr "Editar proyecto"
|
msgstr "Editar proyecto"
|
||||||
|
|
||||||
|
msgid "Import JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Choose file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Download project's data"
|
msgid "Download project's data"
|
||||||
msgstr "Descargar datos del proyecto"
|
msgstr "Descargar datos del proyecto"
|
||||||
|
|
||||||
|
@ -287,6 +320,9 @@ msgstr "¿No recuerdas la contraseña?"
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
|
msgid "Privacy Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Edit the project"
|
msgid "Edit the project"
|
||||||
msgstr "Editar el proyecto"
|
msgstr "Editar el proyecto"
|
||||||
|
|
||||||
|
@ -317,6 +353,177 @@ msgstr "Enviar las invitaciones"
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "Descargar"
|
msgstr "Descargar"
|
||||||
|
|
||||||
|
msgid "Disabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History Settings Changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "from"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Remove IP Adresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to delete all recorded IP addresses from this "
|
||||||
|
"project?\n"
|
||||||
|
" The rest of the project history will be unaffected. This "
|
||||||
|
"action cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Delete"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Confirmation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to erase all history for this project? This action "
|
||||||
|
"cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "and"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "owers list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Who?"
|
||||||
|
msgstr "¿Quién?"
|
||||||
|
|
||||||
|
msgid "Balance"
|
||||||
|
msgstr "Balance"
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>This project has history disabled. New actions won't "
|
||||||
|
"appear below. You can enable history on the</i>\n"
|
||||||
|
" <a href=\"%(url)s\">settings page</a>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>The table below reflects actions recorded prior to "
|
||||||
|
"disabling project history. You can\n"
|
||||||
|
" <a href=\"#\" data-toggle=\"modal\" data-keyboard=\"false\" "
|
||||||
|
"data-target=\"#confirm-erase\">clear project history</a> to remove "
|
||||||
|
"them.</i></p>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Some entries below contain IP addresses, even though this project has IP "
|
||||||
|
"recording disabled. "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete stored IP addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No history to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Clear Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No IP Addresses to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Stored IP Addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Event"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be enabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be disabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "From IP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project private code changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project contact email changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project settings modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "deactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "reactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "External link changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed in a unknown way"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Nothing to list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Someone probably cleared the project history."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage your shared <br />expenses, easily"
|
msgid "Manage your shared <br />expenses, easily"
|
||||||
msgstr "Gestione sus gastos compartidos <br />fácilmente"
|
msgstr "Gestione sus gastos compartidos <br />fácilmente"
|
||||||
|
|
||||||
|
@ -366,6 +573,9 @@ msgstr "Resolver"
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr "Estadísticas"
|
msgstr "Estadísticas"
|
||||||
|
|
||||||
|
msgid "History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Configuración"
|
msgstr "Configuración"
|
||||||
|
|
||||||
|
@ -423,6 +633,12 @@ msgstr "Deberías comenzar agregando participantes"
|
||||||
msgid "Add a new bill"
|
msgid "Add a new bill"
|
||||||
msgstr "Añadir una nueva factura"
|
msgstr "Añadir una nueva factura"
|
||||||
|
|
||||||
|
msgid "Newer bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Older bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "When?"
|
msgid "When?"
|
||||||
msgstr "¿Cuando?"
|
msgstr "¿Cuando?"
|
||||||
|
|
||||||
|
@ -449,9 +665,6 @@ msgstr "Todo el mundo menos %(excluded)s"
|
||||||
msgid "each"
|
msgid "each"
|
||||||
msgstr "Cada"
|
msgstr "Cada"
|
||||||
|
|
||||||
msgid "see"
|
|
||||||
msgstr "ver"
|
|
||||||
|
|
||||||
msgid "No bills"
|
msgid "No bills"
|
||||||
msgstr "Sin facturas"
|
msgstr "Sin facturas"
|
||||||
|
|
||||||
|
@ -530,15 +743,17 @@ msgstr "¿Quién paga?"
|
||||||
msgid "To whom?"
|
msgid "To whom?"
|
||||||
msgstr "¿A quién?"
|
msgstr "¿A quién?"
|
||||||
|
|
||||||
msgid "Who?"
|
|
||||||
msgstr "¿Quién?"
|
|
||||||
|
|
||||||
msgid "Paid"
|
msgid "Paid"
|
||||||
msgstr "Pagado"
|
msgstr "Pagado"
|
||||||
|
|
||||||
msgid "Spent"
|
msgid "Spent"
|
||||||
msgstr "Gastado"
|
msgstr "Gastado"
|
||||||
|
|
||||||
msgid "Balance"
|
msgid "Expenses by Month"
|
||||||
msgstr "Balance"
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Period"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "%(member)s had been added"
|
||||||
|
#~ msgstr "se han añadido %(member)s"
|
||||||
|
|
Binary file not shown.
|
@ -7,9 +7,9 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-10-01 21:48+0200\n"
|
"POT-Creation-Date: 2020-04-25 13:02+0200\n"
|
||||||
"PO-Revision-Date: 2019-10-07 22:56+0000\n"
|
"PO-Revision-Date: 2020-04-25 11:14+0000\n"
|
||||||
"Last-Translator: Alexis Metaireau <alexis@notmyidea.org>\n"
|
"Last-Translator: Rémy Hubscher <hubscher.remy@gmail.com>\n"
|
||||||
"Language-Team: French <https://hosted.weblate.org/projects/i-hate-money/"
|
"Language-Team: French <https://hosted.weblate.org/projects/i-hate-money/"
|
||||||
"i-hate-money/fr/>\n"
|
"i-hate-money/fr/>\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
|
@ -17,15 +17,15 @@ msgstr ""
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 3.9-dev\n"
|
"X-Generator: Weblate 4.0.2-dev\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||||
"accepted."
|
"accepted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ceci n'est pas pas un montant ou une expression valide. Seuls les nombres"
|
"Ceci n'est pas un montant ou une expression valide. Seuls les nombres et "
|
||||||
" et les opérateurs + - * / sont acceptés."
|
"les opérateurs + - * / sont acceptés."
|
||||||
|
|
||||||
msgid "Project name"
|
msgid "Project name"
|
||||||
msgstr "Nom de projet"
|
msgstr "Nom de projet"
|
||||||
|
@ -36,6 +36,18 @@ msgstr "Code d’accès"
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
|
msgid "Enable project history"
|
||||||
|
msgstr "Activer l'historique de projet"
|
||||||
|
|
||||||
|
msgid "Use IP tracking for project history"
|
||||||
|
msgstr "Collecter les adresses IP dans l'historique de projet"
|
||||||
|
|
||||||
|
msgid "Import previously exported JSON file"
|
||||||
|
msgstr "Importer un fichier JSON précédemment exporté"
|
||||||
|
|
||||||
|
msgid "Import"
|
||||||
|
msgstr "Importer"
|
||||||
|
|
||||||
msgid "Project identifier"
|
msgid "Project identifier"
|
||||||
msgstr "Identifiant du projet"
|
msgstr "Identifiant du projet"
|
||||||
|
|
||||||
|
@ -132,6 +144,15 @@ msgstr "Envoyer les invitations"
|
||||||
msgid "The email %(email)s is not valid"
|
msgid "The email %(email)s is not valid"
|
||||||
msgstr "L’email %(email)s est invalide"
|
msgstr "L’email %(email)s est invalide"
|
||||||
|
|
||||||
|
msgid "Participant"
|
||||||
|
msgstr "Participant"
|
||||||
|
|
||||||
|
msgid "Bill"
|
||||||
|
msgstr "Facture"
|
||||||
|
|
||||||
|
msgid "Project"
|
||||||
|
msgstr "Projet"
|
||||||
|
|
||||||
msgid "Too many failed login attempts, please retry later."
|
msgid "Too many failed login attempts, please retry later."
|
||||||
msgstr "Trop d'échecs d’authentification successifs, veuillez réessayer plus tard."
|
msgstr "Trop d'échecs d’authentification successifs, veuillez réessayer plus tard."
|
||||||
|
|
||||||
|
@ -167,6 +188,12 @@ msgstr "Project inconnu"
|
||||||
msgid "Password successfully reset."
|
msgid "Password successfully reset."
|
||||||
msgstr "Le mot de passe a été changé avec succès."
|
msgstr "Le mot de passe a été changé avec succès."
|
||||||
|
|
||||||
|
msgid "Project successfully uploaded"
|
||||||
|
msgstr "Le projet a été correctement importé"
|
||||||
|
|
||||||
|
msgid "Invalid JSON"
|
||||||
|
msgstr "Le fichier JSON est invalide"
|
||||||
|
|
||||||
msgid "Project successfully deleted"
|
msgid "Project successfully deleted"
|
||||||
msgstr "Projet supprimé"
|
msgstr "Projet supprimé"
|
||||||
|
|
||||||
|
@ -178,8 +205,8 @@ msgid "Your invitations have been sent"
|
||||||
msgstr "Vos invitations ont bien été envoyées"
|
msgstr "Vos invitations ont bien été envoyées"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(member)s had been added"
|
msgid "%(member)s has been added"
|
||||||
msgstr "%(member)s a bien été ajouté"
|
msgstr "%(member)s a été ajouté"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(name)s is part of this project again"
|
msgid "%(name)s is part of this project again"
|
||||||
|
@ -234,9 +261,6 @@ msgstr " ?"
|
||||||
msgid "Create a new project"
|
msgid "Create a new project"
|
||||||
msgstr "Créer un nouveau projet"
|
msgstr "Créer un nouveau projet"
|
||||||
|
|
||||||
msgid "Project"
|
|
||||||
msgstr "Projets"
|
|
||||||
|
|
||||||
msgid "Number of members"
|
msgid "Number of members"
|
||||||
msgstr "Nombre de membres"
|
msgstr "Nombre de membres"
|
||||||
|
|
||||||
|
@ -258,6 +282,9 @@ msgstr "éditer"
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr "supprimer"
|
msgstr "supprimer"
|
||||||
|
|
||||||
|
msgid "see"
|
||||||
|
msgstr "voir"
|
||||||
|
|
||||||
msgid "The Dashboard is currently deactivated."
|
msgid "The Dashboard is currently deactivated."
|
||||||
msgstr "Le tableau de bord est actuellement désactivée."
|
msgstr "Le tableau de bord est actuellement désactivée."
|
||||||
|
|
||||||
|
@ -267,6 +294,12 @@ msgstr "c’est sûr ?"
|
||||||
msgid "Edit project"
|
msgid "Edit project"
|
||||||
msgstr "Éditer le projet"
|
msgstr "Éditer le projet"
|
||||||
|
|
||||||
|
msgid "Import JSON"
|
||||||
|
msgstr "Import JSON"
|
||||||
|
|
||||||
|
msgid "Choose file"
|
||||||
|
msgstr "Choisir un fichier"
|
||||||
|
|
||||||
msgid "Download project's data"
|
msgid "Download project's data"
|
||||||
msgstr "Télécharger les données du projet"
|
msgstr "Télécharger les données du projet"
|
||||||
|
|
||||||
|
@ -288,6 +321,9 @@ msgstr "Vous ne vous souvenez plus du code d’accès ?"
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annuler"
|
msgstr "Annuler"
|
||||||
|
|
||||||
|
msgid "Privacy Settings"
|
||||||
|
msgstr "Vie privée"
|
||||||
|
|
||||||
msgid "Edit the project"
|
msgid "Edit the project"
|
||||||
msgstr "Éditer le projet"
|
msgstr "Éditer le projet"
|
||||||
|
|
||||||
|
@ -318,6 +354,202 @@ msgstr "Envoyer les invitations"
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "Télécharger"
|
msgstr "Télécharger"
|
||||||
|
|
||||||
|
msgid "Disabled Project History"
|
||||||
|
msgstr "Désactiver l'historique du projet"
|
||||||
|
|
||||||
|
msgid "Disabled Project History & IP Address Recording"
|
||||||
|
msgstr "Désactiver l'historique du projet et l'enregistrement des adresses IP"
|
||||||
|
|
||||||
|
msgid "Enabled Project History"
|
||||||
|
msgstr "Activer l'historique du projet"
|
||||||
|
|
||||||
|
msgid "Disabled IP Address Recording"
|
||||||
|
msgstr "Désactiver l'enregistrement des adresses IP"
|
||||||
|
|
||||||
|
msgid "Enabled Project History & IP Address Recording"
|
||||||
|
msgstr "Activer l'historique du projet et l’enregistrement des adresses IP"
|
||||||
|
|
||||||
|
msgid "Enabled IP Address Recording"
|
||||||
|
msgstr "Activer l'enregistrement des adresses IP"
|
||||||
|
|
||||||
|
msgid "History Settings Changed"
|
||||||
|
msgstr "Paramètres d'historique modifiés"
|
||||||
|
|
||||||
|
msgid "changed"
|
||||||
|
msgstr "modifié"
|
||||||
|
|
||||||
|
msgid "from"
|
||||||
|
msgstr "du"
|
||||||
|
|
||||||
|
msgid "to"
|
||||||
|
msgstr "au"
|
||||||
|
|
||||||
|
msgid "Confirm Remove IP Adresses"
|
||||||
|
msgstr "Confirmer la suppression des adresses IP"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to delete all recorded IP addresses from this "
|
||||||
|
"project?\n"
|
||||||
|
" The rest of the project history will be unaffected. This "
|
||||||
|
"action cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
"Êtes-vous sur de vouloir supprimer toutes les adresses IP enregistrées pour "
|
||||||
|
"ce projet ?\n"
|
||||||
|
"Le reste de l'historique ne sera pas affecté. Cette action n'est pas "
|
||||||
|
"réversible."
|
||||||
|
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Fermer"
|
||||||
|
|
||||||
|
msgid "Confirm Delete"
|
||||||
|
msgstr "Confirmer la suppression"
|
||||||
|
|
||||||
|
msgid "Delete Confirmation"
|
||||||
|
msgstr "Confirmation de suppression"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to erase all history for this project? This action "
|
||||||
|
"cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
"Êtes-vous sur de vouloir supprimer tout l'historique du projet ? Cette "
|
||||||
|
"action n'est pas réversible."
|
||||||
|
|
||||||
|
msgid "Added"
|
||||||
|
msgstr "Ajouté"
|
||||||
|
|
||||||
|
msgid "Removed"
|
||||||
|
msgstr "Supprimé"
|
||||||
|
|
||||||
|
msgid "and"
|
||||||
|
msgstr "et"
|
||||||
|
|
||||||
|
msgid "owers list"
|
||||||
|
msgstr "Liste des débiteurs"
|
||||||
|
|
||||||
|
msgid "Who?"
|
||||||
|
msgstr "Qui ?"
|
||||||
|
|
||||||
|
msgid "Balance"
|
||||||
|
msgstr "Solde"
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>This project has history disabled. New actions won't "
|
||||||
|
"appear below. You can enable history on the</i>\n"
|
||||||
|
" <a href=\"%(url)s\">settings page</a>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" <i>L'historique de ce projet a été désactivé. Les nouvelles "
|
||||||
|
"actions n'apparaîtront pas ci-dessous. Vous pouvez réactiver l'historique"
|
||||||
|
" du projet dans les </i>\n"
|
||||||
|
" <a href=\"%(url)s\">paramètres du projet</a>\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>The table below reflects actions recorded prior to "
|
||||||
|
"disabling project history. You can\n"
|
||||||
|
" <a href=\"#\" data-toggle=\"modal\" data-keyboard=\"false\" "
|
||||||
|
"data-target=\"#confirm-erase\">clear project history</a> to remove "
|
||||||
|
"them.</i></p>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" <i>Le tableau ci-dessous liste les actions enregistrées avant"
|
||||||
|
" la désactivation de l'historique du projet. Vous pouvez\n"
|
||||||
|
" <a href=\"#\" data-toggle=\"modal\" data-keyboard=\"false\" "
|
||||||
|
"data-target=\"#confirm-erase\">clear project history</a> cliquer ici pour"
|
||||||
|
" les supprimer.</i></p>\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Some entries below contain IP addresses, even though this project has IP "
|
||||||
|
"recording disabled. "
|
||||||
|
msgstr ""
|
||||||
|
"Certaines entrées de l'historique contiennent une adresse IP, bien que ce"
|
||||||
|
" projet ait désactivé l'enregistrement des adresses IP. "
|
||||||
|
|
||||||
|
msgid "Delete stored IP addresses"
|
||||||
|
msgstr "Supprimer toutes les adresses IP enregistrées"
|
||||||
|
|
||||||
|
msgid "No history to erase"
|
||||||
|
msgstr "Aucun historique à supprimer"
|
||||||
|
|
||||||
|
msgid "Clear Project History"
|
||||||
|
msgstr "Supprimer les entrées de l'historique du projet"
|
||||||
|
|
||||||
|
msgid "No IP Addresses to erase"
|
||||||
|
msgstr "Aucune adresse IP à supprimer"
|
||||||
|
|
||||||
|
msgid "Delete Stored IP Addresses"
|
||||||
|
msgstr "Supprimer les adresses IP enregistrées"
|
||||||
|
|
||||||
|
msgid "Time"
|
||||||
|
msgstr "Heure"
|
||||||
|
|
||||||
|
msgid "Event"
|
||||||
|
msgstr "Évènement"
|
||||||
|
|
||||||
|
msgid "IP address recording can be enabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
"L'enregistrement des adresses IP peut-être activé dans les paramètres de "
|
||||||
|
"la page"
|
||||||
|
|
||||||
|
msgid "IP address recording can be disabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
"L'enregistrement des adresses IP peut-être désactivé dans les paramètres "
|
||||||
|
"de la page"
|
||||||
|
|
||||||
|
msgid "From IP"
|
||||||
|
msgstr "Depuis l'IP"
|
||||||
|
|
||||||
|
msgid "added"
|
||||||
|
msgstr "ajouté"
|
||||||
|
|
||||||
|
msgid "Project private code changed"
|
||||||
|
msgstr "Le mot de passe du projet a été modifié"
|
||||||
|
|
||||||
|
msgid "Project renamed to"
|
||||||
|
msgstr "Le projet a été renommé"
|
||||||
|
|
||||||
|
msgid "Project contact email changed to"
|
||||||
|
msgstr "L'adresse email de contact du projet a été modifié en"
|
||||||
|
|
||||||
|
msgid "Project settings modified"
|
||||||
|
msgstr "Les paramètres du projet ont été modifiés"
|
||||||
|
|
||||||
|
msgid "deactivated"
|
||||||
|
msgstr "désactivé"
|
||||||
|
|
||||||
|
msgid "reactivated"
|
||||||
|
msgstr "réactivé"
|
||||||
|
|
||||||
|
msgid "renamed to"
|
||||||
|
msgstr "renommé en"
|
||||||
|
|
||||||
|
msgid "External link changed to"
|
||||||
|
msgstr "Le lien d'accès a été modifié en"
|
||||||
|
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr "Montant"
|
||||||
|
|
||||||
|
msgid "modified"
|
||||||
|
msgstr "modifié"
|
||||||
|
|
||||||
|
msgid "removed"
|
||||||
|
msgstr "supprimé"
|
||||||
|
|
||||||
|
msgid "changed in a unknown way"
|
||||||
|
msgstr "modifié d'une manière inconnue"
|
||||||
|
|
||||||
|
msgid "Nothing to list"
|
||||||
|
msgstr "Rien à afficher"
|
||||||
|
|
||||||
|
msgid "Someone probably cleared the project history."
|
||||||
|
msgstr "Quelqu'un a probablement vidé l'historique du projet."
|
||||||
|
|
||||||
msgid "Manage your shared <br />expenses, easily"
|
msgid "Manage your shared <br />expenses, easily"
|
||||||
msgstr "Gérez vos dépenses <br />partagées, facilement"
|
msgstr "Gérez vos dépenses <br />partagées, facilement"
|
||||||
|
|
||||||
|
@ -367,6 +599,9 @@ msgstr "Remboursements"
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr "Statistiques"
|
msgstr "Statistiques"
|
||||||
|
|
||||||
|
msgid "History"
|
||||||
|
msgstr "Historique"
|
||||||
|
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Options"
|
msgstr "Options"
|
||||||
|
|
||||||
|
@ -424,6 +659,12 @@ msgstr "Vous devriez commencer par ajouter des participants"
|
||||||
msgid "Add a new bill"
|
msgid "Add a new bill"
|
||||||
msgstr "Nouvelle facture"
|
msgstr "Nouvelle facture"
|
||||||
|
|
||||||
|
msgid "Newer bills"
|
||||||
|
msgstr "Nouvelles factures"
|
||||||
|
|
||||||
|
msgid "Older bills"
|
||||||
|
msgstr "Ancienne factures"
|
||||||
|
|
||||||
msgid "When?"
|
msgid "When?"
|
||||||
msgstr "Quand ?"
|
msgstr "Quand ?"
|
||||||
|
|
||||||
|
@ -450,9 +691,6 @@ msgstr "Tout le monde sauf %(excluded)s"
|
||||||
msgid "each"
|
msgid "each"
|
||||||
msgstr "chacun"
|
msgstr "chacun"
|
||||||
|
|
||||||
msgid "see"
|
|
||||||
msgstr "voir"
|
|
||||||
|
|
||||||
msgid "No bills"
|
msgid "No bills"
|
||||||
msgstr "Pas encore de factures"
|
msgstr "Pas encore de factures"
|
||||||
|
|
||||||
|
@ -527,27 +765,17 @@ msgstr "Qui doit payer ?"
|
||||||
msgid "To whom?"
|
msgid "To whom?"
|
||||||
msgstr "Pour qui ?"
|
msgstr "Pour qui ?"
|
||||||
|
|
||||||
msgid "Who?"
|
|
||||||
msgstr "Qui ?"
|
|
||||||
|
|
||||||
msgid "Paid"
|
msgid "Paid"
|
||||||
msgstr "A payé"
|
msgstr "A payé"
|
||||||
|
|
||||||
msgid "Spent"
|
msgid "Spent"
|
||||||
msgstr "A dépensé"
|
msgstr "A dépensé"
|
||||||
|
|
||||||
msgid "Balance"
|
msgid "Expenses by Month"
|
||||||
msgstr "Solde"
|
msgstr "Dépenses par mois"
|
||||||
|
|
||||||
msgid "Import"
|
|
||||||
msgstr "Importer"
|
|
||||||
|
|
||||||
msgid "Project successfully uploaded"
|
|
||||||
msgstr "Le projet a été correctement importé"
|
|
||||||
|
|
||||||
msgid "Invalid JSON"
|
|
||||||
msgstr "Le fichier JSON est invalide"
|
|
||||||
|
|
||||||
|
msgid "Period"
|
||||||
|
msgstr "Période"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "The project identifier is used to "
|
#~ "The project identifier is used to "
|
||||||
|
@ -695,3 +923,72 @@ msgstr "Le fichier JSON est invalide"
|
||||||
|
|
||||||
#~ msgid "A link to reset your password has been sent to your email."
|
#~ msgid "A link to reset your password has been sent to your email."
|
||||||
#~ msgstr "Un lien pour changer votre mot de passe vous a été envoyé par mail."
|
#~ msgstr "Un lien pour changer votre mot de passe vous a été envoyé par mail."
|
||||||
|
|
||||||
|
#~ msgid "%(member)s had been added"
|
||||||
|
#~ msgstr "%(member)s a bien été ajouté"
|
||||||
|
|
||||||
|
#~ msgid "Disabled Project History"
|
||||||
|
#~ msgstr "Historisation du projet désactivée"
|
||||||
|
|
||||||
|
#~ msgid "Disabled Project History & IP Address Recording"
|
||||||
|
#~ msgstr "Historisation du projet et enregistrement des adresses IP désactivés"
|
||||||
|
|
||||||
|
#~ msgid "Enabled Project History"
|
||||||
|
#~ msgstr "Historisation du projet activée"
|
||||||
|
|
||||||
|
#~ msgid "Disabled IP Address Recording"
|
||||||
|
#~ msgstr "Enregistrement des adresses IP désactivé"
|
||||||
|
|
||||||
|
#~ msgid "Enabled Project History & IP Address Recording"
|
||||||
|
#~ msgstr "Historisation du projet et enregistrement des adresses IP activés"
|
||||||
|
|
||||||
|
#~ msgid "Enabled IP Address Recording"
|
||||||
|
#~ msgstr "Enregistrement des adresses IP activé"
|
||||||
|
|
||||||
|
#~ msgid "History Settings Changed"
|
||||||
|
#~ msgstr "Changement des paramètres d’historisation"
|
||||||
|
|
||||||
|
#~ msgid "changed"
|
||||||
|
#~ msgstr "modifié"
|
||||||
|
|
||||||
|
#~ msgid "from"
|
||||||
|
#~ msgstr "depuis"
|
||||||
|
|
||||||
|
#~ msgid "to"
|
||||||
|
#~ msgstr "vers"
|
||||||
|
|
||||||
|
#~ msgid "Confirm Remove IP Adresses"
|
||||||
|
#~ msgstr "Confirmer la suppression des adresses IP"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Are you sure you want to delete"
|
||||||
|
#~ " all recorded IP addresses from this"
|
||||||
|
#~ " project?\n"
|
||||||
|
#~ " The rest of the project"
|
||||||
|
#~ " history will be unaffected. This "
|
||||||
|
#~ "action cannot be undone."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Êtes vous sûr de supprimer toutes "
|
||||||
|
#~ "les adresses IP enregistrées dans ce "
|
||||||
|
#~ "projet ?\n"
|
||||||
|
#~ "Le reste de l’historique du projet "
|
||||||
|
#~ "restera inchangé. Cette action est "
|
||||||
|
#~ "irréversible."
|
||||||
|
|
||||||
|
#~ msgid "Close"
|
||||||
|
#~ msgstr "Fermer"
|
||||||
|
|
||||||
|
#~ msgid "Confirm Delete"
|
||||||
|
#~ msgstr "Confirmer la suppression"
|
||||||
|
|
||||||
|
#~ msgid "Delete Confirmation"
|
||||||
|
#~ msgstr "Confirmation de suppression"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Are you sure you want to erase "
|
||||||
|
#~ "all history for this project? This "
|
||||||
|
#~ "action cannot be undone."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Êtes vous sûr de supprimer la "
|
||||||
|
#~ "totalité de l’historique de ce projet"
|
||||||
|
#~ " ? Cette action est irréversible."
|
||||||
|
|
BIN
ihatemoney/translations/id/LC_MESSAGES/messages.mo
Normal file
BIN
ihatemoney/translations/id/LC_MESSAGES/messages.mo
Normal file
Binary file not shown.
|
@ -1,24 +1,26 @@
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-11-15 09:12+0200\n"
|
"POT-Creation-Date: 2020-04-25 13:02+0200\n"
|
||||||
"PO-Revision-Date: 2019-11-16 10:04+0000\n"
|
"PO-Revision-Date: 2019-11-16 10:04+0000\n"
|
||||||
"Last-Translator: Muhammad Fauzi <fauzi.padlaw@gmail.com>\n"
|
"Last-Translator: Muhammad Fauzi <fauzi.padlaw@gmail.com>\n"
|
||||||
"Language-Team: Indonesian <https://hosted.weblate.org/projects/i-hate-money/"
|
|
||||||
"i-hate-money/id/>\n"
|
|
||||||
"Language: id\n"
|
"Language: id\n"
|
||||||
|
"Language-Team: Indonesian <https://hosted.weblate.org/projects/i-hate-"
|
||||||
|
"money/i-hate-money/id/>\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
"X-Generator: Weblate 3.10-dev\n"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||||
"accepted."
|
"accepted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Jumlah atau operator tidak valid. Hanya angka dan opertaor +-* yang diterima."
|
"Jumlah atau operator tidak valid. Hanya angka dan opertaor +-* yang "
|
||||||
|
"diterima."
|
||||||
|
|
||||||
msgid "Project name"
|
msgid "Project name"
|
||||||
msgstr "Nama proyek"
|
msgstr "Nama proyek"
|
||||||
|
@ -29,6 +31,18 @@ msgstr "Kode pribadi"
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Surel"
|
msgstr "Surel"
|
||||||
|
|
||||||
|
msgid "Enable project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Use IP tracking for project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import previously exported JSON file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project identifier"
|
msgid "Project identifier"
|
||||||
msgstr "Pengidentifikasi proyek"
|
msgstr "Pengidentifikasi proyek"
|
||||||
|
|
||||||
|
@ -40,8 +54,8 @@ msgid ""
|
||||||
"A project with this identifier (\"%(project)s\") already exists. Please "
|
"A project with this identifier (\"%(project)s\") already exists. Please "
|
||||||
"choose a new identifier"
|
"choose a new identifier"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sebuah proyek dengan ID ini (\"%(project)s\") sudah ada. Silakan pilih ID "
|
"Sebuah proyek dengan ID ini (\"%(project)s\") sudah ada. Silakan pilih ID"
|
||||||
"baru"
|
" baru"
|
||||||
|
|
||||||
msgid "Get in"
|
msgid "Get in"
|
||||||
msgstr "Masuk"
|
msgstr "Masuk"
|
||||||
|
@ -125,6 +139,15 @@ msgstr "Kirim undangan"
|
||||||
msgid "The email %(email)s is not valid"
|
msgid "The email %(email)s is not valid"
|
||||||
msgstr "Surel %(email)s tidak valid"
|
msgstr "Surel %(email)s tidak valid"
|
||||||
|
|
||||||
|
msgid "Participant"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bill"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project"
|
||||||
|
msgstr "Proyek"
|
||||||
|
|
||||||
msgid "Too many failed login attempts, please retry later."
|
msgid "Too many failed login attempts, please retry later."
|
||||||
msgstr "Terlalu banyak percobaan masuk, silakan coba lagi nanti."
|
msgstr "Terlalu banyak percobaan masuk, silakan coba lagi nanti."
|
||||||
|
|
||||||
|
@ -158,6 +181,12 @@ msgstr "Proyek tidak diketahui"
|
||||||
msgid "Password successfully reset."
|
msgid "Password successfully reset."
|
||||||
msgstr "Kata sandi berhasil diatur ulang."
|
msgstr "Kata sandi berhasil diatur ulang."
|
||||||
|
|
||||||
|
msgid "Project successfully uploaded"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Invalid JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project successfully deleted"
|
msgid "Project successfully deleted"
|
||||||
msgstr "Proyek berhasil dihapus"
|
msgstr "Proyek berhasil dihapus"
|
||||||
|
|
||||||
|
@ -169,8 +198,8 @@ msgid "Your invitations have been sent"
|
||||||
msgstr "Undangan Anda telah dikirim"
|
msgstr "Undangan Anda telah dikirim"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(member)s had been added"
|
msgid "%(member)s has been added"
|
||||||
msgstr "%(member)s telah ditambahkan"
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(name)s is part of this project again"
|
msgid "%(name)s is part of this project again"
|
||||||
|
@ -225,9 +254,6 @@ msgstr "?"
|
||||||
msgid "Create a new project"
|
msgid "Create a new project"
|
||||||
msgstr "Buat proyek baru"
|
msgstr "Buat proyek baru"
|
||||||
|
|
||||||
msgid "Project"
|
|
||||||
msgstr "Proyek"
|
|
||||||
|
|
||||||
msgid "Number of members"
|
msgid "Number of members"
|
||||||
msgstr "Jumlah anggota"
|
msgstr "Jumlah anggota"
|
||||||
|
|
||||||
|
@ -249,6 +275,9 @@ msgstr "ubah"
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr "hapus"
|
msgstr "hapus"
|
||||||
|
|
||||||
|
msgid "see"
|
||||||
|
msgstr "lihat"
|
||||||
|
|
||||||
msgid "The Dashboard is currently deactivated."
|
msgid "The Dashboard is currently deactivated."
|
||||||
msgstr "Dasbor sekarang ini sedang dinonaktifkan."
|
msgstr "Dasbor sekarang ini sedang dinonaktifkan."
|
||||||
|
|
||||||
|
@ -258,6 +287,12 @@ msgstr "Anda yakin?"
|
||||||
msgid "Edit project"
|
msgid "Edit project"
|
||||||
msgstr "Ubah proyek"
|
msgstr "Ubah proyek"
|
||||||
|
|
||||||
|
msgid "Import JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Choose file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Download project's data"
|
msgid "Download project's data"
|
||||||
msgstr "Unduh data proyek"
|
msgstr "Unduh data proyek"
|
||||||
|
|
||||||
|
@ -279,6 +314,9 @@ msgstr "Tidak bisa mengingat kata sandi?"
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Batalkan"
|
msgstr "Batalkan"
|
||||||
|
|
||||||
|
msgid "Privacy Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Edit the project"
|
msgid "Edit the project"
|
||||||
msgstr "Ubah proyek"
|
msgstr "Ubah proyek"
|
||||||
|
|
||||||
|
@ -309,6 +347,177 @@ msgstr "Kirim undangan"
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "Unduh"
|
msgstr "Unduh"
|
||||||
|
|
||||||
|
msgid "Disabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History Settings Changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "from"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Remove IP Adresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to delete all recorded IP addresses from this "
|
||||||
|
"project?\n"
|
||||||
|
" The rest of the project history will be unaffected. This "
|
||||||
|
"action cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Delete"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Confirmation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to erase all history for this project? This action "
|
||||||
|
"cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "and"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "owers list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Who?"
|
||||||
|
msgstr "Siapa?"
|
||||||
|
|
||||||
|
msgid "Balance"
|
||||||
|
msgstr "Saldo"
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>This project has history disabled. New actions won't "
|
||||||
|
"appear below. You can enable history on the</i>\n"
|
||||||
|
" <a href=\"%(url)s\">settings page</a>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>The table below reflects actions recorded prior to "
|
||||||
|
"disabling project history. You can\n"
|
||||||
|
" <a href=\"#\" data-toggle=\"modal\" data-keyboard=\"false\" "
|
||||||
|
"data-target=\"#confirm-erase\">clear project history</a> to remove "
|
||||||
|
"them.</i></p>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Some entries below contain IP addresses, even though this project has IP "
|
||||||
|
"recording disabled. "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete stored IP addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No history to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Clear Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No IP Addresses to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Stored IP Addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Event"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be enabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be disabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "From IP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project private code changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project contact email changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project settings modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "deactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "reactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "External link changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed in a unknown way"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Nothing to list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Someone probably cleared the project history."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage your shared <br />expenses, easily"
|
msgid "Manage your shared <br />expenses, easily"
|
||||||
msgstr "Atur pembagian harga <br />Anda, dengan mudah"
|
msgstr "Atur pembagian harga <br />Anda, dengan mudah"
|
||||||
|
|
||||||
|
@ -343,8 +552,8 @@ msgid ""
|
||||||
"This access code will be sent to your friends. It is stored as-is by the "
|
"This access code will be sent to your friends. It is stored as-is by the "
|
||||||
"server, so don\\'t reuse a personal password!"
|
"server, so don\\'t reuse a personal password!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Kode akses ini akan dikirimkan ke teman Anda. Kode ini disimpan dalam bentuk "
|
"Kode akses ini akan dikirimkan ke teman Anda. Kode ini disimpan dalam "
|
||||||
"teks biasa dalam server, jadi jangan gunakan password Anda!"
|
"bentuk teks biasa dalam server, jadi jangan gunakan password Anda!"
|
||||||
|
|
||||||
msgid "Account manager"
|
msgid "Account manager"
|
||||||
msgstr "Pengatur akun"
|
msgstr "Pengatur akun"
|
||||||
|
@ -358,6 +567,9 @@ msgstr "Atur"
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr "Statistik"
|
msgstr "Statistik"
|
||||||
|
|
||||||
|
msgid "History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Pengaturan"
|
msgstr "Pengaturan"
|
||||||
|
|
||||||
|
@ -415,6 +627,12 @@ msgstr "Anda harus mulai dengan menambahkan partisipan"
|
||||||
msgid "Add a new bill"
|
msgid "Add a new bill"
|
||||||
msgstr "Tambah tagihan baru"
|
msgstr "Tambah tagihan baru"
|
||||||
|
|
||||||
|
msgid "Newer bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Older bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "When?"
|
msgid "When?"
|
||||||
msgstr "Kapan?"
|
msgstr "Kapan?"
|
||||||
|
|
||||||
|
@ -441,9 +659,6 @@ msgstr "Semua orang kecuali %(excluded)s"
|
||||||
msgid "each"
|
msgid "each"
|
||||||
msgstr "setiap"
|
msgstr "setiap"
|
||||||
|
|
||||||
msgid "see"
|
|
||||||
msgstr "lihat"
|
|
||||||
|
|
||||||
msgid "No bills"
|
msgid "No bills"
|
||||||
msgstr "Tidak ada tagihan"
|
msgstr "Tidak ada tagihan"
|
||||||
|
|
||||||
|
@ -466,8 +681,8 @@ msgid ""
|
||||||
"A link to reset your password has been sent to you, please check your "
|
"A link to reset your password has been sent to you, please check your "
|
||||||
"emails."
|
"emails."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Tautan atur ulang kata sandi telah dikirim kepada Anda, silakan cek email "
|
"Tautan atur ulang kata sandi telah dikirim kepada Anda, silakan cek email"
|
||||||
"Anda."
|
" Anda."
|
||||||
|
|
||||||
msgid "Return to home page"
|
msgid "Return to home page"
|
||||||
msgstr "Kembali ke halaman depan"
|
msgstr "Kembali ke halaman depan"
|
||||||
|
@ -499,7 +714,8 @@ msgstr "Bagikan tautan"
|
||||||
|
|
||||||
msgid "You can directly share the following link via your prefered medium"
|
msgid "You can directly share the following link via your prefered medium"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Anda bisa membagikan tautan secara langsung melalui media yang Anda inginkan"
|
"Anda bisa membagikan tautan secara langsung melalui media yang Anda "
|
||||||
|
"inginkan"
|
||||||
|
|
||||||
msgid "Send via Emails"
|
msgid "Send via Emails"
|
||||||
msgstr "Kirim melalui surel"
|
msgstr "Kirim melalui surel"
|
||||||
|
@ -510,10 +726,10 @@ msgid ""
|
||||||
" creation of this budget management project and we will "
|
" creation of this budget management project and we will "
|
||||||
"send them an email for you."
|
"send them an email for you."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Spesifikkan daftar alamat surel (dipisah dengan koma) yang akan Anda kirim "
|
"Spesifikkan daftar alamat surel (dipisah dengan koma) yang akan Anda "
|
||||||
"pemberitahuan tentang\n"
|
"kirim pemberitahuan tentang\n"
|
||||||
" pembuatan dari manajemen anggaran proyek ini dan kami akan "
|
" pembuatan dari manajemen anggaran proyek ini dan kami "
|
||||||
"memngirim mereka sebuah surel."
|
"akan memngirim mereka sebuah surel."
|
||||||
|
|
||||||
msgid "Who pays?"
|
msgid "Who pays?"
|
||||||
msgstr "Siapa membayar?"
|
msgstr "Siapa membayar?"
|
||||||
|
@ -521,14 +737,24 @@ msgstr "Siapa membayar?"
|
||||||
msgid "To whom?"
|
msgid "To whom?"
|
||||||
msgstr "Kepada siapa?"
|
msgstr "Kepada siapa?"
|
||||||
|
|
||||||
msgid "Who?"
|
|
||||||
msgstr "Siapa?"
|
|
||||||
|
|
||||||
msgid "Paid"
|
msgid "Paid"
|
||||||
msgstr "Dibayar"
|
msgstr "Dibayar"
|
||||||
|
|
||||||
msgid "Spent"
|
msgid "Spent"
|
||||||
msgstr "Dihabiskan"
|
msgstr "Dihabiskan"
|
||||||
|
|
||||||
msgid "Balance"
|
msgid "Expenses by Month"
|
||||||
msgstr "Saldo"
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Period"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "%(member)s had been added"
|
||||||
|
#~ msgstr "%(member)s telah ditambahkan"
|
||||||
|
|
||||||
|
#~ msgid "Someone probably"
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "cleared the project history."
|
||||||
|
#~ msgstr ""
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -1,19 +1,19 @@
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-09-30 23:53+0200\n"
|
"POT-Creation-Date: 2020-04-25 13:02+0200\n"
|
||||||
"PO-Revision-Date: 2019-11-12 09:04+0000\n"
|
"PO-Revision-Date: 2019-11-12 09:04+0000\n"
|
||||||
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
|
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
|
||||||
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/"
|
|
||||||
"i-hate-money/i-hate-money/nb_NO/>\n"
|
|
||||||
"Language: nb_NO\n"
|
"Language: nb_NO\n"
|
||||||
|
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/i"
|
||||||
|
"-hate-money/i-hate-money/nb_NO/>\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
"X-Generator: Weblate 3.10-dev\n"
|
|
||||||
"Generated-By: Babel 2.7.0\n"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||||
|
@ -31,6 +31,18 @@ msgstr "Privat kode"
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-post"
|
msgstr "E-post"
|
||||||
|
|
||||||
|
msgid "Enable project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Use IP tracking for project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import previously exported JSON file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project identifier"
|
msgid "Project identifier"
|
||||||
msgstr "Prosjektidentifikator"
|
msgstr "Prosjektidentifikator"
|
||||||
|
|
||||||
|
@ -129,6 +141,15 @@ msgstr "Send invitasjoner"
|
||||||
msgid "The email %(email)s is not valid"
|
msgid "The email %(email)s is not valid"
|
||||||
msgstr "E-posten \"%(email)s\" er ikke gyldig"
|
msgstr "E-posten \"%(email)s\" er ikke gyldig"
|
||||||
|
|
||||||
|
msgid "Participant"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bill"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project"
|
||||||
|
msgstr "Prosjekt"
|
||||||
|
|
||||||
msgid "Too many failed login attempts, please retry later."
|
msgid "Too many failed login attempts, please retry later."
|
||||||
msgstr "For mange mislykkede innloggingsforsøk, prøv igjen senere."
|
msgstr "For mange mislykkede innloggingsforsøk, prøv igjen senere."
|
||||||
|
|
||||||
|
@ -165,6 +186,12 @@ msgstr "Ukjent prosjekt"
|
||||||
msgid "Password successfully reset."
|
msgid "Password successfully reset."
|
||||||
msgstr "Passord tilbakestilt."
|
msgstr "Passord tilbakestilt."
|
||||||
|
|
||||||
|
msgid "Project successfully uploaded"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Invalid JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Project successfully deleted"
|
msgid "Project successfully deleted"
|
||||||
msgstr "Prosjekt slettet"
|
msgstr "Prosjekt slettet"
|
||||||
|
@ -179,8 +206,8 @@ msgid "Your invitations have been sent"
|
||||||
msgstr "Invitasjonene dine har blitt sendt"
|
msgstr "Invitasjonene dine har blitt sendt"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(member)s had been added"
|
msgid "%(member)s has been added"
|
||||||
msgstr "%(member)s lagt til"
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(name)s is part of this project again"
|
msgid "%(name)s is part of this project again"
|
||||||
|
@ -237,9 +264,6 @@ msgstr "?"
|
||||||
msgid "Create a new project"
|
msgid "Create a new project"
|
||||||
msgstr "Opprett et nytt prosjekt"
|
msgstr "Opprett et nytt prosjekt"
|
||||||
|
|
||||||
msgid "Project"
|
|
||||||
msgstr "Prosjekt"
|
|
||||||
|
|
||||||
msgid "Number of members"
|
msgid "Number of members"
|
||||||
msgstr "Antall medlemmer"
|
msgstr "Antall medlemmer"
|
||||||
|
|
||||||
|
@ -261,6 +285,10 @@ msgstr "rediger"
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr "slett"
|
msgstr "slett"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "see"
|
||||||
|
msgstr "se"
|
||||||
|
|
||||||
msgid "The Dashboard is currently deactivated."
|
msgid "The Dashboard is currently deactivated."
|
||||||
msgstr "Oversikten er for tiden avskrudd."
|
msgstr "Oversikten er for tiden avskrudd."
|
||||||
|
|
||||||
|
@ -270,6 +298,12 @@ msgstr "er du sikker?"
|
||||||
msgid "Edit project"
|
msgid "Edit project"
|
||||||
msgstr "Rediger prosjekt"
|
msgstr "Rediger prosjekt"
|
||||||
|
|
||||||
|
msgid "Import JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Choose file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Download project's data"
|
msgid "Download project's data"
|
||||||
msgstr "Last ned prosjektets data"
|
msgstr "Last ned prosjektets data"
|
||||||
|
|
||||||
|
@ -294,6 +328,9 @@ msgstr "Husker du ikke passordet?"
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Avbryt"
|
msgstr "Avbryt"
|
||||||
|
|
||||||
|
msgid "Privacy Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Edit the project"
|
msgid "Edit the project"
|
||||||
msgstr "Rediger prosjektet"
|
msgstr "Rediger prosjektet"
|
||||||
|
|
||||||
|
@ -325,6 +362,178 @@ msgstr "Send ut invitasjonene"
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "Last nd"
|
msgstr "Last nd"
|
||||||
|
|
||||||
|
msgid "Disabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History Settings Changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "from"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Remove IP Adresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to delete all recorded IP addresses from this "
|
||||||
|
"project?\n"
|
||||||
|
" The rest of the project history will be unaffected. This "
|
||||||
|
"action cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Delete"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Confirmation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to erase all history for this project? This action "
|
||||||
|
"cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "and"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "owers list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Who?"
|
||||||
|
msgstr "Hvem?"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Balance"
|
||||||
|
msgstr "Kontobalanse"
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>This project has history disabled. New actions won't "
|
||||||
|
"appear below. You can enable history on the</i>\n"
|
||||||
|
" <a href=\"%(url)s\">settings page</a>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>The table below reflects actions recorded prior to "
|
||||||
|
"disabling project history. You can\n"
|
||||||
|
" <a href=\"#\" data-toggle=\"modal\" data-keyboard=\"false\" "
|
||||||
|
"data-target=\"#confirm-erase\">clear project history</a> to remove "
|
||||||
|
"them.</i></p>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Some entries below contain IP addresses, even though this project has IP "
|
||||||
|
"recording disabled. "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete stored IP addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No history to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Clear Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No IP Addresses to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Stored IP Addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Event"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be enabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be disabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "From IP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project private code changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project contact email changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project settings modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "deactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "reactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "External link changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed in a unknown way"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Nothing to list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Someone probably cleared the project history."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage your shared <br />expenses, easily"
|
msgid "Manage your shared <br />expenses, easily"
|
||||||
msgstr "Håndter delte <br />utgifter, enkelt"
|
msgstr "Håndter delte <br />utgifter, enkelt"
|
||||||
|
|
||||||
|
@ -376,6 +585,9 @@ msgstr "Gjør opp"
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr "Statistikk"
|
msgstr "Statistikk"
|
||||||
|
|
||||||
|
msgid "History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Innstillinger"
|
msgstr "Innstillinger"
|
||||||
|
|
||||||
|
@ -436,6 +648,12 @@ msgstr "Du kan starte ved å legge til deltagere"
|
||||||
msgid "Add a new bill"
|
msgid "Add a new bill"
|
||||||
msgstr "Legg til en ny regning"
|
msgstr "Legg til en ny regning"
|
||||||
|
|
||||||
|
msgid "Newer bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Older bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "When?"
|
msgid "When?"
|
||||||
msgstr "Når?"
|
msgstr "Når?"
|
||||||
|
|
||||||
|
@ -462,10 +680,6 @@ msgstr "Alle, unntagen %(excluded)s"
|
||||||
msgid "each"
|
msgid "each"
|
||||||
msgstr "hver"
|
msgstr "hver"
|
||||||
|
|
||||||
#, fuzzy
|
|
||||||
msgid "see"
|
|
||||||
msgstr "se"
|
|
||||||
|
|
||||||
msgid "No bills"
|
msgid "No bills"
|
||||||
msgstr "Ingen regninger"
|
msgstr "Ingen regninger"
|
||||||
|
|
||||||
|
@ -546,18 +760,17 @@ msgstr "Hvem betaler?"
|
||||||
msgid "To whom?"
|
msgid "To whom?"
|
||||||
msgstr "Til hvem?"
|
msgstr "Til hvem?"
|
||||||
|
|
||||||
msgid "Who?"
|
|
||||||
msgstr "Hvem?"
|
|
||||||
|
|
||||||
msgid "Paid"
|
msgid "Paid"
|
||||||
msgstr "Betalt"
|
msgstr "Betalt"
|
||||||
|
|
||||||
msgid "Spent"
|
msgid "Spent"
|
||||||
msgstr "Forbrukt"
|
msgstr "Forbrukt"
|
||||||
|
|
||||||
#, fuzzy
|
msgid "Expenses by Month"
|
||||||
msgid "Balance"
|
msgstr ""
|
||||||
msgstr "Kontobalanse"
|
|
||||||
|
msgid "Period"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "The project identifier is used to "
|
#~ "The project identifier is used to "
|
||||||
|
@ -672,3 +885,6 @@ msgstr "Kontobalanse"
|
||||||
#~ "En lenke for å tilbakestille passordet"
|
#~ "En lenke for å tilbakestille passordet"
|
||||||
#~ " har blitt sent til deg per "
|
#~ " har blitt sent til deg per "
|
||||||
#~ "e-post."
|
#~ "e-post."
|
||||||
|
|
||||||
|
#~ msgid "%(member)s had been added"
|
||||||
|
#~ msgstr "%(member)s lagt til"
|
||||||
|
|
Binary file not shown.
|
@ -1,19 +1,19 @@
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2019-09-30 23:53+0200\n"
|
"POT-Creation-Date: 2020-04-25 13:02+0200\n"
|
||||||
"PO-Revision-Date: 2019-10-07 22:56+0000\n"
|
"PO-Revision-Date: 2019-10-07 22:56+0000\n"
|
||||||
"Last-Translator: Heimen Stoffels <vistausss@outlook.com>\n"
|
"Last-Translator: Heimen Stoffels <vistausss@outlook.com>\n"
|
||||||
"Language-Team: Dutch <https://hosted.weblate.org/projects/i-hate-money/"
|
|
||||||
"i-hate-money/nl/>\n"
|
|
||||||
"Language: nl\n"
|
"Language: nl\n"
|
||||||
|
"Language-Team: Dutch <https://hosted.weblate.org/projects/i-hate-money/i"
|
||||||
|
"-hate-money/nl/>\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
"X-Generator: Weblate 3.9-dev\n"
|
|
||||||
"Generated-By: Babel 2.7.0\n"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||||
|
@ -29,6 +29,18 @@ msgstr "Privécode"
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-mailadres"
|
msgstr "E-mailadres"
|
||||||
|
|
||||||
|
msgid "Enable project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Use IP tracking for project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import previously exported JSON file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project identifier"
|
msgid "Project identifier"
|
||||||
msgstr "Project-id"
|
msgstr "Project-id"
|
||||||
|
|
||||||
|
@ -123,6 +135,15 @@ msgstr "Uitnodigingen versturen"
|
||||||
msgid "The email %(email)s is not valid"
|
msgid "The email %(email)s is not valid"
|
||||||
msgstr "Het e-mailadres '%(email)s' is onjuist"
|
msgstr "Het e-mailadres '%(email)s' is onjuist"
|
||||||
|
|
||||||
|
msgid "Participant"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bill"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project"
|
||||||
|
msgstr "Project"
|
||||||
|
|
||||||
msgid "Too many failed login attempts, please retry later."
|
msgid "Too many failed login attempts, please retry later."
|
||||||
msgstr "Te vaak onjuist ingelogd. Probeer het later opnieuw."
|
msgstr "Te vaak onjuist ingelogd. Probeer het later opnieuw."
|
||||||
|
|
||||||
|
@ -158,6 +179,12 @@ msgstr "Onbekend project"
|
||||||
msgid "Password successfully reset."
|
msgid "Password successfully reset."
|
||||||
msgstr "Wachtwoord is hersteld."
|
msgstr "Wachtwoord is hersteld."
|
||||||
|
|
||||||
|
msgid "Project successfully uploaded"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Invalid JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project successfully deleted"
|
msgid "Project successfully deleted"
|
||||||
msgstr "Project is verwijderd"
|
msgstr "Project is verwijderd"
|
||||||
|
|
||||||
|
@ -169,8 +196,8 @@ msgid "Your invitations have been sent"
|
||||||
msgstr "Je uitnodigingen zijn verstuurd"
|
msgstr "Je uitnodigingen zijn verstuurd"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(member)s had been added"
|
msgid "%(member)s has been added"
|
||||||
msgstr "%(member)s is toegevoegd"
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(name)s is part of this project again"
|
msgid "%(name)s is part of this project again"
|
||||||
|
@ -225,9 +252,6 @@ msgstr "?"
|
||||||
msgid "Create a new project"
|
msgid "Create a new project"
|
||||||
msgstr "Nieuw project aanmaken"
|
msgstr "Nieuw project aanmaken"
|
||||||
|
|
||||||
msgid "Project"
|
|
||||||
msgstr "Project"
|
|
||||||
|
|
||||||
msgid "Number of members"
|
msgid "Number of members"
|
||||||
msgstr "Aantal deelnemers"
|
msgstr "Aantal deelnemers"
|
||||||
|
|
||||||
|
@ -249,6 +273,9 @@ msgstr "bewerken"
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr "verwijderen"
|
msgstr "verwijderen"
|
||||||
|
|
||||||
|
msgid "see"
|
||||||
|
msgstr "bekijk"
|
||||||
|
|
||||||
msgid "The Dashboard is currently deactivated."
|
msgid "The Dashboard is currently deactivated."
|
||||||
msgstr "De overzichtspagina is momenteel uitgeschakeld."
|
msgstr "De overzichtspagina is momenteel uitgeschakeld."
|
||||||
|
|
||||||
|
@ -258,6 +285,12 @@ msgstr "weet je het zeker?"
|
||||||
msgid "Edit project"
|
msgid "Edit project"
|
||||||
msgstr "Project aanpassen"
|
msgstr "Project aanpassen"
|
||||||
|
|
||||||
|
msgid "Import JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Choose file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Download project's data"
|
msgid "Download project's data"
|
||||||
msgstr "Projectgegevens downloaden"
|
msgstr "Projectgegevens downloaden"
|
||||||
|
|
||||||
|
@ -281,6 +314,9 @@ msgstr "Ben je je wachtwoord vergeten?"
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annuleren"
|
msgstr "Annuleren"
|
||||||
|
|
||||||
|
msgid "Privacy Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Edit the project"
|
msgid "Edit the project"
|
||||||
msgstr "Project bewerken"
|
msgstr "Project bewerken"
|
||||||
|
|
||||||
|
@ -311,6 +347,177 @@ msgstr "Uitnodigingen versturen"
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "Downloaden"
|
msgstr "Downloaden"
|
||||||
|
|
||||||
|
msgid "Disabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History Settings Changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "from"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Remove IP Adresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to delete all recorded IP addresses from this "
|
||||||
|
"project?\n"
|
||||||
|
" The rest of the project history will be unaffected. This "
|
||||||
|
"action cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Delete"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Confirmation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to erase all history for this project? This action "
|
||||||
|
"cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "and"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "owers list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Who?"
|
||||||
|
msgstr "Wie?"
|
||||||
|
|
||||||
|
msgid "Balance"
|
||||||
|
msgstr "Saldo"
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>This project has history disabled. New actions won't "
|
||||||
|
"appear below. You can enable history on the</i>\n"
|
||||||
|
" <a href=\"%(url)s\">settings page</a>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>The table below reflects actions recorded prior to "
|
||||||
|
"disabling project history. You can\n"
|
||||||
|
" <a href=\"#\" data-toggle=\"modal\" data-keyboard=\"false\" "
|
||||||
|
"data-target=\"#confirm-erase\">clear project history</a> to remove "
|
||||||
|
"them.</i></p>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Some entries below contain IP addresses, even though this project has IP "
|
||||||
|
"recording disabled. "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete stored IP addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No history to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Clear Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No IP Addresses to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Stored IP Addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Event"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be enabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be disabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "From IP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project private code changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project contact email changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project settings modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "deactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "reactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "External link changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed in a unknown way"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Nothing to list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Someone probably cleared the project history."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage your shared <br />expenses, easily"
|
msgid "Manage your shared <br />expenses, easily"
|
||||||
msgstr "Beheer eenvoudig je <br />gedeelde uitgaven"
|
msgstr "Beheer eenvoudig je <br />gedeelde uitgaven"
|
||||||
|
|
||||||
|
@ -360,6 +567,9 @@ msgstr "Schikken"
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr "Statistieken"
|
msgstr "Statistieken"
|
||||||
|
|
||||||
|
msgid "History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Instellingen"
|
msgstr "Instellingen"
|
||||||
|
|
||||||
|
@ -417,6 +627,12 @@ msgstr "Begin met het toevoegen van deelnemers"
|
||||||
msgid "Add a new bill"
|
msgid "Add a new bill"
|
||||||
msgstr "Nieuwe rekening toevoegen"
|
msgstr "Nieuwe rekening toevoegen"
|
||||||
|
|
||||||
|
msgid "Newer bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Older bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "When?"
|
msgid "When?"
|
||||||
msgstr "Wanneer?"
|
msgstr "Wanneer?"
|
||||||
|
|
||||||
|
@ -443,9 +659,6 @@ msgstr "Iedereen, behalve %(excluded)s"
|
||||||
msgid "each"
|
msgid "each"
|
||||||
msgstr "per persoon"
|
msgstr "per persoon"
|
||||||
|
|
||||||
msgid "see"
|
|
||||||
msgstr "bekijk"
|
|
||||||
|
|
||||||
msgid "No bills"
|
msgid "No bills"
|
||||||
msgstr "Geen rekeningen"
|
msgstr "Geen rekeningen"
|
||||||
|
|
||||||
|
@ -522,128 +735,14 @@ msgstr "Wie betaalt?"
|
||||||
msgid "To whom?"
|
msgid "To whom?"
|
||||||
msgstr "Aan wie?"
|
msgstr "Aan wie?"
|
||||||
|
|
||||||
msgid "Who?"
|
|
||||||
msgstr "Wie?"
|
|
||||||
|
|
||||||
msgid "Paid"
|
msgid "Paid"
|
||||||
msgstr "Betaald"
|
msgstr "Betaald"
|
||||||
|
|
||||||
msgid "Spent"
|
msgid "Spent"
|
||||||
msgstr "Uitgegeven"
|
msgstr "Uitgegeven"
|
||||||
|
|
||||||
msgid "Balance"
|
msgid "Expenses by Month"
|
||||||
msgstr "Saldo"
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid ""
|
msgid "Period"
|
||||||
#~ "The project identifier is used to "
|
msgstr ""
|
||||||
#~ "log in and for the URL of "
|
|
||||||
#~ "the project. We tried to generate "
|
|
||||||
#~ "an identifier for you but a "
|
|
||||||
#~ "project with this identifier already "
|
|
||||||
#~ "exists. Please create a new identifier"
|
|
||||||
#~ " that you will be able to "
|
|
||||||
#~ "remember"
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "De project-id wordt gebruikt om in"
|
|
||||||
#~ " te loggen en als url van het"
|
|
||||||
#~ " project. We hebben geprobeerd om een"
|
|
||||||
#~ " id voor je te genereren, maar "
|
|
||||||
#~ "er is al een project met deze "
|
|
||||||
#~ "id. Creëer een nieuwe id die je"
|
|
||||||
#~ " makkelijk kunt onthouden."
|
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "Not a valid amount or expression.Only"
|
|
||||||
#~ " numbers and + - * / "
|
|
||||||
#~ "operatorsare accepted."
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "Geen geldig bedrag of geldige expressie."
|
|
||||||
#~ " Alleen getallen en + - * / "
|
|
||||||
#~ "zijn toegestaan."
|
|
||||||
|
|
||||||
#~ msgid "What do you want to download ?"
|
|
||||||
#~ msgstr "Wat wil je downloaden?"
|
|
||||||
|
|
||||||
#~ msgid "bills"
|
|
||||||
#~ msgstr "rekeningen"
|
|
||||||
|
|
||||||
#~ msgid "transactions"
|
|
||||||
#~ msgstr "transacties"
|
|
||||||
|
|
||||||
#~ msgid "Export file format"
|
|
||||||
#~ msgstr "Bestandsformaat voor exporteren"
|
|
||||||
|
|
||||||
#~ msgid "Edit this project"
|
|
||||||
#~ msgstr "Dit project bewerken"
|
|
||||||
|
|
||||||
#~ msgid "Download this project's data"
|
|
||||||
#~ msgstr "Projectgegevens downloaden"
|
|
||||||
|
|
||||||
#~ msgid "Type user name here"
|
|
||||||
#~ msgstr "Typ hier de gebruikersnaam"
|
|
||||||
|
|
||||||
#~ msgid "No, thanks"
|
|
||||||
#~ msgstr "Nee, bedankt"
|
|
||||||
|
|
||||||
#~ msgid "Manage your shared <br>expenses, easily"
|
|
||||||
#~ msgstr "Beheer eenvoudig je gedeelde <br>uitgaven"
|
|
||||||
|
|
||||||
#~ msgid "Log to an existing project"
|
|
||||||
#~ msgstr "Log in op een bestaand project"
|
|
||||||
|
|
||||||
#~ msgid "log in"
|
|
||||||
#~ msgstr "inloggen"
|
|
||||||
|
|
||||||
#~ msgid "or create a new one"
|
|
||||||
#~ msgstr "of creëer een nieuwe"
|
|
||||||
|
|
||||||
#~ msgid "let's get started"
|
|
||||||
#~ msgstr "aan de slag"
|
|
||||||
|
|
||||||
#~ msgid "options"
|
|
||||||
#~ msgstr "opties"
|
|
||||||
|
|
||||||
#~ msgid "Project settings"
|
|
||||||
#~ msgstr "Projectinstellingen"
|
|
||||||
|
|
||||||
#~ msgid "This is a free software"
|
|
||||||
#~ msgstr "Dit is vrije software"
|
|
||||||
|
|
||||||
#~ msgid "Invite people to join this project!"
|
|
||||||
#~ msgstr "Nodig mensen uit voor dit project!"
|
|
||||||
|
|
||||||
#~ msgid "Added on"
|
|
||||||
#~ msgstr "Toegevoegd op"
|
|
||||||
|
|
||||||
#~ msgid "Nothing to list yet. You probably want to"
|
|
||||||
#~ msgstr "Er kan nog geen opsomming worden gemaakt. Voeg"
|
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "Specify a (comma separated) list of "
|
|
||||||
#~ "email adresses you want to notify "
|
|
||||||
#~ "about the\n"
|
|
||||||
#~ "creation of this budget management "
|
|
||||||
#~ "project and we will send them an"
|
|
||||||
#~ " email for you."
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "Geef een kommagescheiden lijst van "
|
|
||||||
#~ "e-mailadressen op. Deze mensen worden op"
|
|
||||||
#~ " de\n"
|
|
||||||
#~ "hoogte gebracht van het bestaan van "
|
|
||||||
#~ "dit project en wij sturen hen een"
|
|
||||||
#~ " e-mail."
|
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "If you prefer, you can share the project identifier and the shared\n"
|
|
||||||
#~ "password by other communication means. "
|
|
||||||
#~ "Or even directly share the following "
|
|
||||||
#~ "link:"
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "Als je wilt, dan kun je de project-id en het gedeelde wachtwoord\n"
|
|
||||||
#~ "delen via andere kanalen. Of deel gewoon de volgende link:"
|
|
||||||
|
|
||||||
#~ msgid "A link to reset your password has been sent to your email."
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "Er is een link met "
|
|
||||||
#~ "wachtwoordherstelinstructies naar je e-mailadres "
|
|
||||||
#~ "verstuurd."
|
|
||||||
|
|
Binary file not shown.
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-10-01 21:48+0200\n"
|
"POT-Creation-Date: 2020-04-25 13:02+0200\n"
|
||||||
"PO-Revision-Date: 2019-08-07 13:24+0000\n"
|
"PO-Revision-Date: 2019-08-07 13:24+0000\n"
|
||||||
"Last-Translator: Mesut Akcan <makcan@gmail.com>\n"
|
"Last-Translator: Mesut Akcan <makcan@gmail.com>\n"
|
||||||
"Language: tr\n"
|
"Language: tr\n"
|
||||||
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.7.0\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||||
|
@ -31,6 +31,18 @@ msgstr "Özel kod"
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-posta"
|
msgstr "E-posta"
|
||||||
|
|
||||||
|
msgid "Enable project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Use IP tracking for project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import previously exported JSON file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project identifier"
|
msgid "Project identifier"
|
||||||
msgstr "Proje tanımlayıcısı"
|
msgstr "Proje tanımlayıcısı"
|
||||||
|
|
||||||
|
@ -127,6 +139,15 @@ msgstr ""
|
||||||
msgid "The email %(email)s is not valid"
|
msgid "The email %(email)s is not valid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Participant"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bill"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Too many failed login attempts, please retry later."
|
msgid "Too many failed login attempts, please retry later."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -160,6 +181,12 @@ msgstr ""
|
||||||
msgid "Password successfully reset."
|
msgid "Password successfully reset."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project successfully uploaded"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Invalid JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project successfully deleted"
|
msgid "Project successfully deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -171,7 +198,7 @@ msgid "Your invitations have been sent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(member)s had been added"
|
msgid "%(member)s has been added"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
|
@ -225,9 +252,6 @@ msgstr ""
|
||||||
msgid "Create a new project"
|
msgid "Create a new project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Number of members"
|
msgid "Number of members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -249,6 +273,9 @@ msgstr ""
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "see"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "The Dashboard is currently deactivated."
|
msgid "The Dashboard is currently deactivated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -258,6 +285,12 @@ msgstr ""
|
||||||
msgid "Edit project"
|
msgid "Edit project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Choose file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Download project's data"
|
msgid "Download project's data"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -279,6 +312,9 @@ msgstr ""
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Privacy Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Edit the project"
|
msgid "Edit the project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -309,6 +345,177 @@ msgstr ""
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History Settings Changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "from"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Remove IP Adresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to delete all recorded IP addresses from this "
|
||||||
|
"project?\n"
|
||||||
|
" The rest of the project history will be unaffected. This "
|
||||||
|
"action cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Delete"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Confirmation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to erase all history for this project? This action "
|
||||||
|
"cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "and"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "owers list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Who?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Balance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>This project has history disabled. New actions won't "
|
||||||
|
"appear below. You can enable history on the</i>\n"
|
||||||
|
" <a href=\"%(url)s\">settings page</a>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>The table below reflects actions recorded prior to "
|
||||||
|
"disabling project history. You can\n"
|
||||||
|
" <a href=\"#\" data-toggle=\"modal\" data-keyboard=\"false\" "
|
||||||
|
"data-target=\"#confirm-erase\">clear project history</a> to remove "
|
||||||
|
"them.</i></p>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Some entries below contain IP addresses, even though this project has IP "
|
||||||
|
"recording disabled. "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete stored IP addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No history to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Clear Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No IP Addresses to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Stored IP Addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Event"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be enabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be disabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "From IP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project private code changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project contact email changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project settings modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "deactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "reactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "External link changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed in a unknown way"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Nothing to list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Someone probably cleared the project history."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage your shared <br />expenses, easily"
|
msgid "Manage your shared <br />expenses, easily"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -356,6 +563,9 @@ msgstr ""
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -413,6 +623,12 @@ msgstr ""
|
||||||
msgid "Add a new bill"
|
msgid "Add a new bill"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Newer bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Older bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "When?"
|
msgid "When?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -439,9 +655,6 @@ msgstr ""
|
||||||
msgid "each"
|
msgid "each"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "see"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "No bills"
|
msgid "No bills"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -510,91 +723,14 @@ msgstr ""
|
||||||
msgid "To whom?"
|
msgid "To whom?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Who?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Paid"
|
msgid "Paid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Spent"
|
msgid "Spent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Balance"
|
msgid "Expenses by Month"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "What do you want to download ?"
|
msgid "Period"
|
||||||
#~ msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "bills"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "transactions"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Export file format"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Edit this project"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Download this project's data"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Type user name here"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "No, thanks"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Manage your shared <br>expenses, easily"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Log to an existing project"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "log in"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "or create a new one"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "let's get started"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "options"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Project settings"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "This is a free software"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Invite people to join this project!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Added on"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Nothing to list yet. You probably want to"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "Specify a (comma separated) list of "
|
|
||||||
#~ "email adresses you want to notify "
|
|
||||||
#~ "about the\n"
|
|
||||||
#~ "creation of this budget management "
|
|
||||||
#~ "project and we will send them an"
|
|
||||||
#~ " email for you."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "If you prefer, you can share the project identifier and the shared\n"
|
|
||||||
#~ "password by other communication means. "
|
|
||||||
#~ "Or even directly share the following "
|
|
||||||
#~ "link:"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "A link to reset your password has been sent to your email."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
|
|
BIN
ihatemoney/translations/uk/LC_MESSAGES/messages.mo
Normal file
BIN
ihatemoney/translations/uk/LC_MESSAGES/messages.mo
Normal file
Binary file not shown.
|
@ -1,19 +1,20 @@
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-12-05 15:35+0200\n"
|
"POT-Creation-Date: 2020-04-25 13:02+0200\n"
|
||||||
"PO-Revision-Date: 2019-12-08 16:26+0000\n"
|
"PO-Revision-Date: 2019-12-08 16:26+0000\n"
|
||||||
"Last-Translator: Tymofij Lytvynenko <till.svit@gmail.com>\n"
|
"Last-Translator: Tymofij Lytvynenko <till.svit@gmail.com>\n"
|
||||||
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/i-hate-money/"
|
|
||||||
"i-hate-money/uk/>\n"
|
|
||||||
"Language: uk\n"
|
"Language: uk\n"
|
||||||
|
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/i-hate-"
|
||||||
|
"money/i-hate-money/uk/>\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"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
|
"Generated-By: Babel 2.8.0\n"
|
||||||
"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
|
||||||
"X-Generator: Weblate 3.10-dev\n"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||||
|
@ -29,6 +30,18 @@ msgstr "Приватний код"
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Е-пошта"
|
msgstr "Е-пошта"
|
||||||
|
|
||||||
|
msgid "Enable project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Use IP tracking for project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import previously exported JSON file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project identifier"
|
msgid "Project identifier"
|
||||||
msgstr "Ідентифікатор проєкту"
|
msgstr "Ідентифікатор проєкту"
|
||||||
|
|
||||||
|
@ -123,6 +136,15 @@ msgstr ""
|
||||||
msgid "The email %(email)s is not valid"
|
msgid "The email %(email)s is not valid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Participant"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bill"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Too many failed login attempts, please retry later."
|
msgid "Too many failed login attempts, please retry later."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -156,6 +178,12 @@ msgstr ""
|
||||||
msgid "Password successfully reset."
|
msgid "Password successfully reset."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project successfully uploaded"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Invalid JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project successfully deleted"
|
msgid "Project successfully deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -167,7 +195,7 @@ msgid "Your invitations have been sent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(member)s had been added"
|
msgid "%(member)s has been added"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
|
@ -221,9 +249,6 @@ msgstr ""
|
||||||
msgid "Create a new project"
|
msgid "Create a new project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Number of members"
|
msgid "Number of members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -245,6 +270,9 @@ msgstr ""
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "see"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "The Dashboard is currently deactivated."
|
msgid "The Dashboard is currently deactivated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -254,6 +282,12 @@ msgstr ""
|
||||||
msgid "Edit project"
|
msgid "Edit project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Choose file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Download project's data"
|
msgid "Download project's data"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -275,6 +309,9 @@ msgstr ""
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Privacy Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Edit the project"
|
msgid "Edit the project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -305,6 +342,177 @@ msgstr ""
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History Settings Changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "from"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Remove IP Adresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to delete all recorded IP addresses from this "
|
||||||
|
"project?\n"
|
||||||
|
" The rest of the project history will be unaffected. This "
|
||||||
|
"action cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Delete"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Confirmation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to erase all history for this project? This action "
|
||||||
|
"cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "and"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "owers list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Who?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Balance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>This project has history disabled. New actions won't "
|
||||||
|
"appear below. You can enable history on the</i>\n"
|
||||||
|
" <a href=\"%(url)s\">settings page</a>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>The table below reflects actions recorded prior to "
|
||||||
|
"disabling project history. You can\n"
|
||||||
|
" <a href=\"#\" data-toggle=\"modal\" data-keyboard=\"false\" "
|
||||||
|
"data-target=\"#confirm-erase\">clear project history</a> to remove "
|
||||||
|
"them.</i></p>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Some entries below contain IP addresses, even though this project has IP "
|
||||||
|
"recording disabled. "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete stored IP addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No history to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Clear Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No IP Addresses to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Stored IP Addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Event"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be enabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be disabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "From IP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project private code changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project contact email changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project settings modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "deactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "reactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "External link changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed in a unknown way"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Nothing to list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Someone probably cleared the project history."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage your shared <br />expenses, easily"
|
msgid "Manage your shared <br />expenses, easily"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -352,6 +560,9 @@ msgstr ""
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -409,6 +620,12 @@ msgstr ""
|
||||||
msgid "Add a new bill"
|
msgid "Add a new bill"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Newer bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Older bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "When?"
|
msgid "When?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -435,9 +652,6 @@ msgstr ""
|
||||||
msgid "each"
|
msgid "each"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "see"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "No bills"
|
msgid "No bills"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -506,14 +720,14 @@ msgstr ""
|
||||||
msgid "To whom?"
|
msgid "To whom?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Who?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Paid"
|
msgid "Paid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Spent"
|
msgid "Spent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Balance"
|
msgid "Expenses by Month"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Period"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
Binary file not shown.
|
@ -1,19 +1,20 @@
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-10-01 21:48+0200\n"
|
"POT-Creation-Date: 2020-04-25 13:02+0200\n"
|
||||||
"PO-Revision-Date: 2020-02-09 12:01+0000\n"
|
"PO-Revision-Date: 2020-02-09 12:01+0000\n"
|
||||||
"Last-Translator: Muge Niu <mugeniu12138@gmail.com>\n"
|
"Last-Translator: Muge Niu <mugeniu12138@gmail.com>\n"
|
||||||
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
|
"Language: zh_HANS_CN\n"
|
||||||
"i-hate-money/i-hate-money/zh_Hans/>\n"
|
"Language-Team: Chinese (Simplified) "
|
||||||
"Language: zh_HANS-CN\n"
|
"<https://hosted.weblate.org/projects/i-hate-money/i-hate-money/zh_Hans/>"
|
||||||
|
"\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Generated-By: Babel 2.8.0\n"
|
||||||
"X-Generator: Weblate 3.11-dev\n"
|
|
||||||
"Generated-By: Babel 2.7.0\n"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||||
|
@ -29,6 +30,18 @@ msgstr "共享密钥"
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "邮箱"
|
msgstr "邮箱"
|
||||||
|
|
||||||
|
msgid "Enable project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Use IP tracking for project history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import previously exported JSON file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project identifier"
|
msgid "Project identifier"
|
||||||
msgstr "账目名称"
|
msgstr "账目名称"
|
||||||
|
|
||||||
|
@ -123,6 +136,15 @@ msgstr ""
|
||||||
msgid "The email %(email)s is not valid"
|
msgid "The email %(email)s is not valid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Participant"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bill"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Too many failed login attempts, please retry later."
|
msgid "Too many failed login attempts, please retry later."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -156,6 +178,12 @@ msgstr ""
|
||||||
msgid "Password successfully reset."
|
msgid "Password successfully reset."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project successfully uploaded"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Invalid JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project successfully deleted"
|
msgid "Project successfully deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -167,7 +195,7 @@ msgid "Your invitations have been sent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(member)s had been added"
|
msgid "%(member)s has been added"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
|
@ -221,9 +249,6 @@ msgstr "?"
|
||||||
msgid "Create a new project"
|
msgid "Create a new project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Project"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Number of members"
|
msgid "Number of members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -245,6 +270,9 @@ msgstr ""
|
||||||
msgid "delete"
|
msgid "delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "see"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "The Dashboard is currently deactivated."
|
msgid "The Dashboard is currently deactivated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -254,6 +282,12 @@ msgstr ""
|
||||||
msgid "Edit project"
|
msgid "Edit project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Import JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Choose file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Download project's data"
|
msgid "Download project's data"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -275,6 +309,9 @@ msgstr ""
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "取消"
|
msgstr "取消"
|
||||||
|
|
||||||
|
msgid "Privacy Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Edit the project"
|
msgid "Edit the project"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -305,6 +342,177 @@ msgstr ""
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "下载"
|
msgstr "下载"
|
||||||
|
|
||||||
|
msgid "Disabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled Project History & IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enabled IP Address Recording"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History Settings Changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "from"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Remove IP Adresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to delete all recorded IP addresses from this "
|
||||||
|
"project?\n"
|
||||||
|
" The rest of the project history will be unaffected. This "
|
||||||
|
"action cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Confirm Delete"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Confirmation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Are you sure you want to erase all history for this project? This action "
|
||||||
|
"cannot be undone."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "and"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "owers list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Who?"
|
||||||
|
msgstr "谁?"
|
||||||
|
|
||||||
|
msgid "Balance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>This project has history disabled. New actions won't "
|
||||||
|
"appear below. You can enable history on the</i>\n"
|
||||||
|
" <a href=\"%(url)s\">settings page</a>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <i>The table below reflects actions recorded prior to "
|
||||||
|
"disabling project history. You can\n"
|
||||||
|
" <a href=\"#\" data-toggle=\"modal\" data-keyboard=\"false\" "
|
||||||
|
"data-target=\"#confirm-erase\">clear project history</a> to remove "
|
||||||
|
"them.</i></p>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Some entries below contain IP addresses, even though this project has IP "
|
||||||
|
"recording disabled. "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete stored IP addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No history to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Clear Project History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No IP Addresses to erase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Delete Stored IP Addresses"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Event"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be enabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address recording can be disabled on the settings page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "From IP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "added"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project private code changed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project contact email changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Project settings modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "deactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "reactivated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "renamed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "External link changed to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "changed in a unknown way"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Nothing to list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Someone probably cleared the project history."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Manage your shared <br />expenses, easily"
|
msgid "Manage your shared <br />expenses, easily"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -352,6 +560,9 @@ msgstr ""
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -409,6 +620,12 @@ msgstr ""
|
||||||
msgid "Add a new bill"
|
msgid "Add a new bill"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Newer bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Older bills"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "When?"
|
msgid "When?"
|
||||||
msgstr "什么时候?"
|
msgstr "什么时候?"
|
||||||
|
|
||||||
|
@ -435,9 +652,6 @@ msgstr ""
|
||||||
msgid "each"
|
msgid "each"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "see"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "No bills"
|
msgid "No bills"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -506,107 +720,14 @@ msgstr ""
|
||||||
msgid "To whom?"
|
msgid "To whom?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Who?"
|
|
||||||
msgstr "谁?"
|
|
||||||
|
|
||||||
msgid "Paid"
|
msgid "Paid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Spent"
|
msgid "Spent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Balance"
|
msgid "Expenses by Month"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid ""
|
msgid "Period"
|
||||||
#~ "The project identifier is used to "
|
msgstr ""
|
||||||
#~ "log in and for the URL of "
|
|
||||||
#~ "the project. We tried to generate "
|
|
||||||
#~ "an identifier for you but a "
|
|
||||||
#~ "project with this identifier already "
|
|
||||||
#~ "exists. Please create a new identifier"
|
|
||||||
#~ " that you will be able to "
|
|
||||||
#~ "remember"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "Not a valid amount or expression.Only"
|
|
||||||
#~ " numbers and + - * / "
|
|
||||||
#~ "operatorsare accepted."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "What do you want to download ?"
|
|
||||||
#~ msgstr "你想下载什么?"
|
|
||||||
|
|
||||||
#~ msgid "bills"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "transactions"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Export file format"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Edit this project"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Download this project's data"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Type user name here"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "No, thanks"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Manage your shared <br>expenses, easily"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Log to an existing project"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "log in"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "or create a new one"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "let's get started"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "options"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Project settings"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "This is a free software"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Invite people to join this project!"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Added on"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Nothing to list yet. You probably want to"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "Specify a (comma separated) list of "
|
|
||||||
#~ "email adresses you want to notify "
|
|
||||||
#~ "about the\n"
|
|
||||||
#~ "creation of this budget management "
|
|
||||||
#~ "project and we will send them an"
|
|
||||||
#~ " email for you."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "If you prefer, you can share the project identifier and the shared\n"
|
|
||||||
#~ "password by other communication means. "
|
|
||||||
#~ "Or even directly share the following "
|
|
||||||
#~ "link:"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "A link to reset your password has been sent to your email."
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
|
@ -1,19 +1,17 @@
|
||||||
import re
|
|
||||||
import os
|
|
||||||
import ast
|
import ast
|
||||||
import operator
|
|
||||||
from enum import Enum
|
|
||||||
|
|
||||||
from io import BytesIO, StringIO
|
|
||||||
|
|
||||||
import jinja2
|
|
||||||
from json import dumps, JSONEncoder
|
|
||||||
from flask import redirect, current_app
|
|
||||||
from babel import Locale
|
|
||||||
from werkzeug.routing import HTTPException, RoutingException
|
|
||||||
from datetime import datetime, timedelta
|
|
||||||
|
|
||||||
import csv
|
import csv
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
from enum import Enum
|
||||||
|
from io import BytesIO, StringIO
|
||||||
|
from json import JSONEncoder, dumps
|
||||||
|
import operator
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
|
||||||
|
from babel import Locale
|
||||||
|
from flask import current_app, redirect
|
||||||
|
import jinja2
|
||||||
|
from werkzeug.routing import HTTPException, RoutingException
|
||||||
|
|
||||||
|
|
||||||
def slugify(value):
|
def slugify(value):
|
||||||
|
@ -99,7 +97,7 @@ def static_include(filename):
|
||||||
|
|
||||||
|
|
||||||
def locale_from_iso(iso_code):
|
def locale_from_iso(iso_code):
|
||||||
return Locale(iso_code)
|
return Locale.parse(iso_code)
|
||||||
|
|
||||||
|
|
||||||
def list_of_dicts2json(dict_to_convert):
|
def list_of_dicts2json(dict_to_convert):
|
||||||
|
|
|
@ -8,25 +8,27 @@ Basically, this blueprint takes care of the authentication and provides
|
||||||
some shortcuts to make your life better when coding (see `pull_project`
|
some shortcuts to make your life better when coding (see `pull_project`
|
||||||
and `add_project_id` for a quick overview)
|
and `add_project_id` for a quick overview)
|
||||||
"""
|
"""
|
||||||
|
from datetime import datetime
|
||||||
|
from functools import wraps
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
from functools import wraps
|
|
||||||
from smtplib import SMTPRecipientsRefused
|
from smtplib import SMTPRecipientsRefused
|
||||||
|
|
||||||
from dateutil.parser import parse
|
from dateutil.parser import parse
|
||||||
|
from dateutil.relativedelta import relativedelta
|
||||||
from flask import (
|
from flask import (
|
||||||
abort,
|
|
||||||
Blueprint,
|
Blueprint,
|
||||||
|
abort,
|
||||||
current_app,
|
current_app,
|
||||||
flash,
|
flash,
|
||||||
g,
|
g,
|
||||||
redirect,
|
redirect,
|
||||||
render_template,
|
render_template,
|
||||||
request,
|
request,
|
||||||
session,
|
|
||||||
url_for,
|
|
||||||
send_file,
|
send_file,
|
||||||
send_from_directory,
|
send_from_directory,
|
||||||
|
session,
|
||||||
|
url_for,
|
||||||
)
|
)
|
||||||
from flask_babel import get_locale, gettext as _
|
from flask_babel import get_locale, gettext as _
|
||||||
from flask_mail import Message
|
from flask_mail import Message
|
||||||
|
@ -42,23 +44,21 @@ from ihatemoney.forms import (
|
||||||
InviteForm,
|
InviteForm,
|
||||||
MemberForm,
|
MemberForm,
|
||||||
PasswordReminder,
|
PasswordReminder,
|
||||||
ResetPasswordForm,
|
|
||||||
ProjectForm,
|
ProjectForm,
|
||||||
get_billform_for,
|
ResetPasswordForm,
|
||||||
UploadForm,
|
UploadForm,
|
||||||
|
get_billform_for,
|
||||||
)
|
)
|
||||||
from ihatemoney.history import get_history_queries, get_history
|
from ihatemoney.history import get_history, get_history_queries
|
||||||
from ihatemoney.models import db, Project, Person, Bill, LoggingMode
|
from ihatemoney.models import Bill, LoggingMode, Person, Project, db
|
||||||
from ihatemoney.utils import (
|
from ihatemoney.utils import (
|
||||||
Redirect303,
|
|
||||||
list_of_dicts2json,
|
|
||||||
list_of_dicts2csv,
|
|
||||||
LoginThrottler,
|
LoginThrottler,
|
||||||
|
Redirect303,
|
||||||
get_members,
|
get_members,
|
||||||
|
list_of_dicts2csv,
|
||||||
|
list_of_dicts2json,
|
||||||
same_bill,
|
same_bill,
|
||||||
)
|
)
|
||||||
from datetime import datetime
|
|
||||||
from dateutil.relativedelta import relativedelta
|
|
||||||
|
|
||||||
main = Blueprint("main", __name__)
|
main = Blueprint("main", __name__)
|
||||||
|
|
||||||
|
@ -301,9 +301,7 @@ def create_project():
|
||||||
project=g.project.name,
|
project=g.project.name,
|
||||||
)
|
)
|
||||||
|
|
||||||
message_body = render_template(
|
message_body = render_template(f"reminder_mail.{get_locale().language}.j2")
|
||||||
"reminder_mail.%s.j2" % get_locale().language
|
|
||||||
)
|
|
||||||
|
|
||||||
msg = Message(
|
msg = Message(
|
||||||
message_title, body=message_body, recipients=[project.contact_email]
|
message_title, body=message_body, recipients=[project.contact_email]
|
||||||
|
@ -337,7 +335,7 @@ def remind_password():
|
||||||
# get the project
|
# get the project
|
||||||
project = Project.query.get(form.id.data)
|
project = Project.query.get(form.id.data)
|
||||||
# send a link to reset the password
|
# send a link to reset the password
|
||||||
password_reminder = "password_reminder.%s.j2" % get_locale().language
|
password_reminder = f"password_reminder.{get_locale().language}.j2"
|
||||||
current_app.mail.send(
|
current_app.mail.send(
|
||||||
Message(
|
Message(
|
||||||
"password recovery",
|
"password recovery",
|
||||||
|
@ -521,7 +519,7 @@ def export_project(file, format):
|
||||||
|
|
||||||
return send_file(
|
return send_file(
|
||||||
file2export,
|
file2export,
|
||||||
attachment_filename="%s-%s.%s" % (g.project.id, file, format),
|
attachment_filename=f"{g.project.id}-{file}.{format}",
|
||||||
as_attachment=True,
|
as_attachment=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -571,7 +569,7 @@ def invite():
|
||||||
# send the email
|
# send the email
|
||||||
|
|
||||||
message_body = render_template(
|
message_body = render_template(
|
||||||
"invitation_mail.%s.j2" % get_locale().language
|
f"invitation_mail.{get_locale().language}.j2"
|
||||||
)
|
)
|
||||||
|
|
||||||
message_title = _(
|
message_title = _(
|
||||||
|
@ -621,7 +619,7 @@ def add_member():
|
||||||
if form.validate():
|
if form.validate():
|
||||||
member = form.save(g.project, Person())
|
member = form.save(g.project, Person())
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
flash(_("%(member)s had been added", member=member.name))
|
flash(_("%(member)s has been added", member=member.name))
|
||||||
return redirect(url_for(".list_bills"))
|
return redirect(url_for(".list_bills"))
|
||||||
|
|
||||||
return render_template("add_member.html", form=form)
|
return render_template("add_member.html", form=form)
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
alembic==1.2.0
|
|
||||||
aniso8601==8.0.0
|
|
||||||
Babel==2.7.0
|
|
||||||
blinker==1.4
|
|
||||||
Click==7.0
|
|
||||||
debts==0.4
|
|
||||||
dnspython==1.16.0
|
|
||||||
email-validator==1.0.4
|
|
||||||
Flask==1.1.1
|
|
||||||
Flask-Babel==0.12.2
|
|
||||||
Flask-Cors==3.0.8
|
|
||||||
Flask-Mail==0.9.1
|
|
||||||
Flask-Migrate==2.5.2
|
|
||||||
Flask-RESTful==0.3.7
|
|
||||||
Flask-Script==2.0.6
|
|
||||||
Flask-SQLAlchemy==2.4.1
|
|
||||||
Flask-WTF==0.14.2
|
|
||||||
idna==2.8
|
|
||||||
itsdangerous==1.1.0
|
|
||||||
Jinja2==2.10.1
|
|
||||||
Mako==1.1.0
|
|
||||||
MarkupSafe==1.1.1
|
|
||||||
python-dateutil==2.8.0
|
|
||||||
pytz==2019.2
|
|
||||||
SQLAlchemy==1.3.8
|
|
||||||
SQLAlchemy-Continuum==1.3.9
|
|
||||||
Werkzeug==0.16.0
|
|
||||||
WTForms==2.2.1
|
|
45
setup.cfg
45
setup.cfg
|
@ -11,9 +11,9 @@ license = Custom BSD Beerware
|
||||||
classifiers =
|
classifiers =
|
||||||
Programming Language :: Python
|
Programming Language :: Python
|
||||||
Programming Language :: Python :: 3
|
Programming Language :: Python :: 3
|
||||||
Programming Language :: Python :: 3.5
|
|
||||||
Programming Language :: Python :: 3.6
|
Programming Language :: Python :: 3.6
|
||||||
Programming Language :: Python :: 3.7
|
Programming Language :: Python :: 3.7
|
||||||
|
Programming Language :: Python :: 3.8
|
||||||
Topic :: Internet :: WWW/HTTP
|
Topic :: Internet :: WWW/HTTP
|
||||||
Topic :: Internet :: WWW/HTTP :: WSGI :: Application
|
Topic :: Internet :: WWW/HTTP :: WSGI :: Application
|
||||||
|
|
||||||
|
@ -22,29 +22,32 @@ packages = find:
|
||||||
include_package_data = True
|
include_package_data = True
|
||||||
zip_safe = False
|
zip_safe = False
|
||||||
install_requires =
|
install_requires =
|
||||||
flask
|
blinker==1.4
|
||||||
flask-wtf
|
debts==0.5
|
||||||
flask-sqlalchemy<3.0
|
email_validator==1.0.5
|
||||||
SQLAlchemy-Continuum
|
Flask-Babel==1.0.0
|
||||||
flask-mail
|
Flask-Cors==3.0.8
|
||||||
Flask-Migrate
|
Flask-Mail==0.9.1
|
||||||
Flask-script
|
Flask-Migrate==2.5.3
|
||||||
flask-babel
|
Flask-RESTful==0.3.8
|
||||||
flask-restful
|
Flask-Script==2.0.6
|
||||||
jinja2
|
Flask-SQLAlchemy==2.4.1
|
||||||
blinker
|
Flask-WTF==0.14.3
|
||||||
flask-cors
|
WTForms==2.2.1
|
||||||
itsdangerous
|
Flask==1.1.2
|
||||||
email_validator
|
itsdangerous==1.1.0
|
||||||
debts
|
Jinja2==2.11.2
|
||||||
|
SQLAlchemy-Continuum==1.3.9
|
||||||
|
|
||||||
[options.extras_require]
|
[options.extras_require]
|
||||||
dev =
|
dev =
|
||||||
zest.releaser
|
black==19.10b0 ; python_version >= '3.6'
|
||||||
tox
|
flake8==3.7.9
|
||||||
pytest
|
Flask-Testing==0.8.0
|
||||||
flake8
|
isort==4.3.21
|
||||||
Flask-Testing
|
pytest==5.4.1
|
||||||
|
tox==3.14.6
|
||||||
|
zest.releaser==6.20.1
|
||||||
|
|
||||||
[options.entry_points]
|
[options.entry_points]
|
||||||
console_scripts =
|
console_scripts =
|
||||||
|
|
17
tox.ini
17
tox.ini
|
@ -1,5 +1,5 @@
|
||||||
[tox]
|
[tox]
|
||||||
envlist = py37,py36,py35,docs,flake8,black
|
envlist = py38,py37,py36,docs,flake8,black
|
||||||
skip_missing_interpreters = True
|
skip_missing_interpreters = True
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
|
@ -9,8 +9,7 @@ commands =
|
||||||
py.test --pyargs ihatemoney.tests.tests
|
py.test --pyargs ihatemoney.tests.tests
|
||||||
|
|
||||||
deps =
|
deps =
|
||||||
-rdev-requirements.txt
|
-e.[dev]
|
||||||
-rrequirements.txt
|
|
||||||
|
|
||||||
# To be sure we are importing ihatemoney pkg from pip-installed version
|
# To be sure we are importing ihatemoney pkg from pip-installed version
|
||||||
changedir = /tmp
|
changedir = /tmp
|
||||||
|
@ -22,15 +21,13 @@ deps =
|
||||||
changedir = {toxinidir}
|
changedir = {toxinidir}
|
||||||
|
|
||||||
[testenv:black]
|
[testenv:black]
|
||||||
commands = black --check --target-version=py34 .
|
commands =
|
||||||
deps =
|
black --check --target-version=py34 .
|
||||||
-rdev-requirements.txt
|
isort -c -rc .
|
||||||
changedir = {toxinidir}
|
changedir = {toxinidir}
|
||||||
|
|
||||||
[testenv:flake8]
|
[testenv:flake8]
|
||||||
commands = flake8 ihatemoney
|
commands = flake8 ihatemoney
|
||||||
deps =
|
|
||||||
-rdev-requirements.txt
|
|
||||||
changedir = {toxinidir}
|
changedir = {toxinidir}
|
||||||
|
|
||||||
[flake8]
|
[flake8]
|
||||||
|
@ -42,6 +39,6 @@ extend-ignore =
|
||||||
|
|
||||||
[travis]
|
[travis]
|
||||||
python =
|
python =
|
||||||
3.5: py35
|
3.6: py36
|
||||||
3.6: py36, docs, black, flake8
|
|
||||||
3.7: py37
|
3.7: py37
|
||||||
|
3.8: py38, docs, black, flake8
|
||||||
|
|
Loading…
Reference in a new issue