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
|
||||
.env
|
||||
.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
|
||||
language: python
|
||||
python:
|
||||
- "3.5"
|
||||
- "3.6"
|
||||
- "3.7"
|
||||
- "3.8"
|
||||
script: tox
|
||||
install:
|
||||
- pip install tox-travis
|
||||
|
|
|
@ -9,7 +9,7 @@ This document describes changes between each past release.
|
|||
- Add support for espanol latino america (es_419)
|
||||
- Use the external debts lib to solve settlements (#476)
|
||||
- Remove balance column in statistics view (#323)
|
||||
|
||||
- Remove requirements files in favor of setup.cfg pinning (#558)
|
||||
|
||||
4.1.3 (2019-09-18)
|
||||
==================
|
||||
|
|
|
@ -7,20 +7,27 @@ Adrien CLERC
|
|||
Alexandre Avenel
|
||||
Alexis Métaireau
|
||||
Allan Nordhøy
|
||||
am97
|
||||
Andrew Dickinson
|
||||
Arnaud Bos
|
||||
Baptiste Jonglez
|
||||
Benjamin Bouvier
|
||||
Berteh
|
||||
bmatticus
|
||||
Brice Maron
|
||||
Byron Ullauri
|
||||
Carey Metcalfe
|
||||
Daniel Schreiber
|
||||
DavidRThrashJr
|
||||
donkers
|
||||
Edwin Smulders
|
||||
Elizabeth Sherrock
|
||||
eMerzh
|
||||
Feth AREZKI
|
||||
Frédéric Sureau
|
||||
Glandos
|
||||
Heimen Stoffels
|
||||
James Leong
|
||||
Jocelyn Delalande
|
||||
Lucas Verney
|
||||
Luc Didry
|
||||
|
@ -37,3 +44,4 @@ Richard Coates
|
|||
THANOS SIOURDAKIS
|
||||
Toover
|
||||
Xavier Mehrenberger
|
||||
zorun
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
include *.rst
|
||||
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
|
||||
all: install ## Alias for install
|
||||
.PHONY: install
|
||||
install: virtualenv $(INSTALL_STAMP) ## Install dependencies
|
||||
install: virtualenv setup.cfg $(INSTALL_STAMP) ## Install dependencies
|
||||
$(INSTALL_STAMP):
|
||||
$(VENV)/bin/pip install -U pip
|
||||
$(VENV)/bin/pip install -r requirements.txt
|
||||
$(VENV)/bin/pip install -e .
|
||||
touch $(INSTALL_STAMP)
|
||||
|
||||
.PHONY: virtualenv
|
||||
|
@ -23,9 +23,9 @@ $(PYTHON):
|
|||
$(VIRTUALENV) $(VENV)
|
||||
|
||||
.PHONY: install-dev
|
||||
install-dev: $(INSTALL_STAMP) $(DEV_STAMP) ## Install development dependencies
|
||||
$(DEV_STAMP): $(PYTHON) dev-requirements.txt
|
||||
$(VENV)/bin/pip install -Ur dev-requirements.txt
|
||||
install-dev: virtualenv setup.cfg $(INSTALL_STAMP) $(DEV_STAMP) ## Install development dependencies
|
||||
$(DEV_STAMP): $(PYTHON)
|
||||
$(VENV)/bin/pip install -Ue .[dev]
|
||||
touch $(DEV_STAMP)
|
||||
|
||||
.PHONY: remove-install-stamp
|
||||
|
@ -41,11 +41,19 @@ serve: install ## Run the ihatemoney server
|
|||
$(PYTHON) -m ihatemoney.manage runserver
|
||||
|
||||
.PHONY: test
|
||||
test: $(DEV_STAMP) ## Run the tests
|
||||
test: install-dev ## Run the tests
|
||||
$(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
|
||||
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
|
||||
|
||||
.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; \
|
||||
$(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
|
||||
clean: ## Destroy the virtual environment
|
||||
rm -rf .venv
|
||||
|
|
12
README.rst
12
README.rst
|
@ -5,6 +5,10 @@ I hate money
|
|||
:target: https://travis-ci.org/spiral-project/ihatemoney
|
||||
: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.
|
||||
It keeps track of who bought what, when, and for whom; and helps to settle the
|
||||
bills.
|
||||
|
@ -21,7 +25,7 @@ encouraged to do so.
|
|||
Requirements
|
||||
============
|
||||
|
||||
* **Python**: 3.5, 3.6, 3.7.
|
||||
* **Python**: 3.6, 3.7, 3.8.
|
||||
* **Backends**: MySQL, PostgreSQL, SQLite, Memory.
|
||||
|
||||
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
|
||||
<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"]
|
||||
source_suffix = ".rst"
|
||||
master_doc = "index"
|
||||
|
|
|
@ -1,84 +1,7 @@
|
|||
Contributing
|
||||
############
|
||||
|
||||
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 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
|
||||
on github. 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 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).
|
||||
on github. To get started, please read :ref:`setup-dev-environment` and
|
||||
:ref:`contributing-developer`.
|
||||
|
||||
As a designer / Front-end developer
|
||||
-----------------------------------
|
||||
|
@ -139,6 +49,143 @@ will update the issue tracker with your feedback.
|
|||
|
||||
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 ?
|
||||
================================
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ Requirements
|
|||
|
||||
«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.
|
||||
* **Virtualenv** (recommended): `virtualenv` package under Debian/Ubuntu.
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
Sphinx==1.5.5
|
||||
docutils==0.13.1
|
||||
Sphinx==3.0.2
|
||||
docutils==0.16
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
# coding: utf8
|
||||
from flask import request, current_app
|
||||
from functools import wraps
|
||||
|
||||
from flask import current_app, request
|
||||
from flask_restful import Resource, abort
|
||||
from werkzeug.security import check_password_hash
|
||||
from wtforms.fields.core import BooleanField
|
||||
|
||||
from ihatemoney.models import db, Project, Person, Bill
|
||||
from ihatemoney.forms import ProjectForm, EditProjectForm, MemberForm, get_billform_for
|
||||
from werkzeug.security import check_password_hash
|
||||
from functools import wraps
|
||||
from ihatemoney.forms import EditProjectForm, MemberForm, ProjectForm, get_billform_for
|
||||
from ihatemoney.models import Bill, Person, Project, db
|
||||
|
||||
|
||||
def need_auth(f):
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
# coding: utf8
|
||||
from flask import Blueprint
|
||||
from flask_restful import Api
|
||||
from flask_cors import CORS
|
||||
from flask_restful import Api
|
||||
|
||||
from ihatemoney.api.common import (
|
||||
ProjectsHandler,
|
||||
ProjectHandler,
|
||||
TokenHandler,
|
||||
MemberHandler,
|
||||
ProjectStatsHandler,
|
||||
MembersHandler,
|
||||
BillHandler,
|
||||
BillsHandler,
|
||||
MemberHandler,
|
||||
MembersHandler,
|
||||
ProjectHandler,
|
||||
ProjectsHandler,
|
||||
ProjectStatsHandler,
|
||||
TokenHandler,
|
||||
)
|
||||
|
||||
api = Blueprint("api", __name__, url_prefix="/api")
|
||||
|
|
|
@ -8,4 +8,4 @@ ACTIVATE_DEMO_PROJECT = True
|
|||
ADMIN_PASSWORD = ""
|
||||
ALLOW_PUBLIC_PROJECT_CREATION = True
|
||||
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 jinja2 import Markup
|
||||
from werkzeug.security import check_password_hash, generate_password_hash
|
||||
from wtforms.fields.core import SelectField, SelectMultipleField
|
||||
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 (
|
||||
Email,
|
||||
DataRequired,
|
||||
ValidationError,
|
||||
Email,
|
||||
EqualTo,
|
||||
NumberRange,
|
||||
Optional,
|
||||
ValidationError,
|
||||
)
|
||||
from flask_wtf.file import FileField, FileAllowed, FileRequired
|
||||
|
||||
from flask_babel import lazy_gettext as _
|
||||
from flask import request
|
||||
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
|
||||
from ihatemoney.models import LoggingMode, Person, Project
|
||||
from ihatemoney.utils import eval_arithmetic_expression, slugify
|
||||
|
||||
|
||||
def strip_filter(string):
|
||||
|
|
|
@ -1,15 +1,7 @@
|
|||
from flask_babel import gettext as _
|
||||
from sqlalchemy_continuum import (
|
||||
Operation,
|
||||
parent_class,
|
||||
)
|
||||
from sqlalchemy_continuum import Operation, parent_class
|
||||
|
||||
from ihatemoney.models import (
|
||||
PersonVersion,
|
||||
ProjectVersion,
|
||||
BillVersion,
|
||||
Person,
|
||||
)
|
||||
from ihatemoney.models import BillVersion, Person, PersonVersion, ProjectVersion
|
||||
|
||||
|
||||
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 in version_list:
|
||||
object_type = {
|
||||
"Person": _("Person"),
|
||||
"Person": _("Participant"),
|
||||
"Bill": _("Bill"),
|
||||
"Project": _("Project"),
|
||||
}[parent_class(type(version)).__name__]
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import getpass
|
||||
import os
|
||||
import random
|
||||
import sys
|
||||
import getpass
|
||||
|
||||
from flask_script import Manager, Command, Option
|
||||
from flask_migrate import Migrate, MigrateCommand
|
||||
from flask_script import Command, Manager, Option
|
||||
from werkzeug.security import generate_password_hash
|
||||
|
||||
from ihatemoney.models import Project, db
|
||||
from ihatemoney.run import create_app
|
||||
from ihatemoney.models import db, Project
|
||||
from ihatemoney.utils import create_jinja_env
|
||||
|
||||
|
||||
|
@ -51,7 +51,7 @@ class GenerateConfig(Command):
|
|||
|
||||
def run(self, config_file):
|
||||
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)
|
||||
pkg_path = os.path.abspath(os.path.dirname(__file__))
|
||||
|
|
|
@ -12,6 +12,18 @@ msgstr ""
|
|||
msgid "Email"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
|
@ -106,6 +118,15 @@ msgstr ""
|
|||
msgid "The email %(email)s is not valid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Participant"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bill"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Too many failed login attempts, please retry later."
|
||||
msgstr ""
|
||||
|
||||
|
@ -139,6 +160,12 @@ msgstr ""
|
|||
msgid "Password successfully reset."
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully uploaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Invalid JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully deleted"
|
||||
msgstr ""
|
||||
|
||||
|
@ -150,7 +177,7 @@ msgid "Your invitations have been sent"
|
|||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "%(member)s had been added"
|
||||
msgid "%(member)s has been added"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
|
@ -204,9 +231,6 @@ msgstr ""
|
|||
msgid "Create a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Number of members"
|
||||
msgstr ""
|
||||
|
||||
|
@ -228,6 +252,9 @@ msgstr ""
|
|||
msgid "delete"
|
||||
msgstr ""
|
||||
|
||||
msgid "see"
|
||||
msgstr ""
|
||||
|
||||
msgid "The Dashboard is currently deactivated."
|
||||
msgstr ""
|
||||
|
||||
|
@ -237,6 +264,12 @@ msgstr ""
|
|||
msgid "Edit project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Choose file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download project's data"
|
||||
msgstr ""
|
||||
|
||||
|
@ -258,6 +291,9 @@ msgstr ""
|
|||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
msgid "Privacy Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit the project"
|
||||
msgstr ""
|
||||
|
||||
|
@ -288,6 +324,177 @@ msgstr ""
|
|||
msgid "Download"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
|
@ -335,6 +542,9 @@ msgstr ""
|
|||
msgid "Statistics"
|
||||
msgstr ""
|
||||
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
|
@ -392,6 +602,12 @@ msgstr ""
|
|||
msgid "Add a new bill"
|
||||
msgstr ""
|
||||
|
||||
msgid "Newer bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "Older bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "When?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -418,9 +634,6 @@ msgstr ""
|
|||
msgid "each"
|
||||
msgstr ""
|
||||
|
||||
msgid "see"
|
||||
msgstr ""
|
||||
|
||||
msgid "No bills"
|
||||
msgstr ""
|
||||
|
||||
|
@ -489,15 +702,15 @@ msgstr ""
|
|||
msgid "To whom?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Who?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Paid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Balance"
|
||||
msgid "Expenses by Month"
|
||||
msgstr ""
|
||||
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ def run_migrations_offline():
|
|||
|
||||
"""
|
||||
url = config.get_main_option("sqlalchemy.url")
|
||||
context.configure(url=url)
|
||||
context.configure(url=url, include_object=include_object)
|
||||
|
||||
with context.begin_transaction():
|
||||
context.run_migrations()
|
||||
|
@ -75,6 +75,7 @@ def run_migrations_online():
|
|||
context.configure(
|
||||
connection=connection,
|
||||
target_metadata=target_metadata,
|
||||
include_object=include_object,
|
||||
process_revision_directives=process_revision_directives,
|
||||
**current_app.extensions["migrate"].configure_args
|
||||
)
|
||||
|
@ -86,6 +87,12 @@ def run_migrations_online():
|
|||
connection.close()
|
||||
|
||||
|
||||
def include_object(object, name, type_, reflected, compare_to):
|
||||
if name == "sqlite_sequence":
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
if context.is_offline_mode():
|
||||
run_migrations_offline()
|
||||
else:
|
||||
|
|
|
@ -165,6 +165,18 @@ def upgrade():
|
|||
sa.Column("remote_addr", sa.String(length=50), nullable=True),
|
||||
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(
|
||||
"project",
|
||||
sa.Column(
|
||||
|
@ -179,6 +191,12 @@ def upgrade():
|
|||
|
||||
def downgrade():
|
||||
# ### 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_table("transaction")
|
||||
op.drop_index(
|
||||
|
|
|
@ -15,6 +15,8 @@ import sqlalchemy as sa
|
|||
|
||||
|
||||
def upgrade():
|
||||
bind = op.get_bind()
|
||||
if bind.engine.name == "sqlite":
|
||||
alter_table_batches = [
|
||||
op.batch_alter_table(
|
||||
"person", recreate="always", table_kwargs={"sqlite_autoincrement": True}
|
||||
|
@ -23,7 +25,9 @@ def upgrade():
|
|||
"bill", recreate="always", table_kwargs={"sqlite_autoincrement": True}
|
||||
),
|
||||
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():
|
||||
bind = op.get_bind()
|
||||
if bind.engine.name == "sqlite":
|
||||
alter_table_batches = [
|
||||
op.batch_alter_table(
|
||||
"person", recreate="always", table_kwargs={"sqlite_autoincrement": False}
|
||||
"person",
|
||||
recreate="always",
|
||||
table_kwargs={"sqlite_autoincrement": False},
|
||||
),
|
||||
op.batch_alter_table(
|
||||
"bill", recreate="always", table_kwargs={"sqlite_autoincrement": False}
|
||||
),
|
||||
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 datetime import datetime
|
||||
|
||||
import sqlalchemy
|
||||
from flask_sqlalchemy import SQLAlchemy, BaseQuery
|
||||
from flask import g, current_app
|
||||
|
||||
from debts import settle
|
||||
from sqlalchemy import orm
|
||||
from sqlalchemy.sql import func
|
||||
from flask import current_app, g
|
||||
from flask_sqlalchemy import BaseQuery, SQLAlchemy
|
||||
from itsdangerous import (
|
||||
TimedJSONWebSignatureSerializer,
|
||||
URLSafeSerializer,
|
||||
BadSignature,
|
||||
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 import version_class
|
||||
|
||||
from ihatemoney.patch_sqlalchemy_continuum import PatchedBuilder
|
||||
from ihatemoney.versioning import (
|
||||
LoggingMode,
|
||||
ConditionalVersioningManager,
|
||||
version_privacy_predicate,
|
||||
LoggingMode,
|
||||
get_ip_if_allowed,
|
||||
version_privacy_predicate,
|
||||
)
|
||||
|
||||
|
||||
make_versioned(
|
||||
user_cls=None,
|
||||
manager=ConditionalVersioningManager(
|
||||
|
@ -327,7 +323,7 @@ class Project(db.Model):
|
|||
return self.name
|
||||
|
||||
def __repr__(self):
|
||||
return "<Project %s>" % self.name
|
||||
return f"<Project {self.name}>"
|
||||
|
||||
|
||||
class Person(db.Model):
|
||||
|
@ -385,7 +381,7 @@ class Person(db.Model):
|
|||
return self.name
|
||||
|
||||
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
|
||||
|
@ -466,13 +462,12 @@ class Bill(db.Model):
|
|||
return 0
|
||||
|
||||
def __str__(self):
|
||||
return "%s for %s" % (self.amount, self.what)
|
||||
return self.what
|
||||
|
||||
def __repr__(self):
|
||||
return "<Bill of %s from %s for %s>" % (
|
||||
self.amount,
|
||||
self.payer,
|
||||
", ".join([o.name for o in self.owers]),
|
||||
return (
|
||||
f"<Bill of {self.amount} from {self.payer} for "
|
||||
f"{', '.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.expression_reflector import VersionExpressionReflector
|
||||
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):
|
||||
|
|
|
@ -2,12 +2,13 @@ import os
|
|||
import os.path
|
||||
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_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 ihatemoney import default_settings
|
||||
from ihatemoney.api.v1 import api as apiv1
|
||||
from ihatemoney.models import db
|
||||
from ihatemoney.utils import (
|
||||
|
@ -19,8 +20,6 @@ from ihatemoney.utils import (
|
|||
)
|
||||
from ihatemoney.web import main as web_interface
|
||||
|
||||
from ihatemoney import default_settings
|
||||
|
||||
|
||||
def setup_database(app):
|
||||
"""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">
|
||||
<a href='{{ url_for("main.home") }}'>{{ _("The best thing to do is probably to get back to the main page.")}}</a>
|
||||
</div>
|
||||
</main>
|
||||
{% endblock %}
|
||||
|
|
|
@ -124,18 +124,25 @@
|
|||
{% 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">
|
||||
{% if current_log_pref == LoggingMode.DISABLED %}
|
||||
<p>
|
||||
<i>{{ _("This project has history disabled. New actions won't appear below. You can enable history on the") }}</i>
|
||||
<a href="{{ url_for(".edit_project") }}">{{ _("settings page") }}</a>
|
||||
<p>{% set url = url_for(".edit_project") %}
|
||||
{% trans %}
|
||||
<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>
|
||||
{% if history %}
|
||||
<p><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>
|
||||
<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 %}
|
||||
{% 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. ") }}
|
||||
<a href="#" data-toggle="modal" data-keyboard="false" data-target="#confirm-ip-delete">{{ _("Delete stored IP addresses") }}</a></i></p>
|
||||
<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 %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
@ -160,10 +167,11 @@
|
|||
<th style="width: 15%">{{ _("Time") }}</th>
|
||||
<th style="width: 65%">{{ _("Event") }}</th>
|
||||
<th style="width: 20%">
|
||||
<span data-toggle="tooltip" title="{{_('IP address recording can be') }}
|
||||
{% if current_log_pref != LoggingMode.RECORD_IP %}
|
||||
{{ _("enabled") }}{% else %}{{ _("disabled") }}{% endif %}
|
||||
{{ _('on the Settings page') }}">
|
||||
<span data-toggle="tooltip" title="{% if current_log_pref != LoggingMode.RECORD_IP %}
|
||||
{{_('IP address recording can be enabled on the settings page') }}
|
||||
{% else %}
|
||||
{{_('IP address recording can be disabled on the settings page') }}
|
||||
{% endif %}">
|
||||
{{ _("From IP") }}</span></th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
|
@ -201,7 +209,7 @@
|
|||
{{ event.object_type }} <em class="font-italic">{{ event.object_desc }}</em>
|
||||
{% if event.val_after == False %}{{ _("deactivated") }}{% else %}{{ _("reactivated") }}{% endif %}
|
||||
{% 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" %}
|
||||
{{ simple_property_change(event, _("Weight")) }}
|
||||
{% 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>
|
||||
<h3>{{ _('Nothing to list')}}</h3>
|
||||
<p>
|
||||
{{ _("Someone probably") }}<br />
|
||||
{{ _("cleared the project history.") }}
|
||||
{{ _("Someone probably cleared the project history.") }}
|
||||
</p>
|
||||
</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
|
||||
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_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 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
|
||||
os.environ.pop("IHATEMONEY_SETTINGS_FILE_PATH", None)
|
||||
|
@ -62,7 +58,7 @@ class BaseTestCase(TestCase):
|
|||
"name": name,
|
||||
"id": name,
|
||||
"password": name,
|
||||
"contact_email": "%s@notmyidea.org" % name,
|
||||
"contact_email": f"{name}@notmyidea.org",
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -71,7 +67,7 @@ class BaseTestCase(TestCase):
|
|||
id=name,
|
||||
name=str(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.commit()
|
||||
|
@ -86,7 +82,7 @@ class IhatemoneyTestCase(BaseTestCase):
|
|||
return self.assertEqual(
|
||||
expected,
|
||||
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
|
||||
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
|
||||
self.assertEqual(len(models.Project.query.get("raclette").members), 2)
|
||||
|
@ -423,7 +419,7 @@ class BudgetTestCase(IhatemoneyTestCase):
|
|||
# a bill or displaying the balance
|
||||
result = self.client.get("/raclette/")
|
||||
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")
|
||||
|
@ -622,7 +618,7 @@ class BudgetTestCase(IhatemoneyTestCase):
|
|||
|
||||
# edit the bill
|
||||
self.client.post(
|
||||
"/raclette/edit/%s" % bill.id,
|
||||
f"/raclette/edit/{bill.id}",
|
||||
data={
|
||||
"date": "2011-08-10",
|
||||
"what": "fromage à raclette",
|
||||
|
@ -636,7 +632,7 @@ class BudgetTestCase(IhatemoneyTestCase):
|
|||
self.assertEqual(bill.amount, 10, "bill edition")
|
||||
|
||||
# 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")
|
||||
|
||||
# test balance
|
||||
|
@ -1082,7 +1078,7 @@ class BudgetTestCase(IhatemoneyTestCase):
|
|||
self.assertNotEqual(
|
||||
0.0,
|
||||
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):
|
||||
|
@ -1428,7 +1424,7 @@ class APITestCase(IhatemoneyTestCase):
|
|||
def api_create(self, name, id=None, password=None, contact=None):
|
||||
id = id or name
|
||||
password = password or name
|
||||
contact = contact or "%s@notmyidea.org" % name
|
||||
contact = contact or f"{name}@notmyidea.org"
|
||||
|
||||
return self.client.post(
|
||||
"/api/projects",
|
||||
|
@ -1442,7 +1438,7 @@ class APITestCase(IhatemoneyTestCase):
|
|||
|
||||
def api_add_member(self, project, name, weight=1):
|
||||
self.client.post(
|
||||
"/api/projects/%s/members" % project,
|
||||
f"/api/projects/{project}/members",
|
||||
data={"name": name, "weight": weight},
|
||||
headers=self.get_auth(project),
|
||||
)
|
||||
|
@ -1450,11 +1446,11 @@ class APITestCase(IhatemoneyTestCase):
|
|||
def get_auth(self, username, password=None):
|
||||
password = password or username
|
||||
base64string = (
|
||||
base64.encodebytes(("%s:%s" % (username, password)).encode("utf-8"))
|
||||
base64.encodebytes(f"{username}:{password}".encode("utf-8"))
|
||||
.decode("utf-8")
|
||||
.replace("\n", "")
|
||||
)
|
||||
return {"Authorization": "Basic %s" % base64string}
|
||||
return {"Authorization": f"Basic {base64string}"}
|
||||
|
||||
def test_cors_requests(self):
|
||||
# Create a project and test that CORS headers are present if requested.
|
||||
|
@ -1610,7 +1606,7 @@ class APITestCase(IhatemoneyTestCase):
|
|||
# Access with token
|
||||
resp = self.client.get(
|
||||
"/api/projects/raclette/token",
|
||||
headers={"Authorization": "Basic %s" % decoded_resp["token"]},
|
||||
headers={"Authorization": f"Basic {decoded_resp['token']}"},
|
||||
)
|
||||
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
@ -2139,10 +2135,10 @@ class APITestCase(IhatemoneyTestCase):
|
|||
resp = self.client.get("/raclette/history", follow_redirects=True)
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
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(
|
||||
"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.assertNotIn("127.0.0.1", resp.data.decode("utf-8"))
|
||||
|
@ -2278,7 +2274,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
|||
resp = self.client.get("/demo/history")
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
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.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("<td> -- </td>", resp.data.decode("utf-8"))
|
||||
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):
|
||||
|
@ -2350,18 +2346,16 @@ class HistoryTestCase(IhatemoneyTestCase):
|
|||
|
||||
resp = self.client.get("/demo/history")
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertIn(f"Project {em_surround('demo')} added", resp.data.decode("utf-8"))
|
||||
self.assertIn(
|
||||
"Project %s added" % em_surround("demo"), resp.data.decode("utf-8")
|
||||
)
|
||||
self.assertIn(
|
||||
"Project contact email changed to %s" % em_surround("demo2@notmyidea.org"),
|
||||
f"Project contact email changed to {em_surround('demo2@notmyidea.org')}",
|
||||
resp.data.decode("utf-8"),
|
||||
)
|
||||
self.assertIn(
|
||||
"Project private code changed", resp.data.decode("utf-8"),
|
||||
)
|
||||
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(
|
||||
resp.data.decode("utf-8").index("Project renamed "),
|
||||
|
@ -2477,7 +2471,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
|||
|
||||
# edit the bill
|
||||
resp = self.client.post(
|
||||
"/demo/edit/%i" % bill_id,
|
||||
f"/demo/edit/{bill_id}",
|
||||
data={
|
||||
"date": "2011-08-10",
|
||||
"what": "fromage à raclette",
|
||||
|
@ -2489,12 +2483,12 @@ class HistoryTestCase(IhatemoneyTestCase):
|
|||
)
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
# 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)
|
||||
|
||||
# delete user using POST method
|
||||
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)
|
||||
|
||||
|
@ -2596,7 +2590,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
|||
resp = self.client.get("/demo/history")
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
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
|
||||
|
@ -2616,7 +2610,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
|||
resp = self.client.get("/demo/history")
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertIn(
|
||||
"Bill %s added" % em_surround("25.0 for fromage à raclette"),
|
||||
f"Bill {em_surround('fromage à raclette')} added",
|
||||
resp.data.decode("utf-8"),
|
||||
)
|
||||
|
||||
|
@ -2637,26 +2631,26 @@ class HistoryTestCase(IhatemoneyTestCase):
|
|||
resp = self.client.get("/demo/history")
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertIn(
|
||||
"Bill %s added" % em_surround("25.0 for fromage à raclette"),
|
||||
f"Bill {em_surround('fromage à raclette')} added",
|
||||
resp.data.decode("utf-8"),
|
||||
)
|
||||
self.assertRegex(
|
||||
resp.data.decode("utf-8"),
|
||||
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("10.0", regex_escape=True),
|
||||
),
|
||||
)
|
||||
self.assertIn(
|
||||
"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"),
|
||||
)
|
||||
self.assertLess(
|
||||
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"),
|
||||
)
|
||||
|
@ -2668,8 +2662,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
|||
resp = self.client.get("/demo/history")
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertIn(
|
||||
"Bill %s removed" % em_surround("10.0 for new thing"),
|
||||
resp.data.decode("utf-8"),
|
||||
f"Bill {em_surround('new thing')} removed", resp.data.decode("utf-8"),
|
||||
)
|
||||
|
||||
# edit user
|
||||
|
@ -2684,7 +2677,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
|||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertRegex(
|
||||
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("1.0", regex_escape=True),
|
||||
|
@ -2692,13 +2685,13 @@ class HistoryTestCase(IhatemoneyTestCase):
|
|||
),
|
||||
)
|
||||
self.assertIn(
|
||||
"Person %s renamed to %s"
|
||||
"Participant %s renamed to %s"
|
||||
% (em_surround("alexis"), em_surround("new name"),),
|
||||
resp.data.decode("utf-8"),
|
||||
)
|
||||
self.assertLess(
|
||||
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"),
|
||||
)
|
||||
|
@ -2710,7 +2703,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
|||
resp = self.client.get("/demo/history")
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
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):
|
||||
|
@ -2763,9 +2756,8 @@ class HistoryTestCase(IhatemoneyTestCase):
|
|||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertRegex(
|
||||
resp.data.decode("utf-8"),
|
||||
r"Bill %s:\s* Amount changed\s* from %s\s* to %s"
|
||||
% (
|
||||
em_surround("25.0 for Bill 1", regex_escape=True),
|
||||
r"Bill {}:\s* Amount changed\s* from {}\s* to {}".format(
|
||||
em_surround("Bill 1", regex_escape=True),
|
||||
em_surround("25.0", regex_escape=True),
|
||||
em_surround("88.0", regex_escape=True),
|
||||
),
|
||||
|
@ -2773,8 +2765,7 @@ class HistoryTestCase(IhatemoneyTestCase):
|
|||
|
||||
self.assertNotRegex(
|
||||
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 2", regex_escape=True),
|
||||
),
|
||||
|
@ -2809,12 +2800,9 @@ class HistoryTestCase(IhatemoneyTestCase):
|
|||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertEqual(resp.data.decode("utf-8").count("<td> -- </td>"), 5)
|
||||
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(
|
||||
"Bill %s added" % em_surround("25.0 for Bill 1"), resp.data.decode("utf-8")
|
||||
)
|
||||
self.assertIn(
|
||||
"Bill %s removed" % em_surround("25.0 for Bill 1"),
|
||||
resp.data.decode("utf-8"),
|
||||
f"Bill {em_surround('Bill 1')} removed", resp.data.decode("utf-8"),
|
||||
)
|
||||
|
||||
# Add a new bill
|
||||
|
@ -2833,21 +2821,13 @@ class HistoryTestCase(IhatemoneyTestCase):
|
|||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertEqual(resp.data.decode("utf-8").count("<td> -- </td>"), 6)
|
||||
self.assertNotIn("127.0.0.1", resp.data.decode("utf-8"))
|
||||
self.assertIn(
|
||||
"Bill %s added" % em_surround("25.0 for Bill 1"), resp.data.decode("utf-8")
|
||||
)
|
||||
self.assertIn(f"Bill {em_surround('Bill 1')} added", resp.data.decode("utf-8"))
|
||||
self.assertEqual(
|
||||
resp.data.decode("utf-8").count(
|
||||
"Bill %s added" % em_surround("25.0 for Bill 1")
|
||||
),
|
||||
1,
|
||||
resp.data.decode("utf-8").count(f"Bill {em_surround('Bill 1')} added"), 1,
|
||||
)
|
||||
self.assertIn(f"Bill {em_surround('Bill 2')} added", resp.data.decode("utf-8"))
|
||||
self.assertIn(
|
||||
"Bill %s added" % em_surround("20.0 for Bill 2"), resp.data.decode("utf-8")
|
||||
)
|
||||
self.assertIn(
|
||||
"Bill %s removed" % em_surround("25.0 for Bill 1"),
|
||||
resp.data.decode("utf-8"),
|
||||
f"Bill {em_surround('Bill 1')} removed", resp.data.decode("utf-8"),
|
||||
)
|
||||
|
||||
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 ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\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"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Translate Toolkit 2.4.0\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
msgid ""
|
||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||
|
@ -26,6 +28,18 @@ msgstr ""
|
|||
msgid "Email"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
|
@ -120,6 +134,15 @@ msgstr ""
|
|||
msgid "The email %(email)s is not valid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Participant"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bill"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Too many failed login attempts, please retry later."
|
||||
msgstr ""
|
||||
|
||||
|
@ -153,6 +176,12 @@ msgstr ""
|
|||
msgid "Password successfully reset."
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully uploaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Invalid JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully deleted"
|
||||
msgstr ""
|
||||
|
||||
|
@ -164,7 +193,7 @@ msgid "Your invitations have been sent"
|
|||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "%(member)s had been added"
|
||||
msgid "%(member)s has been added"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
|
@ -218,9 +247,6 @@ msgstr ""
|
|||
msgid "Create a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Number of members"
|
||||
msgstr ""
|
||||
|
||||
|
@ -242,6 +268,9 @@ msgstr ""
|
|||
msgid "delete"
|
||||
msgstr ""
|
||||
|
||||
msgid "see"
|
||||
msgstr ""
|
||||
|
||||
msgid "The Dashboard is currently deactivated."
|
||||
msgstr ""
|
||||
|
||||
|
@ -251,6 +280,12 @@ msgstr ""
|
|||
msgid "Edit project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Choose file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download project's data"
|
||||
msgstr ""
|
||||
|
||||
|
@ -272,6 +307,9 @@ msgstr ""
|
|||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
msgid "Privacy Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit the project"
|
||||
msgstr ""
|
||||
|
||||
|
@ -302,6 +340,177 @@ msgstr ""
|
|||
msgid "Download"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
|
@ -349,6 +558,9 @@ msgstr ""
|
|||
msgid "Statistics"
|
||||
msgstr ""
|
||||
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
|
@ -406,6 +618,12 @@ msgstr ""
|
|||
msgid "Add a new bill"
|
||||
msgstr ""
|
||||
|
||||
msgid "Newer bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "Older bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "When?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -432,9 +650,6 @@ msgstr ""
|
|||
msgid "each"
|
||||
msgstr ""
|
||||
|
||||
msgid "see"
|
||||
msgstr ""
|
||||
|
||||
msgid "No bills"
|
||||
msgstr ""
|
||||
|
||||
|
@ -503,14 +718,14 @@ msgstr ""
|
|||
msgid "To whom?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Who?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Paid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Balance"
|
||||
msgid "Expenses by Month"
|
||||
msgstr ""
|
||||
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
|
|
Binary file not shown.
|
@ -1,25 +1,26 @@
|
|||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"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-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"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 3.11-dev\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
msgid ""
|
||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||
"accepted."
|
||||
msgstr ""
|
||||
"Kein gültiger Betrag oder Ausdruck. Es werden nur Zahlen und die Operatoren +"
|
||||
" - * / akzeptiert."
|
||||
"Kein gültiger Betrag oder Ausdruck. Es werden nur Zahlen und die "
|
||||
"Operatoren + - * / akzeptiert."
|
||||
|
||||
msgid "Project name"
|
||||
msgstr "Projektname"
|
||||
|
@ -30,6 +31,18 @@ msgstr "Privater Code"
|
|||
msgid "Email"
|
||||
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"
|
||||
msgstr "Projektkennung"
|
||||
|
||||
|
@ -41,8 +54,8 @@ msgid ""
|
|||
"A project with this identifier (\"%(project)s\") already exists. Please "
|
||||
"choose a new identifier"
|
||||
msgstr ""
|
||||
"Ein Projekt mit der Kennung (\"%(project)s\") existiert bereits. Bitte wähle "
|
||||
"eine andere Kennung"
|
||||
"Ein Projekt mit der Kennung (\"%(project)s\") existiert bereits. Bitte "
|
||||
"wähle eine andere Kennung"
|
||||
|
||||
msgid "Get in"
|
||||
msgstr "Eintreten"
|
||||
|
@ -80,6 +93,12 @@ msgstr "Von"
|
|||
msgid "Amount paid"
|
||||
msgstr "Betrag"
|
||||
|
||||
msgid "External link"
|
||||
msgstr ""
|
||||
|
||||
msgid "A link to an external document, related to this bill"
|
||||
msgstr ""
|
||||
|
||||
msgid "For whom?"
|
||||
msgstr "Für wen?"
|
||||
|
||||
|
@ -120,6 +139,15 @@ msgstr "Einladung senden"
|
|||
msgid "The email %(email)s is not valid"
|
||||
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."
|
||||
msgstr "Zu viele fehlgeschlagene Anmeldeversuche, bitte versuche es später."
|
||||
|
||||
|
@ -130,8 +158,7 @@ msgstr ""
|
|||
"verbleibend."
|
||||
|
||||
msgid "You either provided a bad token or no project identifier."
|
||||
msgstr ""
|
||||
"Du hast entweder einen ungültigen Token oder keine Projekt-ID angegeben."
|
||||
msgstr "Du hast entweder einen ungültigen Token oder keine Projekt-ID angegeben."
|
||||
|
||||
msgid "This private code is not the right one"
|
||||
msgstr "Der private Code ist nicht korrekt"
|
||||
|
@ -158,6 +185,12 @@ msgstr "Unbekanntes Projekt"
|
|||
msgid "Password successfully reset."
|
||||
msgstr "Passwort erfolgreich zurückgesetzt."
|
||||
|
||||
msgid "Project successfully uploaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Invalid JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully deleted"
|
||||
msgstr "Projekt erfolgreich gelöscht"
|
||||
|
||||
|
@ -169,8 +202,8 @@ msgid "Your invitations have been sent"
|
|||
msgstr "Deine Einladungen wurden versendet"
|
||||
|
||||
#, python-format
|
||||
msgid "%(member)s had been added"
|
||||
msgstr "%(member)s wurde(n) hinzugefügt"
|
||||
msgid "%(member)s has been added"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "%(name)s is part of this project again"
|
||||
|
@ -225,9 +258,6 @@ msgstr "?"
|
|||
msgid "Create a new project"
|
||||
msgstr "Neues Projekt erstellen"
|
||||
|
||||
msgid "Project"
|
||||
msgstr "Projekt"
|
||||
|
||||
msgid "Number of members"
|
||||
msgstr "Anzahl der Teilnehmer"
|
||||
|
||||
|
@ -249,6 +279,9 @@ msgstr "Bearbeiten"
|
|||
msgid "delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
msgid "see"
|
||||
msgstr ""
|
||||
|
||||
msgid "The Dashboard is currently deactivated."
|
||||
msgstr "Das Dashboard ist aktuell deaktiviert."
|
||||
|
||||
|
@ -258,6 +291,12 @@ msgstr "Bist du sicher?"
|
|||
msgid "Edit project"
|
||||
msgstr "Projekt bearbeiten"
|
||||
|
||||
msgid "Import JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Choose file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download project's data"
|
||||
msgstr "Projektdaten herunterladen"
|
||||
|
||||
|
@ -279,6 +318,9 @@ msgstr "Passwort vergessen?"
|
|||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
msgid "Privacy Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit the project"
|
||||
msgstr "Projekt bearbeiten"
|
||||
|
||||
|
@ -309,6 +351,177 @@ msgstr "Einladung versenden"
|
|||
msgid "Download"
|
||||
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"
|
||||
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 "
|
||||
"server, so don\\'t reuse a personal password!"
|
||||
msgstr ""
|
||||
"Dieser Zugangscode wird an deine Freunde gesendet. Es wird als Klartext auf "
|
||||
"dem Server gespeichert. Bitte verwenden daher kein persönliches Passwort!"
|
||||
"Dieser Zugangscode wird an deine Freunde gesendet. Es wird als Klartext "
|
||||
"auf dem Server gespeichert. Bitte verwenden daher kein persönliches "
|
||||
"Passwort!"
|
||||
|
||||
msgid "Account manager"
|
||||
msgstr "Konten"
|
||||
|
@ -358,6 +572,9 @@ msgstr "Bilanz"
|
|||
msgid "Statistics"
|
||||
msgstr "Statistik"
|
||||
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
|
@ -415,6 +632,12 @@ msgstr "Du kannst anfangen, Teilnehmer hinzuzufügen"
|
|||
msgid "Add a new bill"
|
||||
msgstr "Neue Ausgabe"
|
||||
|
||||
msgid "Newer bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "Older bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "When?"
|
||||
msgstr "Wann?"
|
||||
|
||||
|
@ -485,8 +708,8 @@ msgid ""
|
|||
"You can share the project identifier and the private code by any "
|
||||
"communication means."
|
||||
msgstr ""
|
||||
"Du kannst die Projekt-ID und den privaten Code auf jedem Kommunikationsweg "
|
||||
"weitergeben."
|
||||
"Du kannst die Projekt-ID und den privaten Code auf jedem "
|
||||
"Kommunikationsweg weitergeben."
|
||||
|
||||
msgid "Identifier:"
|
||||
msgstr "ID:"
|
||||
|
@ -495,8 +718,7 @@ msgid "Share the Link"
|
|||
msgstr "Link teilen"
|
||||
|
||||
msgid "You can directly share the following link via your prefered medium"
|
||||
msgstr ""
|
||||
"Du kannst den folgenden Link direkt über dein bevorzugtes Medium teilen"
|
||||
msgstr "Du kannst den folgenden Link direkt über dein bevorzugtes Medium teilen"
|
||||
|
||||
msgid "Send via Emails"
|
||||
msgstr "Per E-Mail versenden"
|
||||
|
@ -507,10 +729,10 @@ msgid ""
|
|||
" creation of this budget management project and we will "
|
||||
"send them an email for you."
|
||||
msgstr ""
|
||||
"Gib eine (durch Kommas getrennte) Liste von E-Mail-Adressen an, die du über "
|
||||
"die\n"
|
||||
"\t\t\tErstellung dieses Projekts informieren möchtest, und wir senden ihnen "
|
||||
"eine E-Mail."
|
||||
"Gib eine (durch Kommas getrennte) Liste von E-Mail-Adressen an, die du "
|
||||
"über die\n"
|
||||
"\t\t\tErstellung dieses Projekts informieren möchtest, und wir senden "
|
||||
"ihnen eine E-Mail."
|
||||
|
||||
msgid "Who pays?"
|
||||
msgstr "Wer zahlt?"
|
||||
|
@ -518,14 +740,21 @@ msgstr "Wer zahlt?"
|
|||
msgid "To whom?"
|
||||
msgstr "An wen?"
|
||||
|
||||
msgid "Who?"
|
||||
msgstr "Wer?"
|
||||
|
||||
msgid "Paid"
|
||||
msgstr "Bezahlt"
|
||||
|
||||
msgid "Spent"
|
||||
msgstr "Ausgegeben"
|
||||
|
||||
msgid "Balance"
|
||||
msgstr "Bilanz"
|
||||
msgid "Expenses by Month"
|
||||
msgstr ""
|
||||
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Someone probably"
|
||||
#~ msgstr ""
|
||||
|
||||
#~ msgid "cleared the project history."
|
||||
#~ msgstr ""
|
||||
|
||||
|
|
Binary file not shown.
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language: el\n"
|
||||
|
@ -12,7 +12,7 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.7.0\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
msgid ""
|
||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||
|
@ -28,6 +28,18 @@ msgstr ""
|
|||
msgid "Email"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
|
@ -122,6 +134,15 @@ msgstr ""
|
|||
msgid "The email %(email)s is not valid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Participant"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bill"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Too many failed login attempts, please retry later."
|
||||
msgstr ""
|
||||
|
||||
|
@ -155,6 +176,12 @@ msgstr ""
|
|||
msgid "Password successfully reset."
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully uploaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Invalid JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully deleted"
|
||||
msgstr ""
|
||||
|
||||
|
@ -166,7 +193,7 @@ msgid "Your invitations have been sent"
|
|||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "%(member)s had been added"
|
||||
msgid "%(member)s has been added"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
|
@ -220,9 +247,6 @@ msgstr ""
|
|||
msgid "Create a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Number of members"
|
||||
msgstr ""
|
||||
|
||||
|
@ -244,6 +268,9 @@ msgstr ""
|
|||
msgid "delete"
|
||||
msgstr ""
|
||||
|
||||
msgid "see"
|
||||
msgstr ""
|
||||
|
||||
msgid "The Dashboard is currently deactivated."
|
||||
msgstr ""
|
||||
|
||||
|
@ -253,6 +280,12 @@ msgstr ""
|
|||
msgid "Edit project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Choose file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download project's data"
|
||||
msgstr ""
|
||||
|
||||
|
@ -274,6 +307,9 @@ msgstr ""
|
|||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
msgid "Privacy Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit the project"
|
||||
msgstr ""
|
||||
|
||||
|
@ -304,6 +340,177 @@ msgstr ""
|
|||
msgid "Download"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
|
@ -351,6 +558,9 @@ msgstr ""
|
|||
msgid "Statistics"
|
||||
msgstr ""
|
||||
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
|
@ -408,6 +618,12 @@ msgstr ""
|
|||
msgid "Add a new bill"
|
||||
msgstr ""
|
||||
|
||||
msgid "Newer bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "Older bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "When?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -434,9 +650,6 @@ msgstr ""
|
|||
msgid "each"
|
||||
msgstr ""
|
||||
|
||||
msgid "see"
|
||||
msgstr ""
|
||||
|
||||
msgid "No bills"
|
||||
msgstr ""
|
||||
|
||||
|
@ -505,97 +718,14 @@ msgstr ""
|
|||
msgid "To whom?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Who?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Paid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Balance"
|
||||
msgid "Expenses by Month"
|
||||
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 ""
|
||||
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
|
|
Binary file not shown.
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: Diego Caraballo <diegocaraballo84@gmail.com>\n"
|
||||
"Language: es_419\n"
|
||||
|
@ -13,7 +13,7 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.7.0\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
msgid ""
|
||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||
|
@ -31,6 +31,18 @@ msgstr "Código privado"
|
|||
msgid "Email"
|
||||
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"
|
||||
msgstr "Identificador de proyecto"
|
||||
|
||||
|
@ -127,6 +139,15 @@ msgstr "Enviar invitaciones"
|
|||
msgid "The email %(email)s is not valid"
|
||||
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."
|
||||
msgstr ""
|
||||
"Demasiados intentos fallidos de inicio de sesión, vuelva a intentarlo más"
|
||||
|
@ -164,6 +185,12 @@ msgstr "Proyecto desconocido"
|
|||
msgid "Password successfully reset."
|
||||
msgstr "Contraseña restablecida con éxito."
|
||||
|
||||
msgid "Project successfully uploaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Invalid JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully deleted"
|
||||
msgstr "Proyecto eliminado correctamente"
|
||||
|
||||
|
@ -175,8 +202,8 @@ msgid "Your invitations have been sent"
|
|||
msgstr "Sus invitaciones han sido enviadas"
|
||||
|
||||
#, python-format
|
||||
msgid "%(member)s had been added"
|
||||
msgstr "se han añadido %(member)s"
|
||||
msgid "%(member)s has been added"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "%(name)s is part of this project again"
|
||||
|
@ -231,9 +258,6 @@ msgstr "?"
|
|||
msgid "Create a new project"
|
||||
msgstr "Crear un nuevo proyecto"
|
||||
|
||||
msgid "Project"
|
||||
msgstr "Proyecto"
|
||||
|
||||
msgid "Number of members"
|
||||
msgstr "Número de miembros"
|
||||
|
||||
|
@ -255,6 +279,9 @@ msgstr "Editar"
|
|||
msgid "delete"
|
||||
msgstr "Eliminar"
|
||||
|
||||
msgid "see"
|
||||
msgstr "ver"
|
||||
|
||||
msgid "The Dashboard is currently deactivated."
|
||||
msgstr "El panel está desactivado actualmente."
|
||||
|
||||
|
@ -264,6 +291,12 @@ msgstr "¿Estás seguro?"
|
|||
msgid "Edit project"
|
||||
msgstr "Editar proyecto"
|
||||
|
||||
msgid "Import JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Choose file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download project's data"
|
||||
msgstr "Descargar datos del proyecto"
|
||||
|
||||
|
@ -287,6 +320,9 @@ msgstr "¿No recuerdas la contraseña?"
|
|||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
msgid "Privacy Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit the project"
|
||||
msgstr "Editar el proyecto"
|
||||
|
||||
|
@ -317,6 +353,177 @@ msgstr "Enviar las invitaciones"
|
|||
msgid "Download"
|
||||
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"
|
||||
msgstr "Gestione sus gastos compartidos <br />fácilmente"
|
||||
|
||||
|
@ -366,6 +573,9 @@ msgstr "Resolver"
|
|||
msgid "Statistics"
|
||||
msgstr "Estadísticas"
|
||||
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Configuración"
|
||||
|
||||
|
@ -423,6 +633,12 @@ msgstr "Deberías comenzar agregando participantes"
|
|||
msgid "Add a new bill"
|
||||
msgstr "Añadir una nueva factura"
|
||||
|
||||
msgid "Newer bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "Older bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "When?"
|
||||
msgstr "¿Cuando?"
|
||||
|
||||
|
@ -449,9 +665,6 @@ msgstr "Todo el mundo menos %(excluded)s"
|
|||
msgid "each"
|
||||
msgstr "Cada"
|
||||
|
||||
msgid "see"
|
||||
msgstr "ver"
|
||||
|
||||
msgid "No bills"
|
||||
msgstr "Sin facturas"
|
||||
|
||||
|
@ -530,15 +743,17 @@ msgstr "¿Quién paga?"
|
|||
msgid "To whom?"
|
||||
msgstr "¿A quién?"
|
||||
|
||||
msgid "Who?"
|
||||
msgstr "¿Quién?"
|
||||
|
||||
msgid "Paid"
|
||||
msgstr "Pagado"
|
||||
|
||||
msgid "Spent"
|
||||
msgstr "Gastado"
|
||||
|
||||
msgid "Balance"
|
||||
msgstr "Balance"
|
||||
msgid "Expenses by Month"
|
||||
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 ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-10-01 21:48+0200\n"
|
||||
"PO-Revision-Date: 2019-10-07 22:56+0000\n"
|
||||
"Last-Translator: Alexis Metaireau <alexis@notmyidea.org>\n"
|
||||
"POT-Creation-Date: 2020-04-25 13:02+0200\n"
|
||||
"PO-Revision-Date: 2020-04-25 11:14+0000\n"
|
||||
"Last-Translator: Rémy Hubscher <hubscher.remy@gmail.com>\n"
|
||||
"Language-Team: French <https://hosted.weblate.org/projects/i-hate-money/"
|
||||
"i-hate-money/fr/>\n"
|
||||
"Language: fr\n"
|
||||
|
@ -17,15 +17,15 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 3.9-dev\n"
|
||||
"Generated-By: Babel 2.7.0\n"
|
||||
"X-Generator: Weblate 4.0.2-dev\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
msgid ""
|
||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||
"accepted."
|
||||
msgstr ""
|
||||
"Ceci n'est pas pas un montant ou une expression valide. Seuls les nombres"
|
||||
" et les opérateurs + - * / sont acceptés."
|
||||
"Ceci n'est pas un montant ou une expression valide. Seuls les nombres et "
|
||||
"les opérateurs + - * / sont acceptés."
|
||||
|
||||
msgid "Project name"
|
||||
msgstr "Nom de projet"
|
||||
|
@ -36,6 +36,18 @@ msgstr "Code d’accès"
|
|||
msgid "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"
|
||||
msgstr "Identifiant du projet"
|
||||
|
||||
|
@ -132,6 +144,15 @@ msgstr "Envoyer les invitations"
|
|||
msgid "The email %(email)s is not valid"
|
||||
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."
|
||||
msgstr "Trop d'échecs d’authentification successifs, veuillez réessayer plus tard."
|
||||
|
||||
|
@ -167,6 +188,12 @@ msgstr "Project inconnu"
|
|||
msgid "Password successfully reset."
|
||||
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"
|
||||
msgstr "Projet supprimé"
|
||||
|
||||
|
@ -178,8 +205,8 @@ msgid "Your invitations have been sent"
|
|||
msgstr "Vos invitations ont bien été envoyées"
|
||||
|
||||
#, python-format
|
||||
msgid "%(member)s had been added"
|
||||
msgstr "%(member)s a bien été ajouté"
|
||||
msgid "%(member)s has been added"
|
||||
msgstr "%(member)s a été ajouté"
|
||||
|
||||
#, python-format
|
||||
msgid "%(name)s is part of this project again"
|
||||
|
@ -234,9 +261,6 @@ msgstr " ?"
|
|||
msgid "Create a new project"
|
||||
msgstr "Créer un nouveau projet"
|
||||
|
||||
msgid "Project"
|
||||
msgstr "Projets"
|
||||
|
||||
msgid "Number of members"
|
||||
msgstr "Nombre de membres"
|
||||
|
||||
|
@ -258,6 +282,9 @@ msgstr "éditer"
|
|||
msgid "delete"
|
||||
msgstr "supprimer"
|
||||
|
||||
msgid "see"
|
||||
msgstr "voir"
|
||||
|
||||
msgid "The Dashboard is currently deactivated."
|
||||
msgstr "Le tableau de bord est actuellement désactivée."
|
||||
|
||||
|
@ -267,6 +294,12 @@ msgstr "c’est sûr ?"
|
|||
msgid "Edit project"
|
||||
msgstr "Éditer le projet"
|
||||
|
||||
msgid "Import JSON"
|
||||
msgstr "Import JSON"
|
||||
|
||||
msgid "Choose file"
|
||||
msgstr "Choisir un fichier"
|
||||
|
||||
msgid "Download project's data"
|
||||
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"
|
||||
msgstr "Annuler"
|
||||
|
||||
msgid "Privacy Settings"
|
||||
msgstr "Vie privée"
|
||||
|
||||
msgid "Edit the project"
|
||||
msgstr "Éditer le projet"
|
||||
|
||||
|
@ -318,6 +354,202 @@ msgstr "Envoyer les invitations"
|
|||
msgid "Download"
|
||||
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"
|
||||
msgstr "Gérez vos dépenses <br />partagées, facilement"
|
||||
|
||||
|
@ -367,6 +599,9 @@ msgstr "Remboursements"
|
|||
msgid "Statistics"
|
||||
msgstr "Statistiques"
|
||||
|
||||
msgid "History"
|
||||
msgstr "Historique"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Options"
|
||||
|
||||
|
@ -424,6 +659,12 @@ msgstr "Vous devriez commencer par ajouter des participants"
|
|||
msgid "Add a new bill"
|
||||
msgstr "Nouvelle facture"
|
||||
|
||||
msgid "Newer bills"
|
||||
msgstr "Nouvelles factures"
|
||||
|
||||
msgid "Older bills"
|
||||
msgstr "Ancienne factures"
|
||||
|
||||
msgid "When?"
|
||||
msgstr "Quand ?"
|
||||
|
||||
|
@ -450,9 +691,6 @@ msgstr "Tout le monde sauf %(excluded)s"
|
|||
msgid "each"
|
||||
msgstr "chacun"
|
||||
|
||||
msgid "see"
|
||||
msgstr "voir"
|
||||
|
||||
msgid "No bills"
|
||||
msgstr "Pas encore de factures"
|
||||
|
||||
|
@ -527,27 +765,17 @@ msgstr "Qui doit payer ?"
|
|||
msgid "To whom?"
|
||||
msgstr "Pour qui ?"
|
||||
|
||||
msgid "Who?"
|
||||
msgstr "Qui ?"
|
||||
|
||||
msgid "Paid"
|
||||
msgstr "A payé"
|
||||
|
||||
msgid "Spent"
|
||||
msgstr "A dépensé"
|
||||
|
||||
msgid "Balance"
|
||||
msgstr "Solde"
|
||||
|
||||
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 "Expenses by Month"
|
||||
msgstr "Dépenses par mois"
|
||||
|
||||
msgid "Period"
|
||||
msgstr "Période"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "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."
|
||||
#~ 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 ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"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-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"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 3.10-dev\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
msgid ""
|
||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||
"accepted."
|
||||
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"
|
||||
msgstr "Nama proyek"
|
||||
|
@ -29,6 +31,18 @@ msgstr "Kode pribadi"
|
|||
msgid "Email"
|
||||
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"
|
||||
msgstr "Pengidentifikasi proyek"
|
||||
|
||||
|
@ -125,6 +139,15 @@ msgstr "Kirim undangan"
|
|||
msgid "The email %(email)s is not 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."
|
||||
msgstr "Terlalu banyak percobaan masuk, silakan coba lagi nanti."
|
||||
|
||||
|
@ -158,6 +181,12 @@ msgstr "Proyek tidak diketahui"
|
|||
msgid "Password successfully reset."
|
||||
msgstr "Kata sandi berhasil diatur ulang."
|
||||
|
||||
msgid "Project successfully uploaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Invalid JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully deleted"
|
||||
msgstr "Proyek berhasil dihapus"
|
||||
|
||||
|
@ -169,8 +198,8 @@ msgid "Your invitations have been sent"
|
|||
msgstr "Undangan Anda telah dikirim"
|
||||
|
||||
#, python-format
|
||||
msgid "%(member)s had been added"
|
||||
msgstr "%(member)s telah ditambahkan"
|
||||
msgid "%(member)s has been added"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "%(name)s is part of this project again"
|
||||
|
@ -225,9 +254,6 @@ msgstr "?"
|
|||
msgid "Create a new project"
|
||||
msgstr "Buat proyek baru"
|
||||
|
||||
msgid "Project"
|
||||
msgstr "Proyek"
|
||||
|
||||
msgid "Number of members"
|
||||
msgstr "Jumlah anggota"
|
||||
|
||||
|
@ -249,6 +275,9 @@ msgstr "ubah"
|
|||
msgid "delete"
|
||||
msgstr "hapus"
|
||||
|
||||
msgid "see"
|
||||
msgstr "lihat"
|
||||
|
||||
msgid "The Dashboard is currently deactivated."
|
||||
msgstr "Dasbor sekarang ini sedang dinonaktifkan."
|
||||
|
||||
|
@ -258,6 +287,12 @@ msgstr "Anda yakin?"
|
|||
msgid "Edit project"
|
||||
msgstr "Ubah proyek"
|
||||
|
||||
msgid "Import JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Choose file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download project's data"
|
||||
msgstr "Unduh data proyek"
|
||||
|
||||
|
@ -279,6 +314,9 @@ msgstr "Tidak bisa mengingat kata sandi?"
|
|||
msgid "Cancel"
|
||||
msgstr "Batalkan"
|
||||
|
||||
msgid "Privacy Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit the project"
|
||||
msgstr "Ubah proyek"
|
||||
|
||||
|
@ -309,6 +347,177 @@ msgstr "Kirim undangan"
|
|||
msgid "Download"
|
||||
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"
|
||||
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 "
|
||||
"server, so don\\'t reuse a personal password!"
|
||||
msgstr ""
|
||||
"Kode akses ini akan dikirimkan ke teman Anda. Kode ini disimpan dalam bentuk "
|
||||
"teks biasa dalam server, jadi jangan gunakan password Anda!"
|
||||
"Kode akses ini akan dikirimkan ke teman Anda. Kode ini disimpan dalam "
|
||||
"bentuk teks biasa dalam server, jadi jangan gunakan password Anda!"
|
||||
|
||||
msgid "Account manager"
|
||||
msgstr "Pengatur akun"
|
||||
|
@ -358,6 +567,9 @@ msgstr "Atur"
|
|||
msgid "Statistics"
|
||||
msgstr "Statistik"
|
||||
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Pengaturan"
|
||||
|
||||
|
@ -415,6 +627,12 @@ msgstr "Anda harus mulai dengan menambahkan partisipan"
|
|||
msgid "Add a new bill"
|
||||
msgstr "Tambah tagihan baru"
|
||||
|
||||
msgid "Newer bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "Older bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "When?"
|
||||
msgstr "Kapan?"
|
||||
|
||||
|
@ -441,9 +659,6 @@ msgstr "Semua orang kecuali %(excluded)s"
|
|||
msgid "each"
|
||||
msgstr "setiap"
|
||||
|
||||
msgid "see"
|
||||
msgstr "lihat"
|
||||
|
||||
msgid "No bills"
|
||||
msgstr "Tidak ada tagihan"
|
||||
|
||||
|
@ -499,7 +714,8 @@ msgstr "Bagikan tautan"
|
|||
|
||||
msgid "You can directly share the following link via your prefered medium"
|
||||
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"
|
||||
msgstr "Kirim melalui surel"
|
||||
|
@ -510,10 +726,10 @@ msgid ""
|
|||
" creation of this budget management project and we will "
|
||||
"send them an email for you."
|
||||
msgstr ""
|
||||
"Spesifikkan daftar alamat surel (dipisah dengan koma) yang akan Anda kirim "
|
||||
"pemberitahuan tentang\n"
|
||||
" pembuatan dari manajemen anggaran proyek ini dan kami akan "
|
||||
"memngirim mereka sebuah surel."
|
||||
"Spesifikkan daftar alamat surel (dipisah dengan koma) yang akan Anda "
|
||||
"kirim pemberitahuan tentang\n"
|
||||
" pembuatan dari manajemen anggaran proyek ini dan kami "
|
||||
"akan memngirim mereka sebuah surel."
|
||||
|
||||
msgid "Who pays?"
|
||||
msgstr "Siapa membayar?"
|
||||
|
@ -521,14 +737,24 @@ msgstr "Siapa membayar?"
|
|||
msgid "To whom?"
|
||||
msgstr "Kepada siapa?"
|
||||
|
||||
msgid "Who?"
|
||||
msgstr "Siapa?"
|
||||
|
||||
msgid "Paid"
|
||||
msgstr "Dibayar"
|
||||
|
||||
msgid "Spent"
|
||||
msgstr "Dihabiskan"
|
||||
|
||||
msgid "Balance"
|
||||
msgstr "Saldo"
|
||||
msgid "Expenses by Month"
|
||||
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 ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"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-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"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 3.10-dev\n"
|
||||
"Generated-By: Babel 2.7.0\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
msgid ""
|
||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||
|
@ -31,6 +31,18 @@ msgstr "Privat kode"
|
|||
msgid "Email"
|
||||
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"
|
||||
msgstr "Prosjektidentifikator"
|
||||
|
||||
|
@ -129,6 +141,15 @@ msgstr "Send invitasjoner"
|
|||
msgid "The email %(email)s is not valid"
|
||||
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."
|
||||
msgstr "For mange mislykkede innloggingsforsøk, prøv igjen senere."
|
||||
|
||||
|
@ -165,6 +186,12 @@ msgstr "Ukjent prosjekt"
|
|||
msgid "Password successfully reset."
|
||||
msgstr "Passord tilbakestilt."
|
||||
|
||||
msgid "Project successfully uploaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Invalid JSON"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Project successfully deleted"
|
||||
msgstr "Prosjekt slettet"
|
||||
|
@ -179,8 +206,8 @@ msgid "Your invitations have been sent"
|
|||
msgstr "Invitasjonene dine har blitt sendt"
|
||||
|
||||
#, python-format
|
||||
msgid "%(member)s had been added"
|
||||
msgstr "%(member)s lagt til"
|
||||
msgid "%(member)s has been added"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "%(name)s is part of this project again"
|
||||
|
@ -237,9 +264,6 @@ msgstr "?"
|
|||
msgid "Create a new project"
|
||||
msgstr "Opprett et nytt prosjekt"
|
||||
|
||||
msgid "Project"
|
||||
msgstr "Prosjekt"
|
||||
|
||||
msgid "Number of members"
|
||||
msgstr "Antall medlemmer"
|
||||
|
||||
|
@ -261,6 +285,10 @@ msgstr "rediger"
|
|||
msgid "delete"
|
||||
msgstr "slett"
|
||||
|
||||
#, fuzzy
|
||||
msgid "see"
|
||||
msgstr "se"
|
||||
|
||||
msgid "The Dashboard is currently deactivated."
|
||||
msgstr "Oversikten er for tiden avskrudd."
|
||||
|
||||
|
@ -270,6 +298,12 @@ msgstr "er du sikker?"
|
|||
msgid "Edit project"
|
||||
msgstr "Rediger prosjekt"
|
||||
|
||||
msgid "Import JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Choose file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download project's data"
|
||||
msgstr "Last ned prosjektets data"
|
||||
|
||||
|
@ -294,6 +328,9 @@ msgstr "Husker du ikke passordet?"
|
|||
msgid "Cancel"
|
||||
msgstr "Avbryt"
|
||||
|
||||
msgid "Privacy Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit the project"
|
||||
msgstr "Rediger prosjektet"
|
||||
|
||||
|
@ -325,6 +362,178 @@ msgstr "Send ut invitasjonene"
|
|||
msgid "Download"
|
||||
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"
|
||||
msgstr "Håndter delte <br />utgifter, enkelt"
|
||||
|
||||
|
@ -376,6 +585,9 @@ msgstr "Gjør opp"
|
|||
msgid "Statistics"
|
||||
msgstr "Statistikk"
|
||||
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Innstillinger"
|
||||
|
||||
|
@ -436,6 +648,12 @@ msgstr "Du kan starte ved å legge til deltagere"
|
|||
msgid "Add a new bill"
|
||||
msgstr "Legg til en ny regning"
|
||||
|
||||
msgid "Newer bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "Older bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "When?"
|
||||
msgstr "Når?"
|
||||
|
||||
|
@ -462,10 +680,6 @@ msgstr "Alle, unntagen %(excluded)s"
|
|||
msgid "each"
|
||||
msgstr "hver"
|
||||
|
||||
#, fuzzy
|
||||
msgid "see"
|
||||
msgstr "se"
|
||||
|
||||
msgid "No bills"
|
||||
msgstr "Ingen regninger"
|
||||
|
||||
|
@ -546,18 +760,17 @@ msgstr "Hvem betaler?"
|
|||
msgid "To whom?"
|
||||
msgstr "Til hvem?"
|
||||
|
||||
msgid "Who?"
|
||||
msgstr "Hvem?"
|
||||
|
||||
msgid "Paid"
|
||||
msgstr "Betalt"
|
||||
|
||||
msgid "Spent"
|
||||
msgstr "Forbrukt"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Balance"
|
||||
msgstr "Kontobalanse"
|
||||
msgid "Expenses by Month"
|
||||
msgstr ""
|
||||
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The project identifier is used to "
|
||||
|
@ -672,3 +885,6 @@ msgstr "Kontobalanse"
|
|||
#~ "En lenke for å tilbakestille passordet"
|
||||
#~ " har blitt sent til deg per "
|
||||
#~ "e-post."
|
||||
|
||||
#~ msgid "%(member)s had been added"
|
||||
#~ msgstr "%(member)s lagt til"
|
||||
|
|
Binary file not shown.
|
@ -1,19 +1,19 @@
|
|||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \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"
|
||||
"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-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"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 3.9-dev\n"
|
||||
"Generated-By: Babel 2.7.0\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
msgid ""
|
||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||
|
@ -29,6 +29,18 @@ msgstr "Privécode"
|
|||
msgid "Email"
|
||||
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"
|
||||
msgstr "Project-id"
|
||||
|
||||
|
@ -123,6 +135,15 @@ msgstr "Uitnodigingen versturen"
|
|||
msgid "The email %(email)s is not valid"
|
||||
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."
|
||||
msgstr "Te vaak onjuist ingelogd. Probeer het later opnieuw."
|
||||
|
||||
|
@ -158,6 +179,12 @@ msgstr "Onbekend project"
|
|||
msgid "Password successfully reset."
|
||||
msgstr "Wachtwoord is hersteld."
|
||||
|
||||
msgid "Project successfully uploaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Invalid JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully deleted"
|
||||
msgstr "Project is verwijderd"
|
||||
|
||||
|
@ -169,8 +196,8 @@ msgid "Your invitations have been sent"
|
|||
msgstr "Je uitnodigingen zijn verstuurd"
|
||||
|
||||
#, python-format
|
||||
msgid "%(member)s had been added"
|
||||
msgstr "%(member)s is toegevoegd"
|
||||
msgid "%(member)s has been added"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "%(name)s is part of this project again"
|
||||
|
@ -225,9 +252,6 @@ msgstr "?"
|
|||
msgid "Create a new project"
|
||||
msgstr "Nieuw project aanmaken"
|
||||
|
||||
msgid "Project"
|
||||
msgstr "Project"
|
||||
|
||||
msgid "Number of members"
|
||||
msgstr "Aantal deelnemers"
|
||||
|
||||
|
@ -249,6 +273,9 @@ msgstr "bewerken"
|
|||
msgid "delete"
|
||||
msgstr "verwijderen"
|
||||
|
||||
msgid "see"
|
||||
msgstr "bekijk"
|
||||
|
||||
msgid "The Dashboard is currently deactivated."
|
||||
msgstr "De overzichtspagina is momenteel uitgeschakeld."
|
||||
|
||||
|
@ -258,6 +285,12 @@ msgstr "weet je het zeker?"
|
|||
msgid "Edit project"
|
||||
msgstr "Project aanpassen"
|
||||
|
||||
msgid "Import JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Choose file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download project's data"
|
||||
msgstr "Projectgegevens downloaden"
|
||||
|
||||
|
@ -281,6 +314,9 @@ msgstr "Ben je je wachtwoord vergeten?"
|
|||
msgid "Cancel"
|
||||
msgstr "Annuleren"
|
||||
|
||||
msgid "Privacy Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit the project"
|
||||
msgstr "Project bewerken"
|
||||
|
||||
|
@ -311,6 +347,177 @@ msgstr "Uitnodigingen versturen"
|
|||
msgid "Download"
|
||||
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"
|
||||
msgstr "Beheer eenvoudig je <br />gedeelde uitgaven"
|
||||
|
||||
|
@ -360,6 +567,9 @@ msgstr "Schikken"
|
|||
msgid "Statistics"
|
||||
msgstr "Statistieken"
|
||||
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Instellingen"
|
||||
|
||||
|
@ -417,6 +627,12 @@ msgstr "Begin met het toevoegen van deelnemers"
|
|||
msgid "Add a new bill"
|
||||
msgstr "Nieuwe rekening toevoegen"
|
||||
|
||||
msgid "Newer bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "Older bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "When?"
|
||||
msgstr "Wanneer?"
|
||||
|
||||
|
@ -443,9 +659,6 @@ msgstr "Iedereen, behalve %(excluded)s"
|
|||
msgid "each"
|
||||
msgstr "per persoon"
|
||||
|
||||
msgid "see"
|
||||
msgstr "bekijk"
|
||||
|
||||
msgid "No bills"
|
||||
msgstr "Geen rekeningen"
|
||||
|
||||
|
@ -522,128 +735,14 @@ msgstr "Wie betaalt?"
|
|||
msgid "To whom?"
|
||||
msgstr "Aan wie?"
|
||||
|
||||
msgid "Who?"
|
||||
msgstr "Wie?"
|
||||
|
||||
msgid "Paid"
|
||||
msgstr "Betaald"
|
||||
|
||||
msgid "Spent"
|
||||
msgstr "Uitgegeven"
|
||||
|
||||
msgid "Balance"
|
||||
msgstr "Saldo"
|
||||
msgid "Expenses by Month"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The project identifier is used to "
|
||||
#~ "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."
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
|
|
Binary file not shown.
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: Mesut Akcan <makcan@gmail.com>\n"
|
||||
"Language: tr\n"
|
||||
|
@ -13,7 +13,7 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.7.0\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
msgid ""
|
||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||
|
@ -31,6 +31,18 @@ msgstr "Özel kod"
|
|||
msgid "Email"
|
||||
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"
|
||||
msgstr "Proje tanımlayıcısı"
|
||||
|
||||
|
@ -127,6 +139,15 @@ msgstr ""
|
|||
msgid "The email %(email)s is not valid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Participant"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bill"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Too many failed login attempts, please retry later."
|
||||
msgstr ""
|
||||
|
||||
|
@ -160,6 +181,12 @@ msgstr ""
|
|||
msgid "Password successfully reset."
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully uploaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Invalid JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully deleted"
|
||||
msgstr ""
|
||||
|
||||
|
@ -171,7 +198,7 @@ msgid "Your invitations have been sent"
|
|||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "%(member)s had been added"
|
||||
msgid "%(member)s has been added"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
|
@ -225,9 +252,6 @@ msgstr ""
|
|||
msgid "Create a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Number of members"
|
||||
msgstr ""
|
||||
|
||||
|
@ -249,6 +273,9 @@ msgstr ""
|
|||
msgid "delete"
|
||||
msgstr ""
|
||||
|
||||
msgid "see"
|
||||
msgstr ""
|
||||
|
||||
msgid "The Dashboard is currently deactivated."
|
||||
msgstr ""
|
||||
|
||||
|
@ -258,6 +285,12 @@ msgstr ""
|
|||
msgid "Edit project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Choose file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download project's data"
|
||||
msgstr ""
|
||||
|
||||
|
@ -279,6 +312,9 @@ msgstr ""
|
|||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
msgid "Privacy Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit the project"
|
||||
msgstr ""
|
||||
|
||||
|
@ -309,6 +345,177 @@ msgstr ""
|
|||
msgid "Download"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
|
@ -356,6 +563,9 @@ msgstr ""
|
|||
msgid "Statistics"
|
||||
msgstr ""
|
||||
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
|
@ -413,6 +623,12 @@ msgstr ""
|
|||
msgid "Add a new bill"
|
||||
msgstr ""
|
||||
|
||||
msgid "Newer bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "Older bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "When?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -439,9 +655,6 @@ msgstr ""
|
|||
msgid "each"
|
||||
msgstr ""
|
||||
|
||||
msgid "see"
|
||||
msgstr ""
|
||||
|
||||
msgid "No bills"
|
||||
msgstr ""
|
||||
|
||||
|
@ -510,91 +723,14 @@ msgstr ""
|
|||
msgid "To whom?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Who?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Paid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Balance"
|
||||
msgid "Expenses by Month"
|
||||
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 ""
|
||||
|
||||
msgid "Period"
|
||||
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 ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"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-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"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
|
||||
"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 3.10-dev\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
msgid ""
|
||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||
|
@ -29,6 +30,18 @@ msgstr "Приватний код"
|
|||
msgid "Email"
|
||||
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"
|
||||
msgstr "Ідентифікатор проєкту"
|
||||
|
||||
|
@ -123,6 +136,15 @@ msgstr ""
|
|||
msgid "The email %(email)s is not valid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Participant"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bill"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Too many failed login attempts, please retry later."
|
||||
msgstr ""
|
||||
|
||||
|
@ -156,6 +178,12 @@ msgstr ""
|
|||
msgid "Password successfully reset."
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully uploaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Invalid JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully deleted"
|
||||
msgstr ""
|
||||
|
||||
|
@ -167,7 +195,7 @@ msgid "Your invitations have been sent"
|
|||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "%(member)s had been added"
|
||||
msgid "%(member)s has been added"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
|
@ -221,9 +249,6 @@ msgstr ""
|
|||
msgid "Create a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Number of members"
|
||||
msgstr ""
|
||||
|
||||
|
@ -245,6 +270,9 @@ msgstr ""
|
|||
msgid "delete"
|
||||
msgstr ""
|
||||
|
||||
msgid "see"
|
||||
msgstr ""
|
||||
|
||||
msgid "The Dashboard is currently deactivated."
|
||||
msgstr ""
|
||||
|
||||
|
@ -254,6 +282,12 @@ msgstr ""
|
|||
msgid "Edit project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Choose file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download project's data"
|
||||
msgstr ""
|
||||
|
||||
|
@ -275,6 +309,9 @@ msgstr ""
|
|||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
msgid "Privacy Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit the project"
|
||||
msgstr ""
|
||||
|
||||
|
@ -305,6 +342,177 @@ msgstr ""
|
|||
msgid "Download"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
|
@ -352,6 +560,9 @@ msgstr ""
|
|||
msgid "Statistics"
|
||||
msgstr ""
|
||||
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
|
@ -409,6 +620,12 @@ msgstr ""
|
|||
msgid "Add a new bill"
|
||||
msgstr ""
|
||||
|
||||
msgid "Newer bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "Older bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "When?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -435,9 +652,6 @@ msgstr ""
|
|||
msgid "each"
|
||||
msgstr ""
|
||||
|
||||
msgid "see"
|
||||
msgstr ""
|
||||
|
||||
msgid "No bills"
|
||||
msgstr ""
|
||||
|
||||
|
@ -506,14 +720,14 @@ msgstr ""
|
|||
msgid "To whom?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Who?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Paid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Balance"
|
||||
msgid "Expenses by Month"
|
||||
msgstr ""
|
||||
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
|
|
Binary file not shown.
|
@ -1,19 +1,20 @@
|
|||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: Muge Niu <mugeniu12138@gmail.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
|
||||
"i-hate-money/i-hate-money/zh_Hans/>\n"
|
||||
"Language: zh_HANS-CN\n"
|
||||
"Language: zh_HANS_CN\n"
|
||||
"Language-Team: Chinese (Simplified) "
|
||||
"<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"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 3.11-dev\n"
|
||||
"Generated-By: Babel 2.7.0\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
msgid ""
|
||||
"Not a valid amount or expression. Only numbers and + - * / operators are "
|
||||
|
@ -29,6 +30,18 @@ msgstr "共享密钥"
|
|||
msgid "Email"
|
||||
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"
|
||||
msgstr "账目名称"
|
||||
|
||||
|
@ -123,6 +136,15 @@ msgstr ""
|
|||
msgid "The email %(email)s is not valid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Participant"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bill"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Too many failed login attempts, please retry later."
|
||||
msgstr ""
|
||||
|
||||
|
@ -156,6 +178,12 @@ msgstr ""
|
|||
msgid "Password successfully reset."
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully uploaded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Invalid JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project successfully deleted"
|
||||
msgstr ""
|
||||
|
||||
|
@ -167,7 +195,7 @@ msgid "Your invitations have been sent"
|
|||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "%(member)s had been added"
|
||||
msgid "%(member)s has been added"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
|
@ -221,9 +249,6 @@ msgstr "?"
|
|||
msgid "Create a new project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Number of members"
|
||||
msgstr ""
|
||||
|
||||
|
@ -245,6 +270,9 @@ msgstr ""
|
|||
msgid "delete"
|
||||
msgstr ""
|
||||
|
||||
msgid "see"
|
||||
msgstr ""
|
||||
|
||||
msgid "The Dashboard is currently deactivated."
|
||||
msgstr ""
|
||||
|
||||
|
@ -254,6 +282,12 @@ msgstr ""
|
|||
msgid "Edit project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import JSON"
|
||||
msgstr ""
|
||||
|
||||
msgid "Choose file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download project's data"
|
||||
msgstr ""
|
||||
|
||||
|
@ -275,6 +309,9 @@ msgstr ""
|
|||
msgid "Cancel"
|
||||
msgstr "取消"
|
||||
|
||||
msgid "Privacy Settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit the project"
|
||||
msgstr ""
|
||||
|
||||
|
@ -305,6 +342,177 @@ msgstr ""
|
|||
msgid "Download"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
|
@ -352,6 +560,9 @@ msgstr ""
|
|||
msgid "Statistics"
|
||||
msgstr ""
|
||||
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
|
@ -409,6 +620,12 @@ msgstr ""
|
|||
msgid "Add a new bill"
|
||||
msgstr ""
|
||||
|
||||
msgid "Newer bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "Older bills"
|
||||
msgstr ""
|
||||
|
||||
msgid "When?"
|
||||
msgstr "什么时候?"
|
||||
|
||||
|
@ -435,9 +652,6 @@ msgstr ""
|
|||
msgid "each"
|
||||
msgstr ""
|
||||
|
||||
msgid "see"
|
||||
msgstr ""
|
||||
|
||||
msgid "No bills"
|
||||
msgstr ""
|
||||
|
||||
|
@ -506,107 +720,14 @@ msgstr ""
|
|||
msgid "To whom?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Who?"
|
||||
msgstr "谁?"
|
||||
|
||||
msgid "Paid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Balance"
|
||||
msgid "Expenses by Month"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The project identifier is used to "
|
||||
#~ "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 ""
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
|
|
|
@ -1,19 +1,17 @@
|
|||
import re
|
||||
import os
|
||||
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
|
||||
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):
|
||||
|
@ -99,7 +97,7 @@ def static_include(filename):
|
|||
|
||||
|
||||
def locale_from_iso(iso_code):
|
||||
return Locale(iso_code)
|
||||
return Locale.parse(iso_code)
|
||||
|
||||
|
||||
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`
|
||||
and `add_project_id` for a quick overview)
|
||||
"""
|
||||
from datetime import datetime
|
||||
from functools import wraps
|
||||
import json
|
||||
import os
|
||||
from functools import wraps
|
||||
from smtplib import SMTPRecipientsRefused
|
||||
|
||||
from dateutil.parser import parse
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from flask import (
|
||||
abort,
|
||||
Blueprint,
|
||||
abort,
|
||||
current_app,
|
||||
flash,
|
||||
g,
|
||||
redirect,
|
||||
render_template,
|
||||
request,
|
||||
session,
|
||||
url_for,
|
||||
send_file,
|
||||
send_from_directory,
|
||||
session,
|
||||
url_for,
|
||||
)
|
||||
from flask_babel import get_locale, gettext as _
|
||||
from flask_mail import Message
|
||||
|
@ -42,23 +44,21 @@ from ihatemoney.forms import (
|
|||
InviteForm,
|
||||
MemberForm,
|
||||
PasswordReminder,
|
||||
ResetPasswordForm,
|
||||
ProjectForm,
|
||||
get_billform_for,
|
||||
ResetPasswordForm,
|
||||
UploadForm,
|
||||
get_billform_for,
|
||||
)
|
||||
from ihatemoney.history import get_history_queries, get_history
|
||||
from ihatemoney.models import db, Project, Person, Bill, LoggingMode
|
||||
from ihatemoney.history import get_history, get_history_queries
|
||||
from ihatemoney.models import Bill, LoggingMode, Person, Project, db
|
||||
from ihatemoney.utils import (
|
||||
Redirect303,
|
||||
list_of_dicts2json,
|
||||
list_of_dicts2csv,
|
||||
LoginThrottler,
|
||||
Redirect303,
|
||||
get_members,
|
||||
list_of_dicts2csv,
|
||||
list_of_dicts2json,
|
||||
same_bill,
|
||||
)
|
||||
from datetime import datetime
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
main = Blueprint("main", __name__)
|
||||
|
||||
|
@ -301,9 +301,7 @@ def create_project():
|
|||
project=g.project.name,
|
||||
)
|
||||
|
||||
message_body = render_template(
|
||||
"reminder_mail.%s.j2" % get_locale().language
|
||||
)
|
||||
message_body = render_template(f"reminder_mail.{get_locale().language}.j2")
|
||||
|
||||
msg = Message(
|
||||
message_title, body=message_body, recipients=[project.contact_email]
|
||||
|
@ -337,7 +335,7 @@ def remind_password():
|
|||
# get the project
|
||||
project = Project.query.get(form.id.data)
|
||||
# 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(
|
||||
Message(
|
||||
"password recovery",
|
||||
|
@ -521,7 +519,7 @@ def export_project(file, format):
|
|||
|
||||
return send_file(
|
||||
file2export,
|
||||
attachment_filename="%s-%s.%s" % (g.project.id, file, format),
|
||||
attachment_filename=f"{g.project.id}-{file}.{format}",
|
||||
as_attachment=True,
|
||||
)
|
||||
|
||||
|
@ -571,7 +569,7 @@ def invite():
|
|||
# send the email
|
||||
|
||||
message_body = render_template(
|
||||
"invitation_mail.%s.j2" % get_locale().language
|
||||
f"invitation_mail.{get_locale().language}.j2"
|
||||
)
|
||||
|
||||
message_title = _(
|
||||
|
@ -621,7 +619,7 @@ def add_member():
|
|||
if form.validate():
|
||||
member = form.save(g.project, Person())
|
||||
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 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 =
|
||||
Programming Language :: Python
|
||||
Programming Language :: Python :: 3
|
||||
Programming Language :: Python :: 3.5
|
||||
Programming Language :: Python :: 3.6
|
||||
Programming Language :: Python :: 3.7
|
||||
Programming Language :: Python :: 3.8
|
||||
Topic :: Internet :: WWW/HTTP
|
||||
Topic :: Internet :: WWW/HTTP :: WSGI :: Application
|
||||
|
||||
|
@ -22,29 +22,32 @@ packages = find:
|
|||
include_package_data = True
|
||||
zip_safe = False
|
||||
install_requires =
|
||||
flask
|
||||
flask-wtf
|
||||
flask-sqlalchemy<3.0
|
||||
SQLAlchemy-Continuum
|
||||
flask-mail
|
||||
Flask-Migrate
|
||||
Flask-script
|
||||
flask-babel
|
||||
flask-restful
|
||||
jinja2
|
||||
blinker
|
||||
flask-cors
|
||||
itsdangerous
|
||||
email_validator
|
||||
debts
|
||||
blinker==1.4
|
||||
debts==0.5
|
||||
email_validator==1.0.5
|
||||
Flask-Babel==1.0.0
|
||||
Flask-Cors==3.0.8
|
||||
Flask-Mail==0.9.1
|
||||
Flask-Migrate==2.5.3
|
||||
Flask-RESTful==0.3.8
|
||||
Flask-Script==2.0.6
|
||||
Flask-SQLAlchemy==2.4.1
|
||||
Flask-WTF==0.14.3
|
||||
WTForms==2.2.1
|
||||
Flask==1.1.2
|
||||
itsdangerous==1.1.0
|
||||
Jinja2==2.11.2
|
||||
SQLAlchemy-Continuum==1.3.9
|
||||
|
||||
[options.extras_require]
|
||||
dev =
|
||||
zest.releaser
|
||||
tox
|
||||
pytest
|
||||
flake8
|
||||
Flask-Testing
|
||||
black==19.10b0 ; python_version >= '3.6'
|
||||
flake8==3.7.9
|
||||
Flask-Testing==0.8.0
|
||||
isort==4.3.21
|
||||
pytest==5.4.1
|
||||
tox==3.14.6
|
||||
zest.releaser==6.20.1
|
||||
|
||||
[options.entry_points]
|
||||
console_scripts =
|
||||
|
|
17
tox.ini
17
tox.ini
|
@ -1,5 +1,5 @@
|
|||
[tox]
|
||||
envlist = py37,py36,py35,docs,flake8,black
|
||||
envlist = py38,py37,py36,docs,flake8,black
|
||||
skip_missing_interpreters = True
|
||||
|
||||
[testenv]
|
||||
|
@ -9,8 +9,7 @@ commands =
|
|||
py.test --pyargs ihatemoney.tests.tests
|
||||
|
||||
deps =
|
||||
-rdev-requirements.txt
|
||||
-rrequirements.txt
|
||||
-e.[dev]
|
||||
|
||||
# To be sure we are importing ihatemoney pkg from pip-installed version
|
||||
changedir = /tmp
|
||||
|
@ -22,15 +21,13 @@ deps =
|
|||
changedir = {toxinidir}
|
||||
|
||||
[testenv:black]
|
||||
commands = black --check --target-version=py34 .
|
||||
deps =
|
||||
-rdev-requirements.txt
|
||||
commands =
|
||||
black --check --target-version=py34 .
|
||||
isort -c -rc .
|
||||
changedir = {toxinidir}
|
||||
|
||||
[testenv:flake8]
|
||||
commands = flake8 ihatemoney
|
||||
deps =
|
||||
-rdev-requirements.txt
|
||||
changedir = {toxinidir}
|
||||
|
||||
[flake8]
|
||||
|
@ -42,6 +39,6 @@ extend-ignore =
|
|||
|
||||
[travis]
|
||||
python =
|
||||
3.5: py35
|
||||
3.6: py36, docs, black, flake8
|
||||
3.6: py36
|
||||
3.7: py37
|
||||
3.8: py38, docs, black, flake8
|
||||
|
|
Loading…
Reference in a new issue