Compare commits

..

38 Commits

Author SHA1 Message Date
Jonas Schäfer
2e224d96ce Remove XMPP URI QR code
At the same time, we can also drop the CSS used for that makeshift tab
box. I always felt a bit uneasy about it, a11y-wise, so it's good
riddance.

Fixes #99.
2022-06-07 22:31:40 +02:00
Weblate
b70cb57497 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Snikket/Web Portal
Translate-URL: http://i18n.sotecware.net/projects/snikket/web-portal/
2022-06-06 17:55:08 +00:00
Jonas Schäfer
124e0ce145 Merge pull request #137 from snikket-im/premerge
Merge a bunch of things together
2022-06-06 19:54:54 +02:00
Jonas Schäfer
f2c79044e0 Clean up post-merge lint
I am a *bit* sorry for this commit, because ideally this would've been
folded into 6d50b1c2c7 and whatever the
source of the other "conflict" was.

However, as the things have been merged in a batch, I can't do much more
than this.
2022-06-06 19:52:24 +02:00
Jonas Schäfer
13bc4bb227 Merge branch 'fix/babel-extraction' into premerge 2022-06-06 19:46:59 +02:00
Jonas Schäfer
f1351eb5cc Merge branch 'fix/use-english-default' into premerge 2022-06-06 19:46:49 +02:00
Jonas Schäfer
41573569af Merge branch 'feature/export-back-button' into premerge 2022-06-06 19:46:43 +02:00
Jonas Schäfer
b1f3026b8a Merge branch 'feature/wtforms-3' into premerge 2022-06-06 19:46:32 +02:00
Jonas Schäfer
6794314a59 Merge branch 'feature/vary-accept-language' into premerge 2022-06-06 19:46:25 +02:00
Jonas Schäfer
077e957a00 Merge branch 'feature/ci-extract-translations' into premerge 2022-06-06 19:46:19 +02:00
Jonas Schäfer
4902941145 Merge branch 'feature/strip-versions' into premerge 2022-06-06 19:46:09 +02:00
Jonas Schäfer
5222c8eafe Merge branch 'feature/hypercorn-stdout' into premerge 2022-06-06 19:44:39 +02:00
Jonas Schäfer
03ca7ac5bb Unbreak translation text extraction
It was broken because of the same jinja2 update (presumably) which
prompted 68f72743c5.
2022-05-30 20:51:37 +02:00
Matthew Wild
56cee8bab6 Merge pull request #135 from snikket-im/feature/update-dependencies
Update dependencies
2022-05-30 16:59:22 +01:00
Jonas Schäfer
b36fc0d5ac Bump hsluv to 5.x
Fixes #134.
2022-05-30 17:38:18 +02:00
Jonas Schäfer
68f72743c5 Bump quart to version 0.17
This is needed because jinja2 had an update which caused the portal to
not work at all:

```
ImportError: cannot import name 'escape' from 'jinja2'
```

Quart needed updating for that.

This update required a lot of typefixes. Apparently, the "canned"
responses (like redirect) are now plain werkzeug responses, while
quart.Response does not inherit from werkzeug.Response (otherwise, we
could've changed the type annotations to werkzeug.Response everywhere,
but that doesn't work because a quart.Response is not a
werkzeug.Response).

P.S.: This time, I *did* check that avatar uploads don't break (see
b007afc).
2022-05-30 17:37:54 +02:00
Daniel Holmgaard
8741efb2c4 Translated using Weblate (Danish)
Currently translated at 100.0% (321 of 321 strings)

Translation: Snikket/Web Portal
Translate-URL: http://i18n.sotecware.net/projects/snikket/web-portal/da/
2022-05-30 14:01:08 +00:00
Daniel Holmgaard
a0e8933b64 Translated using Weblate (Danish)
Currently translated at 95.6% (307 of 321 strings)

Translation: Snikket/Web Portal
Translate-URL: http://i18n.sotecware.net/projects/snikket/web-portal/da/
2022-05-26 23:01:53 +00:00
Zack Zhou
edb3154127 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (321 of 321 strings)

Translation: Snikket/Web Portal
Translate-URL: http://i18n.sotecware.net/projects/snikket/web-portal/zh_Hans/
2022-05-20 00:01:45 +00:00
Jonas Schäfer
eb22688302 Use english as default language instead of danish
It is more likely that a user for whose language no translation exists
can read english than danish.

The fallback to english was apparently introduced in c58ce845, though it
is possible that `best_match` did that internally before.

Fixes #131.
2022-05-15 14:12:51 +02:00
Jonas Schäfer
c278d4ace9 Merge pull request #132 from Raka-loah/master
Add Simplified Chinese support
2022-05-15 08:14:08 +02:00
Raka-loah
bbfe8624ef Add Simplified Chinese support 2022-05-14 17:53:40 +08:00
David Baraniak
8bcf619cef Translated using Weblate (French)
Currently translated at 100.0% (321 of 321 strings)

Translation: Snikket/Web Portal
Translate-URL: http://i18n.sotecware.net/projects/snikket/web-portal/fr/
2022-04-11 13:00:44 +00:00
Kim Alvefur
73fda3d623 Add a Back button from export panel for consistency
The other user related sections all have a Back button so it makes sense
that this one ought to have one as well.
2022-02-19 16:28:38 +01:00
Matthew Wild
846a5e49fd Merge pull request #122 from snikket-im/feature/autocomplete-hints
Add autocomplete hints to password forms
2022-02-07 11:43:20 +00:00
Matthew Wild
b3ff7f04b5 Merge pull request #127 from snikket-im/fix/unhealthy
Install netcat in final image instead of build image
2022-02-07 11:42:40 +00:00
Jonas Schäfer
0ac4ab8142 Install netcat in final image instead of build image
`nc` (from netcat) is required for the healthcheck. In
c1cf6ab1e5, the installation was
erroneously moved to the builder image, instead of the final image, so
it was missing since then from the actual application image, causing it
to always show as unhealthy.

Fixes #126.
2022-02-05 13:51:30 +01:00
Matthew Wild
d4a38f5049 Merge pull request #125 from snikket-im/fix/support-requirements-compilation
Dockerfile: Add dev headers required for building deps
2022-02-01 09:09:50 +00:00
Matthew Wild
344a4d3e93 Dockerfile: Add dev headers required for building deps 2022-02-01 09:04:25 +00:00
Matthew Wild
57f1047526 Merge pull request #124 from snikket-im/fix/support-requirements-compilation
Dockerfile: Ensure a compiler is available while pip-installing requirements
2022-02-01 08:16:33 +00:00
Matthew Wild
b036caa85e Dockerfile: Ensure a compiler is available while pip-installing requirements
Dependencies are not necessarily packaged for all architectures. In some cases
(such as aiohttp, and others, on ARM) pip will attempt to compile the
dependency from scratch. Since switching to multi-stage builds, we have been
installing these without a compiler present which caused the build to fail on
ARM architectures.

This commit temporarily installs build-essential packages while running pip,
then removes them again afterwards.
2022-01-31 21:45:39 +00:00
Matthew Wild
08845cb9f0 Merge pull request #123 from snikket-im/hotfix/error-handling
Fix error handling when building image
2022-01-31 18:11:58 +00:00
Jonas Schäfer
6aa6e12680 Fix error handling when building image
Apparently, we managed to publish an image without working aiohttp
because of this.

Partially a regression from 5d7183a.
2022-01-31 19:09:03 +01:00
Jonas Schäfer
a998348804 Make hypercorn log to stdout in Docker
This may help with debugging issues, because we now actually see
incoming requests also on the hypercorn layer.

Fixes #97.
2022-01-22 15:20:36 +01:00
Jonas Schäfer
20abe4b903 Add Vary: Accept-Language to all pages using that information
It was found during testing that some user agents cache aggressively
even between switches of the UI language. To properly indicate that the
pages actually depend on that information, we add the correct Vary
header.

Fixes #106.
2022-01-22 15:19:29 +01:00
Jonas Schäfer
a1ecb4ce80 Port to WTForms 3.x
Fixes #103.
2022-01-22 15:17:48 +01:00
Jonas Schäfer
b84b84b394 Add check for a missing make extract_translations
Forgetting to run that causes weblate (or other translation tools) to
show outdated strings and not import new strings, which is bad for the
collaboration.

Fixes #118.
2022-01-22 14:57:59 +01:00
Jonas Schäfer
6d50b1c2c7 Do not show dependency versions even to admins by default
Dependency versions are generally not useful, unless you are developing
or otherwise outside of a normal release situation: If you are on a
normal release, we can figure out the dep versions by looking at the
docker image.

To reduce the amount of information displayed and the amount of
information which needs to be conveyed in case of problems, we only show
the web portal and prosody versions to admins, unless debug mode is
enabled.

The behaviour that versions are only shown to logged in admins (unless
debug mode is enabled) remains unchanged.

Fixes #115.
2022-01-20 18:11:47 +01:00
34 changed files with 2721 additions and 1160 deletions

View File

@@ -50,6 +50,29 @@ jobs:
run: |
python -m flake8 snikket_web
translation-check:
runs-on: ubuntu-latest
name: 'lint: i18n'
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: '3.9'
- name: Install
run: |
set -euo pipefail
pip install flask-babel
- name: Linting
run: |
sed -ri '/^"POT-Creation-Date: /d' snikket_web/translations/messages.pot
git add snikket_web/translations/messages.pot
make extract_translations
sed -ri '/^"POT-Creation-Date: /d' snikket_web/translations/messages.pot
git diff --exit-code --color -- snikket_web/translations/messages.pot
build:
runs-on: ubuntu-latest

View File

@@ -6,8 +6,7 @@ RUN set -eu; \
apt-get install -y --no-install-recommends \
python3 python3-pip python3-setuptools python3-wheel \
libpython3-dev \
make build-essential \
netcat;
make build-essential;
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
COPY build-requirements.txt /opt/snikket-web-portal/build-requirements.txt
@@ -17,7 +16,8 @@ COPY babel.cfg /opt/snikket-web-portal/babel.cfg
WORKDIR /opt/snikket-web-portal
RUN pip3 install -r requirements.txt; \
RUN set -eu; \
pip3 install -r requirements.txt; \
pip3 install -r build-requirements.txt; \
make;
@@ -33,21 +33,22 @@ ENV SNIKKET_WEB_PYENV=/etc/snikket-web-portal/env.py
ENV SNIKKET_WEB_PROSODY_ENDPOINT=http://127.0.0.1:5280/
HEALTHCHECK CMD nc -zv ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE:-127.0.0.1} ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT:-5765}
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
WORKDIR /opt/snikket-web-portal
RUN set -eu; \
export DEBIAN_FRONTEND=noninteractive ; \
apt-get update ; \
apt-get install -y --no-install-recommends \
python3 python3-pip python3-setuptools python3-wheel; \
python3 python3-pip python3-setuptools python3-wheel build-essential libpython3-dev netcat; \
pip3 install -r requirements.txt; \
apt-get remove -y --autoremove build-essential libpython3-dev; \
apt-get clean ; rm -rf /var/lib/apt/lists; \
pip3 install hypercorn; \
rm -rf /root/.cache;
WORKDIR /opt/snikket-web-portal
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
RUN pip3 install -r requirements.txt; rm -rf /root/.cache;
HEALTHCHECK CMD nc -zv ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE:-127.0.0.1} ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT:-5765}
COPY --from=build /opt/snikket-web-portal/snikket_web/ /opt/snikket-web-portal/snikket_web
COPY babel.cfg /opt/snikket-web-portal/babel.cfg

View File

@@ -1,4 +1,3 @@
[python: snikket_web/**.py]
[jinja2: snikket_web/templates/**.html]
[jinja2: snikket_web/templates/**.j2]
extensions=jinja2.ext.autoescape,jinja2.ext.with_

View File

@@ -5,4 +5,4 @@ export SNIKKET_WEB_DOMAIN="$SNIKKET_DOMAIN"
export SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE="${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE-127.0.0.1}"
export SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT="${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT-5765}"
exec hypercorn -b "${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE}:${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT}" 'snikket_web:create_app()'
exec hypercorn -b "${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE}:${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT}" --access-logfile=- --log-file=- 'snikket_web:create_app()'

View File

@@ -1,9 +1,9 @@
aiohttp~=3.6
quart~=0.11,<0.15
quart~=0.17
flask-wtf~=0.14
hsluv~=0.0.2
hsluv~=5.0
flask-babel~=1.0
email-validator~=1.1
environ-config~=20.0
wtforms~=2.3
wtforms~=3.0
typing-extensions

View File

@@ -18,6 +18,8 @@ from quart import (
jsonify,
)
import werkzeug.exceptions
import environ
from . import colour, infra
@@ -40,7 +42,7 @@ async def proc() -> typing.Dict[str, typing.Any]:
try:
user_info = await infra.client.get_user_info()
except (aiohttp.ClientError, quart.exceptions.HTTPException):
except (aiohttp.ClientError, werkzeug.exceptions.HTTPException):
user_info = {}
return {
@@ -105,16 +107,16 @@ async def backend_error_handler(exc: Exception) -> quart.Response:
async def generic_http_error(
exc: quart.exceptions.HTTPException,
exc: werkzeug.exceptions.HTTPException,
) -> quart.Response:
return quart.Response(
await render_template(
"generic_http_error.html",
status=exc.status_code,
status=exc.code,
description=exc.description,
name=exc.name,
),
status=exc.status_code,
status=exc.code,
)
@@ -145,14 +147,19 @@ class AppConfig:
site_name = environ.var("")
avatar_cache_ttl = environ.var(1800, converter=int)
languages = environ.var([
# Keep `en` as the first language, because it is used as a fallback
# if the language negotiation cannot find another match. It is more
# likely that users are able to read english (or find a suitable
# online translator) than, for instance, danish.
"en",
"da",
"de",
"en",
"fr",
"id",
"it",
"pl",
"sv",
"zh_Hans_CN",
], converter=autosplit)
apple_store_url = environ.var(
"https://apps.apple.com/us/app/snikket/id1545164189",
@@ -199,19 +206,19 @@ def create_app() -> quart.Quart:
app.context_processor(proc)
app.register_error_handler(
aiohttp.ClientConnectorError,
backend_error_handler, # type:ignore
backend_error_handler,
)
app.register_error_handler(
quart.exceptions.HTTPException,
werkzeug.exceptions.HTTPException,
generic_http_error, # type:ignore
)
app.register_error_handler(
Exception,
generic_error_handler, # type:ignore
generic_error_handler,
)
@app.route("/")
async def index() -> quart.Response:
async def index() -> werkzeug.Response:
if infra.client.has_session:
return redirect(url_for('user.index'))

View File

@@ -7,10 +7,11 @@ from datetime import datetime
import aiohttp
import werkzeug.exceptions
import quart.flask_patch
import wtforms
import wtforms.fields.html5
from quart import (
Blueprint,
@@ -92,7 +93,7 @@ class EditUserForm(BaseForm):
@bp.route("/user/<localpart>/", methods=["GET", "POST"])
@client.require_admin_session()
async def edit_user(localpart: str) -> typing.Union[quart.Response, str]:
async def edit_user(localpart: str) -> typing.Union[werkzeug.Response, str]:
target_user_info = await client.get_user_by_localpart(localpart)
form = EditUserForm()
@@ -147,7 +148,7 @@ class DeleteUserForm(BaseForm):
@bp.route("/user/<localpart>/delete", methods=["GET", "POST"])
@client.require_admin_session()
async def delete_user(localpart: str) -> typing.Union[str, quart.Response]:
async def delete_user(localpart: str) -> typing.Union[str, werkzeug.Response]:
target_user_info = await client.get_user_by_localpart(localpart)
form = DeleteUserForm()
if form.validate_on_submit():
@@ -186,7 +187,7 @@ async def debug_user(localpart: str) -> typing.Union[str, quart.Response]:
@client.require_admin_session()
async def user_password_reset_link(
id_: str,
) -> typing.Union[str, quart.Response]:
) -> typing.Union[str, werkzeug.Response]:
invite_info = await client.get_invite_by_id(
id_,
)
@@ -278,7 +279,7 @@ class InvitePost(BaseForm):
@bp.route("/invitations", methods=["GET", "POST"])
@client.require_admin_session()
async def invitations() -> typing.Union[str, quart.Response]:
async def invitations() -> typing.Union[str, werkzeug.Response]:
invites = sorted(
(
invite
@@ -324,7 +325,7 @@ class InviteForm(BaseForm):
@bp.route("/invitation/-/new", methods=["POST"])
@client.require_admin_session()
async def create_invite() -> typing.Union[str, quart.Response]:
async def create_invite() -> typing.Union[str, werkzeug.Response]:
form = InvitePost()
circles = await client.list_groups()
form.circles.choices = [
@@ -352,7 +353,7 @@ async def create_invite() -> typing.Union[str, quart.Response]:
@bp.route("/invitation/<id_>", methods=["GET", "POST"])
@client.require_admin_session()
async def edit_invite(id_: str) -> typing.Union[str, quart.Response]:
async def edit_invite(id_: str) -> typing.Union[str, werkzeug.Response]:
try:
invite_info = await client.get_invite_by_id(id_)
except aiohttp.ClientResponseError as exc:
@@ -418,7 +419,7 @@ async def circles() -> str:
@bp.route("/circle/-/new", methods=["POST"])
@client.require_admin_session()
async def create_circle() -> typing.Union[str, quart.Response]:
async def create_circle() -> typing.Union[str, werkzeug.Response]:
create_form = CirclePost()
if create_form.validate_on_submit():
circle = await client.create_group(
@@ -464,7 +465,7 @@ class EditCircleForm(BaseForm):
@bp.route("/circle/<id_>", methods=["GET", "POST"])
@client.require_admin_session()
async def edit_circle(id_: str) -> typing.Union[str, quart.Response]:
async def edit_circle(id_: str) -> typing.Union[str, werkzeug.Response]:
async with client.authenticated_session() as session:
try:
circle = await client.get_group_by_id(
@@ -626,7 +627,7 @@ class AnnouncementForm(BaseForm):
@bp.route("/system/", methods=["GET", "POST"])
@client.require_admin_session()
async def system() -> typing.Union[str, quart.Response]:
async def system() -> typing.Union[str, werkzeug.Response]:
form = AnnouncementForm()
if form.validate_on_submit():
@@ -657,7 +658,7 @@ async def system() -> typing.Union[str, quart.Response]:
now = time.time()
try:
prosody_metrics = await client.get_system_metrics()
except quart.exceptions.NotFound:
except werkzeug.exceptions.NotFound:
# server does not offer the endpoint for whatever reason -- ignore
prosody_metrics = {}

View File

@@ -8,6 +8,7 @@ import quart.flask_patch # noqa:F401
from quart import (
current_app,
request,
g,
)
import flask_babel
@@ -34,6 +35,7 @@ BYTE_UNIT_SCALE_MAP = [
@babel.localeselector # type:ignore
def selected_locale() -> str:
g.language_header_accessed = True
selected = request.accept_languages.best_match(
current_app.config['LANGUAGES']
) or current_app.config['LANGUAGES'][0]
@@ -68,6 +70,12 @@ def format_bytes(n: float) -> str:
return "{}{}".format(n, unit)
def add_vary_language_header(resp: quart.Response) -> quart.Response:
if getattr(g, "language_header_accessed", False):
resp.vary.add("Accept-Language")
return resp
def init_templating(app: quart.Quart) -> None:
app.template_filter("repr")(repr)
app.template_filter("format_datetime")(flask_babel.format_datetime)
@@ -78,6 +86,7 @@ def init_templating(app: quart.Quart) -> None:
app.template_filter("format_bytes")(format_bytes)
app.template_filter("flatten")(flatten)
app.template_filter("circle_name")(circle_name)
app.after_request(add_vary_language_header)
def generate_error_id() -> str:

View File

@@ -15,6 +15,8 @@ from quart import (
session as http_session,
)
import werkzeug
import wtforms
from flask_babel import lazy_gettext as _l, gettext
@@ -46,14 +48,14 @@ def apple_store_badge() -> str:
@bp.context_processor
def context() -> typing.Mapping[str, typing.Any]:
def context() -> typing.Dict[str, typing.Any]:
return {
"apple_store_badge": apple_store_badge,
}
@bp.route("/<id_>")
async def view_old(id_: str) -> quart.Response:
async def view_old(id_: str) -> werkzeug.Response:
return redirect(url_for(".view", id_=id_))
@@ -131,7 +133,7 @@ class RegisterForm(BaseForm):
@bp.route("/<id_>/register", methods=["GET", "POST"])
async def register(id_: str) -> typing.Union[str, quart.Response]:
async def register(id_: str) -> typing.Union[str, werkzeug.Response]:
try:
invite = await client.get_public_invite_by_id(id_)
except aiohttp.ClientResponseError as exc:
@@ -199,7 +201,7 @@ class ResetForm(BaseForm):
@bp.route("/<id_>/reset", methods=["GET", "POST"])
async def reset(id_: str) -> typing.Union[str, quart.Response]:
async def reset(id_: str) -> typing.Union[str, werkzeug.Response]:
try:
invite = await client.get_public_invite_by_id(id_)
except aiohttp.ClientResponseError as exc:
@@ -300,5 +302,5 @@ async def reset_success() -> str:
@bp.route("/-")
async def index() -> quart.Response:
async def index() -> werkzeug.Response:
return redirect(url_for("index"))

View File

@@ -18,6 +18,8 @@ from quart import (
flash,
)
import werkzeug.exceptions
import babel
import wtforms
@@ -32,7 +34,7 @@ bp = quart.Blueprint("main", __name__)
class LoginForm(BaseForm):
address = wtforms.TextField(
address = wtforms.StringField(
_l("Address"),
validators=[wtforms.validators.InputRequired()],
)
@@ -48,7 +50,7 @@ class LoginForm(BaseForm):
@bp.route("/-")
async def index() -> quart.Response:
async def index() -> werkzeug.Response:
return redirect(url_for("index"))
@@ -56,7 +58,7 @@ ERR_CREDENTIALS_INVALID = _l("Invalid username or password.")
@bp.route("/login", methods=["GET", "POST"])
async def login() -> typing.Union[str, quart.Response]:
async def login() -> typing.Union[str, werkzeug.Response]:
if client.has_session and (await client.test_session()):
return redirect(url_for('user.index'))
@@ -76,7 +78,7 @@ async def login() -> typing.Union[str, quart.Response]:
password = form.password.data
try:
await client.login(jid, password)
except quart.exceptions.Unauthorized:
except werkzeug.exceptions.Unauthorized:
form.password.errors.append(ERR_CREDENTIALS_INVALID)
else:
await flash(
@@ -91,24 +93,30 @@ async def login() -> typing.Union[str, quart.Response]:
@bp.route("/meta/about.html")
async def about() -> str:
version = None
core_versions = {}
extra_versions = {}
if current_app.debug or client.is_admin_session:
version = _version.version
extra_versions["Quart"] = quart.__version__
try:
core_versions["Prosody"] = await client.get_server_version()
except werkzeug.exceptions.Unauthorized:
core_versions["Prosody"] = "unknown"
if current_app.debug:
extra_versions["aiohttp"] = aiohttp.__version__
extra_versions["babel"] = babel.__version__
extra_versions["wtforms"] = wtforms.__version__
extra_versions["flask-wtf"] = flask_wtf.__version__
try:
extra_versions["Prosody"] = await client.get_server_version()
except quart.exceptions.Unauthorized:
except werkzeug.exceptions.Unauthorized:
extra_versions["Prosody"] = "unknown"
return await render_template(
"about.html",
version=version,
extra_versions=extra_versions,
core_versions=core_versions,
)

View File

@@ -19,7 +19,9 @@ from quart import (
current_app, _app_ctx_stack, session as http_session, abort, redirect,
url_for,
)
import quart.exceptions
import quart
import werkzeug.exceptions
from . import xmpputil
from .xmpputil import split_jid
@@ -386,16 +388,16 @@ class ProsodyClient:
) -> typing.Callable[
[typing.Callable[..., typing.Awaitable[T]]],
typing.Callable[..., typing.Awaitable[
typing.Union[T, quart.Response]]]]:
typing.Union[T, quart.Response, werkzeug.Response]]]]:
def decorator(
f: typing.Callable[..., typing.Awaitable[T]],
) -> typing.Callable[..., typing.Awaitable[
typing.Union[T, quart.Response]]]:
typing.Union[T, quart.Response, werkzeug.Response]]]:
@functools.wraps(f)
async def wrapped(
*args: typing.Any,
**kwargs: typing.Any,
) -> typing.Union[T, quart.Response]:
) -> typing.Union[T, quart.Response, werkzeug.Response]:
if not self.has_session or not (await self.test_session()):
redirect_to_value = redirect_to
if redirect_to_value is not False:
@@ -415,17 +417,17 @@ class ProsodyClient:
) -> typing.Callable[
[typing.Callable[..., typing.Awaitable[T]]],
typing.Callable[..., typing.Awaitable[
typing.Union[T, quart.Response]]]]:
typing.Union[T, quart.Response, werkzeug.Response]]]]:
def decorator(
f: typing.Callable[..., typing.Awaitable[T]],
) -> typing.Callable[..., typing.Awaitable[
typing.Union[T, quart.Response]]]:
typing.Union[T, quart.Response, werkzeug.Response]]]:
@functools.wraps(f)
@self.require_session(redirect_to=redirect_to)
async def wrapped(
*args: typing.Any,
**kwargs: typing.Any,
) -> typing.Union[T, quart.Response]:
) -> typing.Union[T, quart.Response, werkzeug.Response]:
if not self.is_admin_session:
raise abort(403, "This is not for you.")
@@ -492,7 +494,7 @@ class ProsodyClient:
session=session,
)
avatar_hash = avatar_info["sha1"]
except quart.exceptions.HTTPException:
except werkzeug.exceptions.HTTPException:
avatar_hash = None
return {
@@ -644,7 +646,7 @@ class ProsodyClient:
new_access_model,
)
))
except quart.exceptions.NotFound:
except werkzeug.exceptions.NotFound:
if ignore_not_found:
return
raise
@@ -774,7 +776,7 @@ class ProsodyClient:
session: aiohttp.ClientSession,
) -> str:
access_models = filter(
lambda x: not isinstance(x, quart.exceptions.NotFound),
lambda x: not isinstance(x, werkzeug.exceptions.NotFound),
await asyncio.gather(
self.get_avatar_access_model(session=session),
self.get_nickname_access_model(session=session),

View File

@@ -80,60 +80,6 @@ img.fdroid {
height: $w-l3;
}
.tabbox {
display: flex;
flex-direction: column;
margin: $w-l1 0;
> nav.tabs {
display: flex;
flex-direction: row;
> a {
display: inline-block;
padding: $w-s2;
border-top-left-radius: $w-s4;
border-top-right-radius: $w-s4;
&, &:visited {
color: inherit;
text-decoration: underline;
text-decoration-color: $accent-500;
}
&:hover {
background: $accent-900;
border-color: $accent-800;
color: black;
}
&.active {
text-decoration: none;
background: linear-gradient(0deg, $accent-600, $accent-700);
color: $accent-200;
&:hover, &:focus {
background: linear-gradient(0deg, $accent-700, $accent-800);
}
&:active {
background: $accent-600;
}
}
}
}
> .tab-pane {
display: none;
padding: 0 $w-0;
background: $accent-900;
&.active {
display: block;
}
}
}
.qr {
margin: $w-l1 0;
display: flex;

View File

@@ -17,9 +17,12 @@
<h3>{% trans %}Trademarks{% endtrans %}</h3>
<p>{% trans trademarks_url="https://snikket.org/about/trademarks/" %}“Snikket” and the parrot logo are trademarks of Snikket Community Interest Company. For more information about the trademarks, visit the <a href="{{ trademarks_url }}">Snikket Trademarks information page</a>.{% endtrans %}
<h3>{% trans %}Software Versions{% endtrans %}</h3>
<pre>Snikket Server
Domain: {{ config["SNIKKET_DOMAIN"] }}
Snikket Web Portal{% if version %} ({{ version }}){% endif %}
<pre>Domain: {{ config["SNIKKET_DOMAIN"] }}
Web Portal{% if version %} ({{ version }}){% endif %}
{%- if core_versions -%}
{% for name, version in core_versions.items() %}
{{ name }} ({{ version }}){% endfor %}
{%- endif -%}
{%- if extra_versions -%}
{% for name, version in extra_versions.items() %}
{{ name }} ({{ version }}){% endfor %}

View File

@@ -56,29 +56,7 @@
{%- endcall -%}
</header>
<p>{% trans %}You can transfer this invite to your mobile device by scanning a code with your camera. You can use either a QR scanner app or the Snikket app itself.{% endtrans %}</p>
<div class="tabbox">
{#- -#}
<nav class="tabs" role="tablist">
{#- -#}
<a href="#qr-info-url" class="active" role="tab" aria-controls="qr-info-url" aria-selected="true" onclick="select_tab(this); return false;">{% trans %}Using a QR code scanner{% endtrans %}</a>
{#- -#}
<a href="#qr-info-uri" role="tab" aria-controls="qr-info-uri" aria-selected="false" onclick="select_tab(this); return false;">{% trans %}Using the Snikket app{% endtrans %}</a>
{#- -#}
</nav>
{#- -#}
<div id="qr-info-url" class="tab-pane active">
<p>{% trans %}Use a <em>QR code</em> scanner on your mobile device to scan the code below:{% endtrans %}</p>
<div id="qr-invite-page" data-qrdata="{{ url_for(".view", id_=invite_id, _external=True, _scheme="https") }}" class="qr"></div>
</div>
{#- -#}
<div id="qr-info-uri" class="tab-pane">
<img class="float-right" id="tutorial-scan" aria-hidden="true" alt="" src="{{ url_for("static", filename="img/tutorial-scan.png") }}">
<p>{% trans %}Install the Snikket app on your mobile device, open it, and tap the 'Scan' button at the top.{% endtrans %}</p>
<p>{% trans %}Your camera will turn on. Point it at the square code below until it is within the highlighted square on your screen, and wait until the app recognises it.{% endtrans %}</p>
<div id="qr-uri" data-qrdata="{{ invite.xmpp_uri }}" class="qr"></div>
</div>
{#- -#}
</div>
<div id="qr-invite-page" data-qrdata="{{ url_for(".view", id_=invite_id, _external=True, _scheme="https") }}" class="qr"></div>
{#- -#}
{%- call standard_button("close", "#", onclick="close_modal(this.parentNode.parentNode); return false;", class="primary") -%}
{% trans %}Close{% endtrans %}

View File

@@ -11,6 +11,8 @@
{% call render_errors(form) %}{% endcall %}
<div class="f-bbox">
{%- call standard_button("back", url_for('.index'), class="tertiary") %}{% trans %}Back{% endtrans %}{% endcall -%}
<form method="POST">
{{ form.csrf_token }}
{%- call form_button("download", form.action_export, class="primary") %}{% endcall -%}

View File

@@ -7,291 +7,295 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
"PO-Revision-Date: 2021-04-02 19:01+0000\n"
"Last-Translator: Daniel Holmgaard <annoncer@protonmail.com>\n"
"Language-Team: Danish <https://i18n.sotecware.net/projects/snikket/web-"
"portal/da/>\n"
"POT-Creation-Date: 2022-06-06 19:52+0200\n"
"PO-Revision-Date: 2022-05-30 14:01+0000\n"
"Last-Translator: Daniel Holmgaard <fovatis@tutanota.com>\n"
"Language-Team: Danish <http://i18n.sotecware.net/projects/snikket/web-portal/"
"da/>\n"
"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.5.1\n"
"X-Generator: Weblate 4.8.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/templates/admin_edit_circle.html:59
#: snikket_web/templates/admin_users.html:8
msgid "Login name"
msgstr "Login-navn"
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/templates/admin_edit_circle.html:60
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
msgid "Display name"
msgstr "Kaldenavn"
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
msgid "Access Level"
msgstr "Adgangsniveau"
#: snikket_web/admin.py:78
#: snikket_web/admin.py:79
msgid "Limited"
msgstr "Begrænset"
#: snikket_web/admin.py:79
#: snikket_web/admin.py:80
msgid "Normal user"
msgstr "Normal bruger"
#: snikket_web/admin.py:80
#: snikket_web/admin.py:81
msgid "Administrator"
msgstr "Administrator"
#: snikket_web/admin.py:85
#: snikket_web/admin.py:86
msgid "Update user"
msgstr "Opdater bruger"
#: snikket_web/admin.py:89
#: snikket_web/admin.py:90
msgid "Create password reset link"
msgstr "Opret link til nulstilling af adgangskode"
#: snikket_web/admin.py:107
#: snikket_web/admin.py:108
msgid "Password reset link created"
msgstr "Link til nulstilling af adgangskode oprettet"
#: snikket_web/admin.py:122
#: snikket_web/admin.py:123
msgid "User information updated."
msgstr "Brugerinformation opdateret."
#: snikket_web/admin.py:144
#: snikket_web/admin.py:145
msgid "Delete user permanently"
msgstr "Slet bruger permanent"
#: snikket_web/admin.py:157
#: snikket_web/admin.py:158
msgid "User deleted"
msgstr "Bruger slettet"
#: snikket_web/admin.py:195
#: snikket_web/admin.py:196
msgid "Password reset link not found"
msgstr "Link til nulstilling af adgangskode ikke fundet"
#: snikket_web/admin.py:207
#: snikket_web/admin.py:208
msgid "Password reset link deleted"
msgstr "Link til nulstilling af adgangskode slettet"
#: snikket_web/admin.py:227
#: snikket_web/admin.py:228
msgid "Invite to circle"
msgstr "Inviter til cirkel"
#: snikket_web/admin.py:233
#: snikket_web/admin.py:234
msgid "At least one circle must be selected"
msgstr "Mindst en cirkel skal vælges"
#: snikket_web/admin.py:238
#: snikket_web/admin.py:239
msgid "Valid for"
msgstr "Gyldig for"
#: snikket_web/admin.py:240
#: snikket_web/admin.py:241
msgid "One hour"
msgstr "En time"
#: snikket_web/admin.py:241
#: snikket_web/admin.py:242
msgid "Twelve hours"
msgstr "Tolv timer"
#: snikket_web/admin.py:242
#: snikket_web/admin.py:243
msgid "One day"
msgstr "En dag"
#: snikket_web/admin.py:243
#: snikket_web/admin.py:244
msgid "One week"
msgstr "En uge"
#: snikket_web/admin.py:244
#: snikket_web/admin.py:245
msgid "Four weeks"
msgstr "Fire uger"
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
msgid "Invitation type"
msgstr "Invitationstype"
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr "Individuel"
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
msgid "Group"
msgstr "Gruppe"
#: snikket_web/admin.py:259
#: snikket_web/admin.py:260
msgid "New invitation link"
msgstr "Ny invitationslink"
#: snikket_web/admin.py:321
#: snikket_web/admin.py:322
msgid "Revoke"
msgstr "Tilbagekald"
#: snikket_web/admin.py:345
#: snikket_web/admin.py:346
msgid "Invitation created"
msgstr "Invitation oprettet"
#: snikket_web/admin.py:361
#: snikket_web/admin.py:362
msgid "No such invitation exists"
msgstr "Denne invitation findes ikke"
#: snikket_web/admin.py:376
#: snikket_web/admin.py:377
msgid "Invitation revoked"
msgstr "Invitation tilbagekaldt"
#: snikket_web/admin.py:393 snikket_web/admin.py:441
#: snikket_web/admin.py:394 snikket_web/admin.py:442
msgid "Name"
msgstr "Navn"
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr "Opret cirkel"
#: snikket_web/admin.py:428
#: snikket_web/admin.py:429
msgid "Circle created"
msgstr "Cirkel oprettet"
#: snikket_web/admin.py:446
#: snikket_web/admin.py:447
msgid "Select user"
msgstr "Vælg bruger"
#: snikket_web/admin.py:451
#: snikket_web/admin.py:452
msgid "Update circle"
msgstr "Opdater cirkel"
#: snikket_web/admin.py:455
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Slet cirkel permanent"
#: snikket_web/admin.py:461
#: snikket_web/admin.py:462
msgid "Add user"
msgstr "Tilføj bruger"
#: snikket_web/admin.py:477
#: snikket_web/admin.py:478
msgid "No such circle exists"
msgstr "Denne cirkel findes ikke"
#: snikket_web/admin.py:514
#: snikket_web/admin.py:515
msgid "Circle data updated"
msgstr "Cirkel-data opdateret"
#: snikket_web/admin.py:520
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "Cirkel slettet"
#: snikket_web/admin.py:531
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Bruger tilføjet til cirkel"
#: snikket_web/admin.py:540
#: snikket_web/admin.py:541
msgid "User removed from circle"
msgstr "Bruger fjernet fra cirkel"
#: snikket_web/admin.py:609
#: snikket_web/admin.py:610
msgid "Message contents"
msgstr ""
msgstr "Meddelelsens indhold"
#: snikket_web/admin.py:615
#: snikket_web/admin.py:616
msgid "Only send to online users"
msgstr ""
msgstr "Send kun til online brugere"
#: snikket_web/admin.py:619
#: snikket_web/admin.py:620
msgid "Post to all users"
msgstr ""
msgstr "Send til alle brugere"
#: snikket_web/admin.py:623
#: snikket_web/admin.py:624
msgid "Send preview to yourself"
msgstr ""
msgstr "Send forhåndsvisning til dig selv"
#: snikket_web/admin.py:645
#: snikket_web/admin.py:646
msgid "Announcement sent!"
msgstr ""
msgstr "Bekendgørelse sendt!"
#: snikket_web/infra.py:51
#: snikket_web/infra.py:53
msgid "Main"
msgstr "Hoved"
#: snikket_web/invite.py:33
#: snikket_web/invite.py:35
msgid ""
"The account data you tried to import is too large to upload. Please contact "
"your Snikket operator."
msgstr ""
"De kontodata, du forsøgte at importere, er for store til at uploade. Kontakt "
"din Snikket-operatør."
#: snikket_web/invite.py:112
#: snikket_web/invite.py:114
msgid "Username"
msgstr "Brugernavn"
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
msgid "Password"
msgstr "Adgangskode"
#: snikket_web/invite.py:120 snikket_web/invite.py:188
#: snikket_web/invite.py:122 snikket_web/invite.py:190
msgid "Confirm password"
msgstr "Bekræft adgangskode"
#: snikket_web/invite.py:124 snikket_web/invite.py:192
#: snikket_web/invite.py:126 snikket_web/invite.py:194
msgid "The passwords must match."
msgstr "Adgangskoderne skal matche."
#: snikket_web/invite.py:129
#: snikket_web/invite.py:131
msgid "Create account"
msgstr "Opret konto"
#: snikket_web/invite.py:156
#: snikket_web/invite.py:158
msgid "That username is already taken."
msgstr "Det brugernavn er allerede taget."
#: snikket_web/invite.py:160 snikket_web/invite.py:225
#: snikket_web/invite.py:162 snikket_web/invite.py:227
msgid "Registration was declined for unknown reasons."
msgstr "Registrering blev afvist af ukendte årsager."
#: snikket_web/invite.py:164
#: snikket_web/invite.py:166
msgid "The username is not valid."
msgstr "Brugernavnet er ikke gyldigt."
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:29
msgid "Change password"
msgstr "Ændr adgangskode"
#: snikket_web/invite.py:244
#: snikket_web/invite.py:246
msgid "Account data file"
msgstr ""
msgstr "Kontodatafil"
#: snikket_web/invite.py:248
#: snikket_web/invite.py:250
msgid "Import data"
msgstr ""
msgstr "Importer data"
#: snikket_web/invite.py:269
#: snikket_web/invite.py:271
#, python-format
msgid ""
"The account data you tried to import is in an unknown format. Please upload "
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
msgstr ""
"De kontodata, du forsøgte at importere, er i et ukendt format. Upload en XML-"
"fil i XEP-0227-format (forudsat format: %(mimetype)s)."
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
#: snikket_web/user.py:178
msgid "Error"
msgstr "Fejl"
#: snikket_web/main.py:36
#: snikket_web/main.py:38
msgid "Address"
msgstr "Adresse"
#: snikket_web/main.py:46
#: snikket_web/main.py:48
msgid "Sign in"
msgstr "Log ind"
#: snikket_web/main.py:55
#: snikket_web/main.py:57
msgid "Invalid username or password."
msgstr "Ugyldigt brugernavn eller adgangskode."
#: snikket_web/main.py:83
#: snikket_web/main.py:85
msgid "Login successful!"
msgstr "Login lykkedes!"
@@ -341,11 +345,11 @@ msgstr "Opdater profil"
#: snikket_web/user.py:82
msgid "Account data"
msgstr ""
msgstr "Kontodata"
#: snikket_web/user.py:86
msgid "Upload"
msgstr ""
msgstr "Upload"
#: snikket_web/user.py:111
msgid "Incorrect password."
@@ -369,11 +373,11 @@ msgstr "Profil opdateret"
#: snikket_web/user.py:184
msgid "Export"
msgstr ""
msgstr "Exporter"
#: snikket_web/user.py:202
msgid "You currently have no account data to export."
msgstr ""
msgstr "Du har i øjeblikket ingen kontodata at eksportere."
#: snikket_web/templates/_footer.html:4
#, python-format
@@ -465,7 +469,7 @@ msgstr ""
msgid "Software Versions"
msgstr "Software versioner"
#: snikket_web/templates/about.html:29
#: snikket_web/templates/about.html:32
msgid "Back to the main page"
msgstr "Tilbage til hovedsiden"
@@ -611,6 +615,7 @@ msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
@@ -662,7 +667,7 @@ msgstr "Cirkel medlemmer"
#: snikket_web/templates/admin_edit_circle.html:71
msgid "The user has been deleted from the server."
msgstr ""
msgstr "Brugeren er blevet slettet fra serveren."
#: snikket_web/templates/admin_edit_circle.html:71
#: snikket_web/templates/library.j2:108
@@ -876,22 +881,21 @@ msgstr "Håndter invitationer"
#: snikket_web/templates/admin_home.html:35
msgid "System health"
msgstr ""
msgstr "Systemets sundhed"
#: snikket_web/templates/admin_home.html:38
msgid "View the server status or send a broadcast message to all users."
msgstr ""
"Vis serverstatus, eller send en udsendelsesmeddelelse til alle brugere."
#: snikket_web/templates/admin_home.html:40
msgid "Send a broadcast message to all users."
msgstr ""
msgstr "Send en udsendelsesmeddelelse til alle brugere."
#: snikket_web/templates/admin_home.html:43
#: snikket_web/templates/admin_system.html:4
#, fuzzy
#| msgid "Manage users"
msgid "Manage system"
msgstr "Håndter brugere"
msgstr "Håndter system"
#: snikket_web/templates/admin_home.html:48
msgid "Go back to your user's web portal page."
@@ -952,11 +956,11 @@ msgstr "Ødelæg link"
#: snikket_web/templates/admin_system.html:6
msgid "Overall system status"
msgstr ""
msgstr "Samlet systemstatus"
#: snikket_web/templates/admin_system.html:9
msgid "System load (5 minute average)"
msgstr ""
msgstr "Systembelastning (5 minutters gennemsnit)"
#: snikket_web/templates/admin_system.html:14
#: snikket_web/templates/admin_system.html:22
@@ -967,11 +971,11 @@ msgstr ""
#: snikket_web/templates/admin_system.html:76
#: snikket_web/templates/admin_system.html:84
msgid "unknown"
msgstr ""
msgstr "ukendt"
#: snikket_web/templates/admin_system.html:17
msgid "Memory use"
msgstr ""
msgstr "Forbrug af hukommelse"
#: snikket_web/templates/admin_system.html:20
#, python-format
@@ -979,54 +983,56 @@ msgid ""
"%(percentage_global)s of %(mem_available)s. Of that, Snikket uses "
"%(percentage_snikket)s."
msgstr ""
"%(percentage_global)s af %(mem_available)s. Der af bruger Snikket "
"%(percentage_snikket)s."
#: snikket_web/templates/admin_system.html:27
msgid "Web portal status"
msgstr ""
msgstr "Webportalens status"
#: snikket_web/templates/admin_system.html:30
#: snikket_web/templates/admin_system.html:53
msgid "Version"
msgstr ""
msgstr "Version"
#: snikket_web/templates/admin_system.html:31
#: snikket_web/templates/admin_system.html:54
msgid "View all versions"
msgstr ""
msgstr "Vis alle versioner"
#: snikket_web/templates/admin_system.html:32
#: snikket_web/templates/admin_system.html:55
msgid "Average CPU use"
msgstr ""
msgstr "Gennemsnitlig CPU-forbrug"
#: snikket_web/templates/admin_system.html:40
#: snikket_web/templates/admin_system.html:63
msgid "Current memory use"
msgstr ""
msgstr "Nuværende hukommelsesbrug"
#: snikket_web/templates/admin_system.html:50
#, fuzzy
#| msgid "Snikket Web Portal"
msgid "Snikket server status"
msgstr "Snikket Webportal"
msgstr "Snikket server status"
#: snikket_web/templates/admin_system.html:71
msgid "Storage used by shared files"
msgstr ""
msgstr "Lagerplads, der bruges af delte filer"
#: snikket_web/templates/admin_system.html:79
msgid "Connected devices"
msgstr ""
msgstr "Forbundet enheder"
#: snikket_web/templates/admin_system.html:90
msgid "Broadcast message"
msgstr ""
msgstr "Send besked"
#: snikket_web/templates/admin_system.html:92
msgid ""
"This form allows you to send a message to all users currently online on your "
"Snikket server. Use it wisely."
msgstr ""
"Denne formular giver dig mulighed for at sende en besked til alle brugere, "
"der i øjeblikket er online på din Snikket-server. Brug den med omtanke."
#: snikket_web/templates/admin_users.html:19
msgid "The user is an administrator."
@@ -1300,22 +1306,20 @@ msgid ""
"You can now safely close this page, or log in to the web portal to <a href="
"\"%(login_url)s\">manage your account</a>."
msgstr ""
"Du kan nu trygt lukke denne side eller logge ind på webportalen for at <a "
"href=\"%(login_url)s\">administrere din konto</a>."
#: snikket_web/templates/invite_success.html:21
#, fuzzy
#| msgid "Operation successful"
msgid "Import successful"
msgstr "Operation lykkes"
msgstr "Importering lykkes"
#: snikket_web/templates/invite_success.html:22
msgid "Congratulations! Your account data has been successfully imported."
msgstr ""
msgstr "Tillykke! Dine kontodata er blevet importeret."
#: snikket_web/templates/invite_success.html:26
#, fuzzy
#| msgid "Using the Snikket app"
msgid "Moving to Snikket?"
msgstr "Bruger Snikket appen"
msgstr "Flytte til Snikket?"
#: snikket_web/templates/invite_success.html:27
msgid ""
@@ -1324,10 +1328,14 @@ msgid ""
"information, etc.) from your previous account. When you have exported the "
"data from your previous account, upload it using the form below."
msgstr ""
"Hvis du flytter fra en anden Snikket-platform eller en anden XMPP-kompatibel "
"tjeneste, kan du eventuelt importere dataene (kontakter, profiloplysninger "
"osv.) fra din tidligere konto. Når du har eksporteret dataene fra din "
"tidligere konto, skal du uploade dem ved hjælp af nedenstående formular."
#: snikket_web/templates/invite_success.html:30
msgid "Upload account data"
msgstr ""
msgstr "Upload kontodata"
#: snikket_web/templates/invite_view.html:6
#, python-format
@@ -1558,10 +1566,8 @@ msgstr "Rediger profil"
#: snikket_web/templates/user_home.html:33
#: snikket_web/templates/user_manage_data.html:4
#, fuzzy
#| msgid "Manage users"
msgid "Manage your data"
msgstr "Håndter brugere"
msgstr "Håndter dine data"
#: snikket_web/templates/user_home.html:39
msgid "Your Snikket"
@@ -1588,16 +1594,16 @@ msgstr ""
"af de forbundne enheder."
#: snikket_web/templates/user_manage_data.html:8
#, fuzzy
#| msgid "Your account"
msgid "Export account"
msgstr "Din konto"
msgstr "Eksporter konto"
#: snikket_web/templates/user_manage_data.html:9
msgid ""
"Download your account data as a file for backup purposes or to move your "
"account to another service."
msgstr ""
"Download dine kontodata som en fil til sikkerhedskopieringsformål eller for "
"at flytte din konto til en anden tjeneste."
#: snikket_web/templates/user_passwd.html:5
msgid "Change your password"

View File

@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: SnikketWeb 0.1.0\n"
"Report-Msgid-Bugs-To: translations@snikket.org\n"
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-06 19:52+0200\n"
"PO-Revision-Date: 2022-01-18 14:59+0000\n"
"Last-Translator: Jonas Schäfer <jonas@zombofant.net>\n"
"Language-Team: German <http://i18n.sotecware.net/projects/snikket/web-portal/"
@@ -20,255 +20,255 @@ msgstr ""
"X-Generator: Weblate 4.8.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/templates/admin_edit_circle.html:59
#: snikket_web/templates/admin_users.html:8
msgid "Login name"
msgstr "Anmeldename"
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/templates/admin_edit_circle.html:60
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
msgid "Display name"
msgstr "Anzeigename"
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
msgid "Access Level"
msgstr "Berechtigungen"
#: snikket_web/admin.py:78
#: snikket_web/admin.py:79
msgid "Limited"
msgstr "Eingeschränkt"
#: snikket_web/admin.py:79
#: snikket_web/admin.py:80
msgid "Normal user"
msgstr "Normaler Benutzer"
#: snikket_web/admin.py:80
#: snikket_web/admin.py:81
msgid "Administrator"
msgstr "Administrator"
#: snikket_web/admin.py:85
#: snikket_web/admin.py:86
msgid "Update user"
msgstr "Benutzer ändern"
#: snikket_web/admin.py:89
#: snikket_web/admin.py:90
msgid "Create password reset link"
msgstr "Passwort-Link erzeugen"
#: snikket_web/admin.py:107
#: snikket_web/admin.py:108
msgid "Password reset link created"
msgstr "Link zum Zurücksetzen des Passwortes erzeugt"
#: snikket_web/admin.py:122
#: snikket_web/admin.py:123
msgid "User information updated."
msgstr "Benutzerinformationen gespeichert."
#: snikket_web/admin.py:144
#: snikket_web/admin.py:145
msgid "Delete user permanently"
msgstr "Benutzer endgültig löschen"
#: snikket_web/admin.py:157
#: snikket_web/admin.py:158
msgid "User deleted"
msgstr "Benutzer gelöscht"
#: snikket_web/admin.py:195
#: snikket_web/admin.py:196
msgid "Password reset link not found"
msgstr "Link zum Zurücksetzen des Passwortes nicht gefunden"
#: snikket_web/admin.py:207
#: snikket_web/admin.py:208
msgid "Password reset link deleted"
msgstr "Link gelöscht"
#: snikket_web/admin.py:227
#: snikket_web/admin.py:228
msgid "Invite to circle"
msgstr "In Gemeinschaft einladen"
#: snikket_web/admin.py:233
#: snikket_web/admin.py:234
msgid "At least one circle must be selected"
msgstr "Mindestens eine Gemeinschaft muss ausgewählt sein"
#: snikket_web/admin.py:238
#: snikket_web/admin.py:239
msgid "Valid for"
msgstr "Gültig für"
#: snikket_web/admin.py:240
#: snikket_web/admin.py:241
msgid "One hour"
msgstr "Eine Stunde"
#: snikket_web/admin.py:241
#: snikket_web/admin.py:242
msgid "Twelve hours"
msgstr "Zwölf Stunden"
#: snikket_web/admin.py:242
#: snikket_web/admin.py:243
msgid "One day"
msgstr "Ein Tag"
#: snikket_web/admin.py:243
#: snikket_web/admin.py:244
msgid "One week"
msgstr "Eine Woche"
#: snikket_web/admin.py:244
#: snikket_web/admin.py:245
msgid "Four weeks"
msgstr "Vier Wochen"
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
msgid "Invitation type"
msgstr "Art der Einladung"
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr "Einzelperson"
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
msgid "Group"
msgstr "Gruppe"
#: snikket_web/admin.py:259
#: snikket_web/admin.py:260
msgid "New invitation link"
msgstr "Neuer Einladungslink"
#: snikket_web/admin.py:321
#: snikket_web/admin.py:322
msgid "Revoke"
msgstr "Löschen"
#: snikket_web/admin.py:345
#: snikket_web/admin.py:346
msgid "Invitation created"
msgstr "Einladung angelegt"
#: snikket_web/admin.py:361
#: snikket_web/admin.py:362
msgid "No such invitation exists"
msgstr "Diese Einladung existiert nicht"
#: snikket_web/admin.py:376
#: snikket_web/admin.py:377
msgid "Invitation revoked"
msgstr "Einladung gelöscht"
#: snikket_web/admin.py:393 snikket_web/admin.py:441
#: snikket_web/admin.py:394 snikket_web/admin.py:442
msgid "Name"
msgstr "Name"
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr "Gemeinschaft gründen"
#: snikket_web/admin.py:428
#: snikket_web/admin.py:429
msgid "Circle created"
msgstr "Gemeinschaft gegründet"
#: snikket_web/admin.py:446
#: snikket_web/admin.py:447
msgid "Select user"
msgstr "Benutzer auswählen"
#: snikket_web/admin.py:451
#: snikket_web/admin.py:452
msgid "Update circle"
msgstr "Gemeinschaft ändern"
#: snikket_web/admin.py:455
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Gemeinschaft endgültig löschen"
#: snikket_web/admin.py:461
#: snikket_web/admin.py:462
msgid "Add user"
msgstr "Benutzer hinzufügen"
#: snikket_web/admin.py:477
#: snikket_web/admin.py:478
msgid "No such circle exists"
msgstr "Diese Gemeinschaft existiert nicht"
#: snikket_web/admin.py:514
#: snikket_web/admin.py:515
msgid "Circle data updated"
msgstr "Gemeinschaftsdaten aktualisiert"
#: snikket_web/admin.py:520
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "Gemeinschaft gelöscht"
#: snikket_web/admin.py:531
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Benutzer zur Gemeinschaft hinzugefügt"
#: snikket_web/admin.py:540
#: snikket_web/admin.py:541
msgid "User removed from circle"
msgstr "Benutzer aus der Gemeinschaft entfernt"
#: snikket_web/admin.py:609
#: snikket_web/admin.py:610
msgid "Message contents"
msgstr "Nachrichteninhalt"
#: snikket_web/admin.py:615
#: snikket_web/admin.py:616
msgid "Only send to online users"
msgstr "Nur an verbundene Benutzer senden"
#: snikket_web/admin.py:619
#: snikket_web/admin.py:620
msgid "Post to all users"
msgstr "An alle Benutzer senden"
#: snikket_web/admin.py:623
#: snikket_web/admin.py:624
msgid "Send preview to yourself"
msgstr "Vorschau an dich selbst senden"
#: snikket_web/admin.py:645
#: snikket_web/admin.py:646
msgid "Announcement sent!"
msgstr "Ankündigung verschickt!"
#: snikket_web/infra.py:51
#: snikket_web/infra.py:53
msgid "Main"
msgstr "Kern"
#: snikket_web/invite.py:33
#: snikket_web/invite.py:35
msgid ""
"The account data you tried to import is too large to upload. Please contact "
"your Snikket operator."
msgstr ""
"Der Kontoexport ist zu groß. Bitte kontaktiere deinen Snikket-Betreiber."
#: snikket_web/invite.py:112
#: snikket_web/invite.py:114
msgid "Username"
msgstr "Benutzername"
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
msgid "Password"
msgstr "Passwort"
#: snikket_web/invite.py:120 snikket_web/invite.py:188
#: snikket_web/invite.py:122 snikket_web/invite.py:190
msgid "Confirm password"
msgstr "Passwort (Bestätigung)"
#: snikket_web/invite.py:124 snikket_web/invite.py:192
#: snikket_web/invite.py:126 snikket_web/invite.py:194
msgid "The passwords must match."
msgstr "Die Passwörter müssen übereinstimmen."
#: snikket_web/invite.py:129
#: snikket_web/invite.py:131
msgid "Create account"
msgstr "Konto anlegen"
#: snikket_web/invite.py:156
#: snikket_web/invite.py:158
msgid "That username is already taken."
msgstr "Dieser Benutzername ist bereits belegt."
#: snikket_web/invite.py:160 snikket_web/invite.py:225
#: snikket_web/invite.py:162 snikket_web/invite.py:227
msgid "Registration was declined for unknown reasons."
msgstr "Die Registrierung wurde aus unbekannten Gründen abgelehnt."
#: snikket_web/invite.py:164
#: snikket_web/invite.py:166
msgid "The username is not valid."
msgstr "Der Benutzername ist ungültig."
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:29
msgid "Change password"
msgstr "Passwort ändern"
#: snikket_web/invite.py:244
#: snikket_web/invite.py:246
msgid "Account data file"
msgstr "Kontoexportdatei"
#: snikket_web/invite.py:248
#: snikket_web/invite.py:250
msgid "Import data"
msgstr "Daten importieren"
#: snikket_web/invite.py:269
#: snikket_web/invite.py:271
#, python-format
msgid ""
"The account data you tried to import is in an unknown format. Please upload "
@@ -277,24 +277,24 @@ msgstr ""
"Der Kontoexport ist in einem unbekannten Format. Es können nur XML-Dateien "
"im XEP-0227-Format verarbeitet werden (erhaltenes Format: %(mimetype)s)."
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
#: snikket_web/user.py:178
msgid "Error"
msgstr "Fehler"
#: snikket_web/main.py:36
#: snikket_web/main.py:38
msgid "Address"
msgstr "Adresse"
#: snikket_web/main.py:46
#: snikket_web/main.py:48
msgid "Sign in"
msgstr "Anmelden"
#: snikket_web/main.py:55
#: snikket_web/main.py:57
msgid "Invalid username or password."
msgstr "Benutzername oder Passwort falsch."
#: snikket_web/main.py:83
#: snikket_web/main.py:85
msgid "Login successful!"
msgstr "Anmeldung erfolgreich!"
@@ -469,7 +469,7 @@ msgstr ""
msgid "Software Versions"
msgstr "Softwareversionen"
#: snikket_web/templates/about.html:29
#: snikket_web/templates/about.html:32
msgid "Back to the main page"
msgstr "Zurück zur Hauptseite"
@@ -616,6 +616,7 @@ msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
@@ -1344,10 +1345,10 @@ msgid ""
"data from your previous account, upload it using the form below."
msgstr ""
"Wenn du dabei bist, dein Konto von einer anderen Snikket-Instanz oder XMPP-"
"kompatiblen Dienst umzuziehen, kannst du optional deine Kontodaten ("
"Kontakte, Profilinformationen etc.) von deinem vorherigen Konto importieren. "
"Wenn du die Daten von deinem alten Konto exportiert hast, lade sie mit dem "
"untenstehenden Formular hoch."
"kompatiblen Dienst umzuziehen, kannst du optional deine Kontodaten "
"(Kontakte, Profilinformationen etc.) von deinem vorherigen Konto "
"importieren. Wenn du die Daten von deinem alten Konto exportiert hast, lade "
"sie mit dem untenstehenden Formular hoch."
#: snikket_web/templates/invite_success.html:30
msgid "Upload account data"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
"POT-Creation-Date: 2022-06-06 19:52+0200\n"
"PO-Revision-Date: 2021-06-19 15:01+0000\n"
"Last-Translator: Jonas Schäfer <jonas@zombofant.net>\n"
"Language-Team: English <https://i18n.sotecware.net/projects/snikket/web-"
@@ -20,320 +20,320 @@ msgstr ""
"X-Generator: Weblate 4.5.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/templates/admin_edit_circle.html:59
#: snikket_web/templates/admin_users.html:8
msgid "Login name"
msgstr "Login name"
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/templates/admin_edit_circle.html:60
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
msgid "Display name"
msgstr "Display name"
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
msgid "Access Level"
msgstr ""
#: snikket_web/admin.py:78
#: snikket_web/admin.py:79
msgid "Limited"
msgstr ""
#: snikket_web/admin.py:79
#: snikket_web/admin.py:80
msgid "Normal user"
msgstr ""
#: snikket_web/admin.py:80
#: snikket_web/admin.py:81
#, fuzzy
#| msgid "Admin area"
msgid "Administrator"
msgstr "Admin area"
#: snikket_web/admin.py:85
#: snikket_web/admin.py:86
#, fuzzy
#| msgid "Update circle"
msgid "Update user"
msgstr "Update circle"
#: snikket_web/admin.py:89
#: snikket_web/admin.py:90
#, fuzzy
#| msgid "Create password reset links or delete users."
msgid "Create password reset link"
msgstr "Create password reset links or delete users."
#: snikket_web/admin.py:107
#: snikket_web/admin.py:108
#, fuzzy
#| msgid "Password reset link for %(user_name)s"
msgid "Password reset link created"
msgstr "Password reset link for %(user_name)s"
#: snikket_web/admin.py:122
#: snikket_web/admin.py:123
#, fuzzy
#| msgid "User information"
msgid "User information updated."
msgstr "User information"
#: snikket_web/admin.py:144
#: snikket_web/admin.py:145
msgid "Delete user permanently"
msgstr "Delete user permanently"
#: snikket_web/admin.py:157
#: snikket_web/admin.py:158
#, fuzzy
#| msgid "deleted"
msgid "User deleted"
msgstr "deleted"
#: snikket_web/admin.py:195
#: snikket_web/admin.py:196
#, fuzzy
#| msgid "Password reset link for %(user_name)s"
msgid "Password reset link not found"
msgstr "Password reset link for %(user_name)s"
#: snikket_web/admin.py:207
#: snikket_web/admin.py:208
#, fuzzy
#| msgid "Create password reset links or delete users."
msgid "Password reset link deleted"
msgstr "Create password reset links or delete users."
#: snikket_web/admin.py:227
#: snikket_web/admin.py:228
msgid "Invite to circle"
msgstr "Invite to circle"
#: snikket_web/admin.py:233
#: snikket_web/admin.py:234
msgid "At least one circle must be selected"
msgstr "At least one circle must be selected"
#: snikket_web/admin.py:238
#: snikket_web/admin.py:239
msgid "Valid for"
msgstr "Valid for"
#: snikket_web/admin.py:240
#: snikket_web/admin.py:241
msgid "One hour"
msgstr "One hour"
#: snikket_web/admin.py:241
#: snikket_web/admin.py:242
msgid "Twelve hours"
msgstr "Twelve hours"
#: snikket_web/admin.py:242
#: snikket_web/admin.py:243
msgid "One day"
msgstr "One day"
#: snikket_web/admin.py:243
#: snikket_web/admin.py:244
msgid "One week"
msgstr "One week"
#: snikket_web/admin.py:244
#: snikket_web/admin.py:245
msgid "Four weeks"
msgstr "Four weeks"
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
msgid "Invitation type"
msgstr "Invitation type"
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr "Individual"
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
msgid "Group"
msgstr "Group"
#: snikket_web/admin.py:259
#: snikket_web/admin.py:260
msgid "New invitation link"
msgstr "New invitation link"
#: snikket_web/admin.py:321
#: snikket_web/admin.py:322
msgid "Revoke"
msgstr "Revoke"
#: snikket_web/admin.py:345
#: snikket_web/admin.py:346
#, fuzzy
#| msgid "Invitation type"
msgid "Invitation created"
msgstr "Invitation type"
#: snikket_web/admin.py:361
#: snikket_web/admin.py:362
#, fuzzy
#| msgid "New invitation link"
msgid "No such invitation exists"
msgstr "New invitation link"
#: snikket_web/admin.py:376
#: snikket_web/admin.py:377
#, fuzzy
#| msgid "Invitation type"
msgid "Invitation revoked"
msgstr "Invitation type"
#: snikket_web/admin.py:393 snikket_web/admin.py:441
#: snikket_web/admin.py:394 snikket_web/admin.py:442
msgid "Name"
msgstr "Name"
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr "Create circle"
#: snikket_web/admin.py:428
#: snikket_web/admin.py:429
#, fuzzy
#| msgid "Circle name"
msgid "Circle created"
msgstr "Circle name"
#: snikket_web/admin.py:446
#: snikket_web/admin.py:447
msgid "Select user"
msgstr "Select user"
#: snikket_web/admin.py:451
#: snikket_web/admin.py:452
msgid "Update circle"
msgstr "Update circle"
#: snikket_web/admin.py:455
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Delete circle permanently"
#: snikket_web/admin.py:461
#: snikket_web/admin.py:462
msgid "Add user"
msgstr "Add user"
#: snikket_web/admin.py:477
#: snikket_web/admin.py:478
#, fuzzy
#| msgid "No circles"
msgid "No such circle exists"
msgstr "No circles"
#: snikket_web/admin.py:514
#: snikket_web/admin.py:515
#, fuzzy
#| msgid "Circle name"
msgid "Circle data updated"
msgstr "Circle name"
#: snikket_web/admin.py:520
#: snikket_web/admin.py:521
#, fuzzy
#| msgid "deleted"
msgid "Circle deleted"
msgstr "deleted"
#: snikket_web/admin.py:531
#: snikket_web/admin.py:532
#, fuzzy
#| msgid "Invite to circle"
msgid "User added to circle"
msgstr "Invite to circle"
#: snikket_web/admin.py:540
#: snikket_web/admin.py:541
#, fuzzy
#| msgid "Remove user %(username)s from circle"
msgid "User removed from circle"
msgstr "Remove user %(username)s from circle"
#: snikket_web/admin.py:609
#: snikket_web/admin.py:610
msgid "Message contents"
msgstr ""
#: snikket_web/admin.py:615
#: snikket_web/admin.py:616
msgid "Only send to online users"
msgstr ""
#: snikket_web/admin.py:619
#: snikket_web/admin.py:620
msgid "Post to all users"
msgstr ""
#: snikket_web/admin.py:623
#: snikket_web/admin.py:624
msgid "Send preview to yourself"
msgstr ""
#: snikket_web/admin.py:645
#: snikket_web/admin.py:646
msgid "Announcement sent!"
msgstr ""
#: snikket_web/infra.py:51
#: snikket_web/infra.py:53
msgid "Main"
msgstr "Main"
#: snikket_web/invite.py:33
#: snikket_web/invite.py:35
msgid ""
"The account data you tried to import is too large to upload. Please contact "
"your Snikket operator."
msgstr ""
#: snikket_web/invite.py:112
#: snikket_web/invite.py:114
msgid "Username"
msgstr "Username"
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
msgid "Password"
msgstr "Password"
#: snikket_web/invite.py:120 snikket_web/invite.py:188
#: snikket_web/invite.py:122 snikket_web/invite.py:190
msgid "Confirm password"
msgstr "Confirm password"
#: snikket_web/invite.py:124 snikket_web/invite.py:192
#: snikket_web/invite.py:126 snikket_web/invite.py:194
#, fuzzy
#| msgid "The passwords must match"
msgid "The passwords must match."
msgstr "The passwords must match"
#: snikket_web/invite.py:129
#: snikket_web/invite.py:131
msgid "Create account"
msgstr "Create account"
#: snikket_web/invite.py:156
#: snikket_web/invite.py:158
#, fuzzy
#| msgid "That username is already taken"
msgid "That username is already taken."
msgstr "That username is already taken"
#: snikket_web/invite.py:160 snikket_web/invite.py:225
#: snikket_web/invite.py:162 snikket_web/invite.py:227
#, fuzzy
#| msgid "Registration was declined for unknown reasons"
msgid "Registration was declined for unknown reasons."
msgstr "Registration was declined for unknown reasons"
#: snikket_web/invite.py:164
#: snikket_web/invite.py:166
#, fuzzy
#| msgid "The username is not valid"
msgid "The username is not valid."
msgstr "The username is not valid"
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:29
msgid "Change password"
msgstr "Change password"
#: snikket_web/invite.py:244
#: snikket_web/invite.py:246
msgid "Account data file"
msgstr ""
#: snikket_web/invite.py:248
#: snikket_web/invite.py:250
msgid "Import data"
msgstr ""
#: snikket_web/invite.py:269
#: snikket_web/invite.py:271
#, python-format
msgid ""
"The account data you tried to import is in an unknown format. Please upload "
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
msgstr ""
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
#: snikket_web/user.py:178
msgid "Error"
msgstr ""
#: snikket_web/main.py:36
#: snikket_web/main.py:38
msgid "Address"
msgstr "Address"
#: snikket_web/main.py:46
#: snikket_web/main.py:48
msgid "Sign in"
msgstr "Sign in"
#: snikket_web/main.py:55
#: snikket_web/main.py:57
msgid "Invalid username or password."
msgstr "Invalid username or password."
#: snikket_web/main.py:83
#: snikket_web/main.py:85
msgid "Login successful!"
msgstr ""
@@ -509,7 +509,7 @@ msgstr ""
msgid "Software Versions"
msgstr "Software Versions"
#: snikket_web/templates/about.html:29
#: snikket_web/templates/about.html:32
msgid "Back to the main page"
msgstr "Back to the main page"
@@ -656,6 +656,7 @@ msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
"POT-Creation-Date: 2022-06-06 19:52+0200\n"
"PO-Revision-Date: 2021-06-19 15:01+0000\n"
"Last-Translator: Jonas Schäfer <jonas@zombofant.net>\n"
"Language-Team: English (United Kingdom) <https://i18n.sotecware.net/projects/"
@@ -20,322 +20,322 @@ msgstr ""
"X-Generator: Weblate 4.5.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/templates/admin_edit_circle.html:59
#: snikket_web/templates/admin_users.html:8
msgid "Login name"
msgstr "Login name"
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/templates/admin_edit_circle.html:60
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
msgid "Display name"
msgstr "Display name"
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
msgid "Access Level"
msgstr ""
#: snikket_web/admin.py:78
#: snikket_web/admin.py:79
msgid "Limited"
msgstr ""
#: snikket_web/admin.py:79
#: snikket_web/admin.py:80
msgid "Normal user"
msgstr ""
#: snikket_web/admin.py:80
#: snikket_web/admin.py:81
#, fuzzy
#| msgid "Admin dashboard"
msgid "Administrator"
msgstr "Admin dashboard"
#: snikket_web/admin.py:85
#: snikket_web/admin.py:86
#, fuzzy
#| msgid "Create circle"
msgid "Update user"
msgstr "Create circle"
#: snikket_web/admin.py:89
#: snikket_web/admin.py:90
#, fuzzy
#| msgid "Create password reset links or delete users."
msgid "Create password reset link"
msgstr "Create password reset links or delete users."
#: snikket_web/admin.py:107
#: snikket_web/admin.py:108
#, fuzzy
#| msgid "Password reset link for %(user_name)s"
msgid "Password reset link created"
msgstr "Password reset link for %(user_name)s"
#: snikket_web/admin.py:122
#: snikket_web/admin.py:123
#, fuzzy
#| msgid "User information"
msgid "User information updated."
msgstr "User information"
#: snikket_web/admin.py:144
#: snikket_web/admin.py:145
msgid "Delete user permanently"
msgstr "Delete user permanently"
#: snikket_web/admin.py:157
#: snikket_web/admin.py:158
#, fuzzy
#| msgid "deleted"
msgid "User deleted"
msgstr "deleted"
#: snikket_web/admin.py:195
#: snikket_web/admin.py:196
#, fuzzy
#| msgid "Password reset link for %(user_name)s"
msgid "Password reset link not found"
msgstr "Password reset link for %(user_name)s"
#: snikket_web/admin.py:207
#: snikket_web/admin.py:208
#, fuzzy
#| msgid "Create password reset links or delete users."
msgid "Password reset link deleted"
msgstr "Create password reset links or delete users."
#: snikket_web/admin.py:227
#: snikket_web/admin.py:228
msgid "Invite to circle"
msgstr "Invite to circle"
#: snikket_web/admin.py:233
#: snikket_web/admin.py:234
msgid "At least one circle must be selected"
msgstr "At least one circle must be selected"
#: snikket_web/admin.py:238
#: snikket_web/admin.py:239
msgid "Valid for"
msgstr "Valid for"
#: snikket_web/admin.py:240
#: snikket_web/admin.py:241
msgid "One hour"
msgstr "One hour"
#: snikket_web/admin.py:241
#: snikket_web/admin.py:242
msgid "Twelve hours"
msgstr "Twelve hours"
#: snikket_web/admin.py:242
#: snikket_web/admin.py:243
msgid "One day"
msgstr "One day"
#: snikket_web/admin.py:243
#: snikket_web/admin.py:244
msgid "One week"
msgstr "One week"
#: snikket_web/admin.py:244
#: snikket_web/admin.py:245
msgid "Four weeks"
msgstr "Four weeks"
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
msgid "Invitation type"
msgstr "Invitation type"
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr ""
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
msgid "Group"
msgstr ""
#: snikket_web/admin.py:259
#: snikket_web/admin.py:260
msgid "New invitation link"
msgstr "New invitation link"
#: snikket_web/admin.py:321
#: snikket_web/admin.py:322
msgid "Revoke"
msgstr "Revoke"
#: snikket_web/admin.py:345
#: snikket_web/admin.py:346
#, fuzzy
#| msgid "Invitation type"
msgid "Invitation created"
msgstr "Invitation type"
#: snikket_web/admin.py:361
#: snikket_web/admin.py:362
#, fuzzy
#| msgid "New invitation link"
msgid "No such invitation exists"
msgstr "New invitation link"
#: snikket_web/admin.py:376
#: snikket_web/admin.py:377
#, fuzzy
#| msgid "Invitation type"
msgid "Invitation revoked"
msgstr "Invitation type"
#: snikket_web/admin.py:393 snikket_web/admin.py:441
#: snikket_web/admin.py:394 snikket_web/admin.py:442
msgid "Name"
msgstr "Name"
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr "Create circle"
#: snikket_web/admin.py:428
#: snikket_web/admin.py:429
#, fuzzy
#| msgid "Circle name"
msgid "Circle created"
msgstr "Circle name"
#: snikket_web/admin.py:446
#: snikket_web/admin.py:447
msgid "Select user"
msgstr "Select user"
#: snikket_web/admin.py:451
#: snikket_web/admin.py:452
#, fuzzy
#| msgid "Create circle"
msgid "Update circle"
msgstr "Create circle"
#: snikket_web/admin.py:455
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Delete circle permanently"
#: snikket_web/admin.py:461
#: snikket_web/admin.py:462
msgid "Add user"
msgstr "Add user"
#: snikket_web/admin.py:477
#: snikket_web/admin.py:478
#, fuzzy
#| msgid "No circles"
msgid "No such circle exists"
msgstr "No circles"
#: snikket_web/admin.py:514
#: snikket_web/admin.py:515
#, fuzzy
#| msgid "Circle name"
msgid "Circle data updated"
msgstr "Circle name"
#: snikket_web/admin.py:520
#: snikket_web/admin.py:521
#, fuzzy
#| msgid "deleted"
msgid "Circle deleted"
msgstr "deleted"
#: snikket_web/admin.py:531
#: snikket_web/admin.py:532
#, fuzzy
#| msgid "Invite to circle"
msgid "User added to circle"
msgstr "Invite to circle"
#: snikket_web/admin.py:540
#: snikket_web/admin.py:541
#, fuzzy
#| msgid "Remove user %(username)s from circle"
msgid "User removed from circle"
msgstr "Remove user %(username)s from circle"
#: snikket_web/admin.py:609
#: snikket_web/admin.py:610
msgid "Message contents"
msgstr ""
#: snikket_web/admin.py:615
#: snikket_web/admin.py:616
msgid "Only send to online users"
msgstr ""
#: snikket_web/admin.py:619
#: snikket_web/admin.py:620
msgid "Post to all users"
msgstr ""
#: snikket_web/admin.py:623
#: snikket_web/admin.py:624
msgid "Send preview to yourself"
msgstr ""
#: snikket_web/admin.py:645
#: snikket_web/admin.py:646
msgid "Announcement sent!"
msgstr ""
#: snikket_web/infra.py:51
#: snikket_web/infra.py:53
msgid "Main"
msgstr "Main"
#: snikket_web/invite.py:33
#: snikket_web/invite.py:35
msgid ""
"The account data you tried to import is too large to upload. Please contact "
"your Snikket operator."
msgstr ""
#: snikket_web/invite.py:112
#: snikket_web/invite.py:114
msgid "Username"
msgstr ""
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
msgid "Password"
msgstr "Password"
#: snikket_web/invite.py:120 snikket_web/invite.py:188
#: snikket_web/invite.py:122 snikket_web/invite.py:190
#, fuzzy
#| msgid "Confirm new password"
msgid "Confirm password"
msgstr "Confirm new password"
#: snikket_web/invite.py:124 snikket_web/invite.py:192
#: snikket_web/invite.py:126 snikket_web/invite.py:194
#, fuzzy
#| msgid "The passwords must match"
msgid "The passwords must match."
msgstr "The passwords must match"
#: snikket_web/invite.py:129
#: snikket_web/invite.py:131
#, fuzzy
#| msgid "Create circle"
msgid "Create account"
msgstr "Create circle"
#: snikket_web/invite.py:156
#: snikket_web/invite.py:158
msgid "That username is already taken."
msgstr ""
#: snikket_web/invite.py:160 snikket_web/invite.py:225
#: snikket_web/invite.py:162 snikket_web/invite.py:227
msgid "Registration was declined for unknown reasons."
msgstr ""
#: snikket_web/invite.py:164
#: snikket_web/invite.py:166
msgid "The username is not valid."
msgstr ""
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:29
msgid "Change password"
msgstr "Change password"
#: snikket_web/invite.py:244
#: snikket_web/invite.py:246
msgid "Account data file"
msgstr ""
#: snikket_web/invite.py:248
#: snikket_web/invite.py:250
msgid "Import data"
msgstr ""
#: snikket_web/invite.py:269
#: snikket_web/invite.py:271
#, python-format
msgid ""
"The account data you tried to import is in an unknown format. Please upload "
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
msgstr ""
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
#: snikket_web/user.py:178
msgid "Error"
msgstr ""
#: snikket_web/main.py:36
#: snikket_web/main.py:38
msgid "Address"
msgstr "Address"
#: snikket_web/main.py:46
#: snikket_web/main.py:48
msgid "Sign in"
msgstr "Sign in"
#: snikket_web/main.py:55
#: snikket_web/main.py:57
#, fuzzy
#| msgid "Invalid user name or password."
msgid "Invalid username or password."
msgstr "Invalid user name or password."
#: snikket_web/main.py:83
#: snikket_web/main.py:85
msgid "Login successful!"
msgstr ""
@@ -511,7 +511,7 @@ msgstr ""
msgid "Software Versions"
msgstr "Software Versions"
#: snikket_web/templates/about.html:29
#: snikket_web/templates/about.html:32
msgid "Back to the main page"
msgstr "Back to the main page"
@@ -653,6 +653,7 @@ msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
"POT-Creation-Date: 2022-06-06 19:52+0200\n"
"PO-Revision-Date: 2021-03-31 13:00+0000\n"
"Last-Translator: Tilman Jiménez <tilman.jimenez@tu-dortmund.de>\n"
"Language-Team: Spanish (Mexico) <https://i18n.sotecware.net/projects/snikket/"
@@ -20,308 +20,308 @@ msgstr ""
"X-Generator: Weblate 4.5.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/templates/admin_edit_circle.html:59
#: snikket_web/templates/admin_users.html:8
msgid "Login name"
msgstr "Nombre de ingreso del usuario"
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/templates/admin_edit_circle.html:60
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
msgid "Display name"
msgstr "Nombre mostrado"
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
msgid "Access Level"
msgstr "Nivel de acceso"
#: snikket_web/admin.py:78
#: snikket_web/admin.py:79
msgid "Limited"
msgstr "Limitado"
#: snikket_web/admin.py:79
#: snikket_web/admin.py:80
msgid "Normal user"
msgstr "Usuario normal"
#: snikket_web/admin.py:80
#: snikket_web/admin.py:81
#, fuzzy
#| msgid "Admin area"
msgid "Administrator"
msgstr "Administración"
#: snikket_web/admin.py:85
#: snikket_web/admin.py:86
msgid "Update user"
msgstr "Actualizar usuario"
#: snikket_web/admin.py:89
#: snikket_web/admin.py:90
#, fuzzy
#| msgid "Current password"
msgid "Create password reset link"
msgstr "Contraseña actual"
#: snikket_web/admin.py:107
#: snikket_web/admin.py:108
msgid "Password reset link created"
msgstr "Un enlace para restablecer la contraseña ha sido creado"
#: snikket_web/admin.py:122
#: snikket_web/admin.py:123
#, fuzzy
#| msgid "Circle information"
msgid "User information updated."
msgstr "Información del círculo"
#: snikket_web/admin.py:144
#: snikket_web/admin.py:145
msgid "Delete user permanently"
msgstr "Eliminar usuario permanentemente"
#: snikket_web/admin.py:157
#: snikket_web/admin.py:158
msgid "User deleted"
msgstr "Usuario eliminado"
#: snikket_web/admin.py:195
#: snikket_web/admin.py:196
msgid "Password reset link not found"
msgstr "No hemos encontrado un enlace para restablecer la contraseña"
#: snikket_web/admin.py:207
#: snikket_web/admin.py:208
msgid "Password reset link deleted"
msgstr "Enlace para restablecer la contraseña eliminado"
#: snikket_web/admin.py:227
#: snikket_web/admin.py:228
msgid "Invite to circle"
msgstr "Invitar al círculo"
#: snikket_web/admin.py:233
#: snikket_web/admin.py:234
msgid "At least one circle must be selected"
msgstr "Seleccione al menos un círculo"
#: snikket_web/admin.py:238
#: snikket_web/admin.py:239
msgid "Valid for"
msgstr "Válido por"
#: snikket_web/admin.py:240
#: snikket_web/admin.py:241
msgid "One hour"
msgstr "Una hora"
#: snikket_web/admin.py:241
#: snikket_web/admin.py:242
msgid "Twelve hours"
msgstr "Doce horas"
#: snikket_web/admin.py:242
#: snikket_web/admin.py:243
msgid "One day"
msgstr "Un día"
#: snikket_web/admin.py:243
#: snikket_web/admin.py:244
msgid "One week"
msgstr "Una semana"
#: snikket_web/admin.py:244
#: snikket_web/admin.py:245
msgid "Four weeks"
msgstr "Cuatro semanas"
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
msgid "Invitation type"
msgstr "Tipo de invitación"
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr "Individual"
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
msgid "Group"
msgstr "Grupo"
#: snikket_web/admin.py:259
#: snikket_web/admin.py:260
msgid "New invitation link"
msgstr "Nuevo enlace de invitación"
#: snikket_web/admin.py:321
#: snikket_web/admin.py:322
msgid "Revoke"
msgstr "Revocar/Eliminar"
#: snikket_web/admin.py:345
#: snikket_web/admin.py:346
#, fuzzy
#| msgid "Invitation type"
msgid "Invitation created"
msgstr "Tipo de invitación"
#: snikket_web/admin.py:361
#: snikket_web/admin.py:362
#, fuzzy
#| msgid "New invitation link"
msgid "No such invitation exists"
msgstr "Nuevo enlace de invitación"
#: snikket_web/admin.py:376
#: snikket_web/admin.py:377
#, fuzzy
#| msgid "Invitation type"
msgid "Invitation revoked"
msgstr "Tipo de invitación"
#: snikket_web/admin.py:393 snikket_web/admin.py:441
#: snikket_web/admin.py:394 snikket_web/admin.py:442
msgid "Name"
msgstr "Nombre"
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr "Crear círculo"
#: snikket_web/admin.py:428
#: snikket_web/admin.py:429
#, fuzzy
#| msgid "Circle name"
msgid "Circle created"
msgstr "Nombre del círculo"
#: snikket_web/admin.py:446
#: snikket_web/admin.py:447
msgid "Select user"
msgstr "Seleccionar usuario"
#: snikket_web/admin.py:451
#: snikket_web/admin.py:452
msgid "Update circle"
msgstr "Actualizar círculo"
#: snikket_web/admin.py:455
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Eliminar círculo permanentemente"
#: snikket_web/admin.py:461
#: snikket_web/admin.py:462
msgid "Add user"
msgstr "Añadir usuario"
#: snikket_web/admin.py:477
#: snikket_web/admin.py:478
#, fuzzy
#| msgid "No circles"
msgid "No such circle exists"
msgstr "No hay círculos"
#: snikket_web/admin.py:514
#: snikket_web/admin.py:515
#, fuzzy
#| msgid "Circle name"
msgid "Circle data updated"
msgstr "Nombre del círculo"
#: snikket_web/admin.py:520
#: snikket_web/admin.py:521
#, fuzzy
#| msgid "Circle members"
msgid "Circle deleted"
msgstr "Miembros del círculo"
#: snikket_web/admin.py:531
#: snikket_web/admin.py:532
#, fuzzy
#| msgid "Invite to circle"
msgid "User added to circle"
msgstr "Invitar al círculo"
#: snikket_web/admin.py:540
#: snikket_web/admin.py:541
msgid "User removed from circle"
msgstr ""
#: snikket_web/admin.py:609
#: snikket_web/admin.py:610
msgid "Message contents"
msgstr ""
#: snikket_web/admin.py:615
#: snikket_web/admin.py:616
msgid "Only send to online users"
msgstr ""
#: snikket_web/admin.py:619
#: snikket_web/admin.py:620
msgid "Post to all users"
msgstr ""
#: snikket_web/admin.py:623
#: snikket_web/admin.py:624
msgid "Send preview to yourself"
msgstr ""
#: snikket_web/admin.py:645
#: snikket_web/admin.py:646
msgid "Announcement sent!"
msgstr ""
#: snikket_web/infra.py:51
#: snikket_web/infra.py:53
msgid "Main"
msgstr "Principal"
#: snikket_web/invite.py:33
#: snikket_web/invite.py:35
msgid ""
"The account data you tried to import is too large to upload. Please contact "
"your Snikket operator."
msgstr ""
#: snikket_web/invite.py:112
#: snikket_web/invite.py:114
msgid "Username"
msgstr "Usuario"
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
msgid "Password"
msgstr "Contraseña"
#: snikket_web/invite.py:120 snikket_web/invite.py:188
#: snikket_web/invite.py:122 snikket_web/invite.py:190
msgid "Confirm password"
msgstr "Confirmar contraseña"
#: snikket_web/invite.py:124 snikket_web/invite.py:192
#: snikket_web/invite.py:126 snikket_web/invite.py:194
#, fuzzy
#| msgid "The passwords must match"
msgid "The passwords must match."
msgstr "Las contraseñas deben ser las mismas"
#: snikket_web/invite.py:129
#: snikket_web/invite.py:131
msgid "Create account"
msgstr "Crear cuenta"
#: snikket_web/invite.py:156
#: snikket_web/invite.py:158
#, fuzzy
#| msgid "That username is already taken"
msgid "That username is already taken."
msgstr "Ese nombre de usuario ya está siendo utilizado"
#: snikket_web/invite.py:160 snikket_web/invite.py:225
#: snikket_web/invite.py:162 snikket_web/invite.py:227
#, fuzzy
#| msgid "Registration was declined for unknown reasons"
msgid "Registration was declined for unknown reasons."
msgstr "El registro ha sido declinado por razones no identificadas"
#: snikket_web/invite.py:164
#: snikket_web/invite.py:166
#, fuzzy
#| msgid "The username is not valid"
msgid "The username is not valid."
msgstr "El nombre de usuario no es válido"
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:29
msgid "Change password"
msgstr "Cambiar contraseña"
#: snikket_web/invite.py:244
#: snikket_web/invite.py:246
msgid "Account data file"
msgstr ""
#: snikket_web/invite.py:248
#: snikket_web/invite.py:250
msgid "Import data"
msgstr ""
#: snikket_web/invite.py:269
#: snikket_web/invite.py:271
#, python-format
msgid ""
"The account data you tried to import is in an unknown format. Please upload "
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
msgstr ""
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
#: snikket_web/user.py:178
msgid "Error"
msgstr ""
#: snikket_web/main.py:36
#: snikket_web/main.py:38
msgid "Address"
msgstr "Dirección"
#: snikket_web/main.py:46
#: snikket_web/main.py:48
msgid "Sign in"
msgstr "Ingresar"
#: snikket_web/main.py:55
#: snikket_web/main.py:57
msgid "Invalid username or password."
msgstr "Nombre de usuario o contraseña no válidos."
#: snikket_web/main.py:83
#: snikket_web/main.py:85
msgid "Login successful!"
msgstr ""
@@ -488,7 +488,7 @@ msgstr ""
msgid "Software Versions"
msgstr ""
#: snikket_web/templates/about.html:29
#: snikket_web/templates/about.html:32
msgid "Back to the main page"
msgstr "Regresar a la página principal"
@@ -635,6 +635,7 @@ msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"

View File

@@ -7,291 +7,296 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
"PO-Revision-Date: 2021-06-19 15:01+0000\n"
"Last-Translator: Link Mauve <linkmauve@linkmauve.fr>\n"
"Language-Team: French <https://i18n.sotecware.net/projects/snikket/web-"
"portal/fr/>\n"
"POT-Creation-Date: 2022-06-06 19:52+0200\n"
"PO-Revision-Date: 2022-04-11 13:00+0000\n"
"Last-Translator: David Baraniak <admin@chipmnk.dev>\n"
"Language-Team: French <http://i18n.sotecware.net/projects/snikket/web-portal/"
"fr/>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.5.1\n"
"X-Generator: Weblate 4.8.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/templates/admin_edit_circle.html:59
#: snikket_web/templates/admin_users.html:8
msgid "Login name"
msgstr "Identifiant"
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/templates/admin_edit_circle.html:60
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
msgid "Display name"
msgstr "Nom à afficher"
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
msgid "Access Level"
msgstr "Niveau daccès"
#: snikket_web/admin.py:78
#: snikket_web/admin.py:79
msgid "Limited"
msgstr "Limité"
#: snikket_web/admin.py:79
#: snikket_web/admin.py:80
msgid "Normal user"
msgstr "Utilisateur normal"
#: snikket_web/admin.py:80
#: snikket_web/admin.py:81
msgid "Administrator"
msgstr "Administrateur"
#: snikket_web/admin.py:85
#: snikket_web/admin.py:86
msgid "Update user"
msgstr "Modifier lutilisateur"
#: snikket_web/admin.py:89
#: snikket_web/admin.py:90
msgid "Create password reset link"
msgstr "Créer le lien de réinitialisation de mot de passe"
#: snikket_web/admin.py:107
#: snikket_web/admin.py:108
msgid "Password reset link created"
msgstr "Lien de réinitialisation du mot de passe créé"
#: snikket_web/admin.py:122
#: snikket_web/admin.py:123
msgid "User information updated."
msgstr "Informations de lutilisateur mises à jour."
#: snikket_web/admin.py:144
#: snikket_web/admin.py:145
msgid "Delete user permanently"
msgstr "Désinscrire définitivement lutilisateur"
#: snikket_web/admin.py:157
#: snikket_web/admin.py:158
msgid "User deleted"
msgstr "Utilisateur supprimé"
#: snikket_web/admin.py:195
#: snikket_web/admin.py:196
msgid "Password reset link not found"
msgstr "Lien de réinitialisation du mot de passe introuvable"
#: snikket_web/admin.py:207
#: snikket_web/admin.py:208
msgid "Password reset link deleted"
msgstr "Liens de réinitialisation de mot de passe supprimé"
#: snikket_web/admin.py:227
#: snikket_web/admin.py:228
msgid "Invite to circle"
msgstr "Inviter dans le cercle"
#: snikket_web/admin.py:233
#: snikket_web/admin.py:234
msgid "At least one circle must be selected"
msgstr "Au moins un cercle doit être sélectionné"
#: snikket_web/admin.py:238
#: snikket_web/admin.py:239
msgid "Valid for"
msgstr "Valide pour"
#: snikket_web/admin.py:240
#: snikket_web/admin.py:241
msgid "One hour"
msgstr "Une heure"
#: snikket_web/admin.py:241
#: snikket_web/admin.py:242
msgid "Twelve hours"
msgstr "Douze heures"
#: snikket_web/admin.py:242
#: snikket_web/admin.py:243
msgid "One day"
msgstr "Une journée"
#: snikket_web/admin.py:243
#: snikket_web/admin.py:244
msgid "One week"
msgstr "Une semaine"
#: snikket_web/admin.py:244
#: snikket_web/admin.py:245
msgid "Four weeks"
msgstr "Quatre semaines"
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
msgid "Invitation type"
msgstr "Type dinvitation"
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr "Individuelle"
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
msgid "Group"
msgstr "Groupe"
#: snikket_web/admin.py:259
#: snikket_web/admin.py:260
msgid "New invitation link"
msgstr "Nouveau lien dinvitation"
#: snikket_web/admin.py:321
#: snikket_web/admin.py:322
msgid "Revoke"
msgstr "Révoquer"
#: snikket_web/admin.py:345
#: snikket_web/admin.py:346
msgid "Invitation created"
msgstr "Invitation créée"
#: snikket_web/admin.py:361
#: snikket_web/admin.py:362
msgid "No such invitation exists"
msgstr "Cette invitation nexiste pas"
#: snikket_web/admin.py:376
#: snikket_web/admin.py:377
msgid "Invitation revoked"
msgstr "Invitation révoquée"
#: snikket_web/admin.py:393 snikket_web/admin.py:441
#: snikket_web/admin.py:394 snikket_web/admin.py:442
msgid "Name"
msgstr "Nom"
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr "Créer un cercle"
#: snikket_web/admin.py:428
#: snikket_web/admin.py:429
msgid "Circle created"
msgstr "Cercle créé"
#: snikket_web/admin.py:446
#: snikket_web/admin.py:447
msgid "Select user"
msgstr "Sélectionner un utilisateur"
#: snikket_web/admin.py:451
#: snikket_web/admin.py:452
msgid "Update circle"
msgstr "Mettre à jour le cercle"
#: snikket_web/admin.py:455
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Supprimer le cercle définitivement"
#: snikket_web/admin.py:461
#: snikket_web/admin.py:462
msgid "Add user"
msgstr "Ajouter un utilisateur"
#: snikket_web/admin.py:477
#: snikket_web/admin.py:478
msgid "No such circle exists"
msgstr "Ce cercle nexiste pas"
#: snikket_web/admin.py:514
#: snikket_web/admin.py:515
msgid "Circle data updated"
msgstr "Données du cercle mises à jour"
#: snikket_web/admin.py:520
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "Cercle supprimé"
#: snikket_web/admin.py:531
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Utilisateur ajouté à ce cercle"
#: snikket_web/admin.py:540
#: snikket_web/admin.py:541
msgid "User removed from circle"
msgstr "Utilisateur retiré du cercle"
#: snikket_web/admin.py:609
#: snikket_web/admin.py:610
msgid "Message contents"
msgstr "Contenu du message"
#: snikket_web/admin.py:615
#: snikket_web/admin.py:616
msgid "Only send to online users"
msgstr "Envoyer uniquement aux utilisateurs connectés"
#: snikket_web/admin.py:619
#: snikket_web/admin.py:620
msgid "Post to all users"
msgstr "Envoyer aux utilisateurs"
#: snikket_web/admin.py:623
#: snikket_web/admin.py:624
msgid "Send preview to yourself"
msgstr "Envoyer une prévisualisation à vous-mêmes"
#: snikket_web/admin.py:645
#: snikket_web/admin.py:646
msgid "Announcement sent!"
msgstr "Annonce envoyée!"
#: snikket_web/infra.py:51
#: snikket_web/infra.py:53
msgid "Main"
msgstr "Principal"
#: snikket_web/invite.py:33
#: snikket_web/invite.py:35
msgid ""
"The account data you tried to import is too large to upload. Please contact "
"your Snikket operator."
msgstr ""
"Les données du compte que vous avez essayé d'importer sont trop volumineuses "
"pour être téléchargées. Veuillez contacter votre opérateur Snikket."
#: snikket_web/invite.py:112
#: snikket_web/invite.py:114
msgid "Username"
msgstr "Nom dutilisateur"
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
msgid "Password"
msgstr "Mot de passe"
#: snikket_web/invite.py:120 snikket_web/invite.py:188
#: snikket_web/invite.py:122 snikket_web/invite.py:190
msgid "Confirm password"
msgstr "Confirmer le mot de passe"
#: snikket_web/invite.py:124 snikket_web/invite.py:192
#: snikket_web/invite.py:126 snikket_web/invite.py:194
msgid "The passwords must match."
msgstr "Les mots de passe doivent être identiques."
#: snikket_web/invite.py:129
#: snikket_web/invite.py:131
msgid "Create account"
msgstr "Créer un compte"
#: snikket_web/invite.py:156
#: snikket_web/invite.py:158
msgid "That username is already taken."
msgstr "Ce nom dutilisateur est déjà utilisé."
#: snikket_web/invite.py:160 snikket_web/invite.py:225
#: snikket_web/invite.py:162 snikket_web/invite.py:227
msgid "Registration was declined for unknown reasons."
msgstr "Lenregistrement a été refusé pour des raisons inconnues."
#: snikket_web/invite.py:164
#: snikket_web/invite.py:166
msgid "The username is not valid."
msgstr "Le nom dutilisateur nest pas valide."
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:29
msgid "Change password"
msgstr "Changer de mot de passe"
#: snikket_web/invite.py:244
#: snikket_web/invite.py:246
msgid "Account data file"
msgstr ""
msgstr "Fichier de données du compte"
#: snikket_web/invite.py:248
#: snikket_web/invite.py:250
msgid "Import data"
msgstr ""
msgstr "Importer les données"
#: snikket_web/invite.py:269
#: snikket_web/invite.py:271
#, python-format
msgid ""
"The account data you tried to import is in an unknown format. Please upload "
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
msgstr ""
"Les données du compte que vous avez essayé d'importer sont dans un format "
"inconnu. Veuillez télécharger un fichier XML au format XEP-0227 (format "
"fourni : %(mimetype)s)."
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
#: snikket_web/user.py:178
msgid "Error"
msgstr "Erreur"
#: snikket_web/main.py:36
#: snikket_web/main.py:38
msgid "Address"
msgstr "Adresse"
#: snikket_web/main.py:46
#: snikket_web/main.py:48
msgid "Sign in"
msgstr "Sidentifier"
#: snikket_web/main.py:55
#: snikket_web/main.py:57
msgid "Invalid username or password."
msgstr "Nom dutilisateur ou mot de passe incorrect."
#: snikket_web/main.py:83
#: snikket_web/main.py:85
msgid "Login successful!"
msgstr "Connexion réussie!"
@@ -341,11 +346,11 @@ msgstr "Mettre à jour le profil"
#: snikket_web/user.py:82
msgid "Account data"
msgstr ""
msgstr "Données du compte"
#: snikket_web/user.py:86
msgid "Upload"
msgstr ""
msgstr "Télécharger"
#: snikket_web/user.py:111
msgid "Incorrect password."
@@ -369,11 +374,11 @@ msgstr "Profil mis à jour"
#: snikket_web/user.py:184
msgid "Export"
msgstr ""
msgstr "Exporter"
#: snikket_web/user.py:202
msgid "You currently have no account data to export."
msgstr ""
msgstr "Vous n'avez actuellement aucune donnée de compte à exporter."
#: snikket_web/templates/_footer.html:4
#, python-format
@@ -465,7 +470,7 @@ msgstr ""
msgid "Software Versions"
msgstr "Version des logiciels"
#: snikket_web/templates/about.html:29
#: snikket_web/templates/about.html:32
msgid "Back to the main page"
msgstr "Retour à la page principale"
@@ -612,6 +617,7 @@ msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
@@ -1014,7 +1020,7 @@ msgstr "Statut du serveur Snikket"
#: snikket_web/templates/admin_system.html:71
msgid "Storage used by shared files"
msgstr ""
msgstr "Stockage utilisé par les fichiers partagés"
#: snikket_web/templates/admin_system.html:79
msgid "Connected devices"
@@ -1314,22 +1320,22 @@ msgid ""
"You can now safely close this page, or log in to the web portal to <a href="
"\"%(login_url)s\">manage your account</a>."
msgstr ""
"Vous pouvez maintenant fermer cette page en toute sécurité, ou vous "
"connecter au portail web pour <a href=\"%(login_url)s\">gérer votre compte</"
"a>."
#: snikket_web/templates/invite_success.html:21
#, fuzzy
#| msgid "Operation successful"
msgid "Import successful"
msgstr "Opération réussie"
msgstr "Importation réussie"
#: snikket_web/templates/invite_success.html:22
msgid "Congratulations! Your account data has been successfully imported."
msgstr ""
"Félicitations ! Les données de votre compte ont été importées avec succès."
#: snikket_web/templates/invite_success.html:26
#, fuzzy
#| msgid "Using the Snikket app"
msgid "Moving to Snikket?"
msgstr "En utilisant lapplication Snikket"
msgstr "Nouveau utilisateur Snikket ?"
#: snikket_web/templates/invite_success.html:27
msgid ""
@@ -1338,10 +1344,15 @@ msgid ""
"information, etc.) from your previous account. When you have exported the "
"data from your previous account, upload it using the form below."
msgstr ""
"Si vous passez d'une autre instance de Snikket ou d'un autre service "
"compatible XMPP, vous pouvez éventuellement importer les données (contacts, "
"informations de profil, etc.) de votre ancien compte. Lorsque vous avez "
"exporté les données de votre ancien compte, téléchargez-les en utilisant le "
"formulaire ci-dessous."
#: snikket_web/templates/invite_success.html:30
msgid "Upload account data"
msgstr ""
msgstr "Télécharger les données du compte"
#: snikket_web/templates/invite_view.html:6
#, python-format
@@ -1396,10 +1407,9 @@ msgstr "Télécharger sur lApp Store"
#: snikket_web/templates/invite_view.html:32
msgid "Get it on F-Droid"
msgstr ""
msgstr "Obtenez-le sur F-Droid"
#: snikket_web/templates/invite_view.html:35
#, fuzzy
msgid "Send to mobile device"
msgstr "Envoyer vers l'appareil"
@@ -1478,10 +1488,14 @@ msgid ""
"After downloading Snikket from the App Store, you have to return to this "
"invite link and tap on \"Open the app\" to proceed."
msgstr ""
"Après avoir téléchargé Snikket depuis l'App Store, vous devez revenir à ce "
"lien d'invitation et cliquer sur \"Ouvrir l'application\" pour continuer."
#: snikket_web/templates/invite_view.html:101
msgid "First download Snikket from the App Store using the button below:"
msgstr ""
"Téléchargez d'abord Snikket depuis l'App Store en utilisant le bouton ci-"
"dessous :"
#: snikket_web/templates/invite_view.html:103
#: snikket_web/templates/invite_view.html:131
@@ -1489,6 +1503,9 @@ msgid ""
"After the installation is complete, you can return to this page and tap the "
"\"Open the app\" button to continue with the setup:"
msgstr ""
"Une fois l'installation terminée, vous pouvez revenir à cette page et "
"appuyer sur le bouton \"Ouvrir l'application\" pour poursuivre la "
"configuration :"
#: snikket_web/templates/invite_view.html:121
#: snikket_web/templates/invite_view.html:130
@@ -1500,10 +1517,13 @@ msgid ""
"After installing Snikket via F-Droid, you have to return to this invite link "
"and tap on \"Open the app\" to proceed."
msgstr ""
"Après avoir installé Snikket via F-Droid, vous devez revenir à ce lien "
"d'invitation et appuyer sur \"Ouvrir l'application\" pour continuer."
#: snikket_web/templates/invite_view.html:129
msgid "First install Snikket from F-Droid using the button below:"
msgstr ""
"Installez d'abord Snikket depuis F-Droid en utilisant le bouton ci-dessous :"
#: snikket_web/templates/library.j2:18
msgid "Copy link"
@@ -1570,10 +1590,8 @@ msgstr "Éditer votre profil"
#: snikket_web/templates/user_home.html:33
#: snikket_web/templates/user_manage_data.html:4
#, fuzzy
#| msgid "Manage users"
msgid "Manage your data"
msgstr "Gérer les utilisateurs"
msgstr "Gérer vos données"
#: snikket_web/templates/user_home.html:39
msgid "Your Snikket"
@@ -1601,16 +1619,16 @@ msgstr ""
"autres appareils connectés."
#: snikket_web/templates/user_manage_data.html:8
#, fuzzy
#| msgid "Your account"
msgid "Export account"
msgstr "Votre compte"
msgstr "Exportation du compte"
#: snikket_web/templates/user_manage_data.html:9
msgid ""
"Download your account data as a file for backup purposes or to move your "
"account to another service."
msgstr ""
"Téléchargez les données de votre compte sous forme d'un fichier à des fins "
"de sauvegarde ou pour transférer votre compte vers un autre service."
#: snikket_web/templates/user_passwd.html:5
msgid "Change your password"

View File

@@ -6,12 +6,12 @@
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: translations@snikket.org\n"
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-06 19:52+0200\n"
"PO-Revision-Date: 2022-01-18 14:59+0000\n"
"Last-Translator: uira <inboxriau@andriana.id>\n"
"Language-Team: Indonesian <http://i18n.sotecware.net/projects/snikket/"
"web-portal/id/>\n"
"Language-Team: Indonesian <http://i18n.sotecware.net/projects/snikket/web-"
"portal/id/>\n"
"Language: id\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -20,203 +20,203 @@ msgstr ""
"X-Generator: Weblate 4.8.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/templates/admin_edit_circle.html:59
#: snikket_web/templates/admin_users.html:8
msgid "Login name"
msgstr "Nama login"
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/templates/admin_edit_circle.html:60
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
msgid "Display name"
msgstr "Nama tampilan"
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
msgid "Access Level"
msgstr "Level akses"
#: snikket_web/admin.py:78
#: snikket_web/admin.py:79
msgid "Limited"
msgstr "Terbatas"
#: snikket_web/admin.py:79
#: snikket_web/admin.py:80
msgid "Normal user"
msgstr "Pengguna normal"
#: snikket_web/admin.py:80
#: snikket_web/admin.py:81
msgid "Administrator"
msgstr "Administrator"
#: snikket_web/admin.py:85
#: snikket_web/admin.py:86
msgid "Update user"
msgstr "Memperbarui pengguna"
#: snikket_web/admin.py:89
#: snikket_web/admin.py:90
msgid "Create password reset link"
msgstr "Buat tautan setel ulang kata sandi"
#: snikket_web/admin.py:107
#: snikket_web/admin.py:108
msgid "Password reset link created"
msgstr "Tautan setel ulang kata sandi dibuat"
#: snikket_web/admin.py:122
#: snikket_web/admin.py:123
msgid "User information updated."
msgstr "Informasi pengguna diperbarui."
#: snikket_web/admin.py:144
#: snikket_web/admin.py:145
msgid "Delete user permanently"
msgstr "Hapus permanen pengguna"
#: snikket_web/admin.py:157
#: snikket_web/admin.py:158
msgid "User deleted"
msgstr "Pengguna dihapus"
#: snikket_web/admin.py:195
#: snikket_web/admin.py:196
msgid "Password reset link not found"
msgstr "Tautan setel ulang kata sandi tidak ditemukan"
#: snikket_web/admin.py:207
#: snikket_web/admin.py:208
msgid "Password reset link deleted"
msgstr "Tautan setel ulang kata sandi dihapus"
#: snikket_web/admin.py:227
#: snikket_web/admin.py:228
msgid "Invite to circle"
msgstr "Undang masuk kelompok"
#: snikket_web/admin.py:233
#: snikket_web/admin.py:234
msgid "At least one circle must be selected"
msgstr "Minimal satu kelompok harus dipilih"
#: snikket_web/admin.py:238
#: snikket_web/admin.py:239
msgid "Valid for"
msgstr "Valid selama"
#: snikket_web/admin.py:240
#: snikket_web/admin.py:241
msgid "One hour"
msgstr "Satu jam"
#: snikket_web/admin.py:241
#: snikket_web/admin.py:242
msgid "Twelve hours"
msgstr "Dua belas jam"
#: snikket_web/admin.py:242
#: snikket_web/admin.py:243
msgid "One day"
msgstr "Satu hari"
#: snikket_web/admin.py:243
#: snikket_web/admin.py:244
msgid "One week"
msgstr "Satu minggu"
#: snikket_web/admin.py:244
#: snikket_web/admin.py:245
msgid "Four weeks"
msgstr "Empat minggu"
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
msgid "Invitation type"
msgstr "Jenis undangan"
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr "Individu"
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
msgid "Group"
msgstr "Grup"
#: snikket_web/admin.py:259
#: snikket_web/admin.py:260
msgid "New invitation link"
msgstr "Tautan undangan baru"
#: snikket_web/admin.py:321
#: snikket_web/admin.py:322
msgid "Revoke"
msgstr "Batalkan"
#: snikket_web/admin.py:345
#: snikket_web/admin.py:346
msgid "Invitation created"
msgstr "Undangan dibuat"
#: snikket_web/admin.py:361
#: snikket_web/admin.py:362
msgid "No such invitation exists"
msgstr "Undangan tidak tersedia"
#: snikket_web/admin.py:376
#: snikket_web/admin.py:377
msgid "Invitation revoked"
msgstr "Undangan dibatalkan"
#: snikket_web/admin.py:393 snikket_web/admin.py:441
#: snikket_web/admin.py:394 snikket_web/admin.py:442
msgid "Name"
msgstr "Nama"
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr "Buat kelompok"
#: snikket_web/admin.py:428
#: snikket_web/admin.py:429
msgid "Circle created"
msgstr "Kelompok dibuat"
#: snikket_web/admin.py:446
#: snikket_web/admin.py:447
msgid "Select user"
msgstr "Pilih pengguna"
#: snikket_web/admin.py:451
#: snikket_web/admin.py:452
msgid "Update circle"
msgstr "Memperbarui kelompok"
#: snikket_web/admin.py:455
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Hapus kelompok secara permanen"
#: snikket_web/admin.py:461
#: snikket_web/admin.py:462
msgid "Add user"
msgstr "Tambah pengguna"
#: snikket_web/admin.py:477
#: snikket_web/admin.py:478
msgid "No such circle exists"
msgstr "Kelompok tersebut tidak ada"
#: snikket_web/admin.py:514
#: snikket_web/admin.py:515
msgid "Circle data updated"
msgstr "Data kelompok diperbarui"
#: snikket_web/admin.py:520
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "Kelompok dihapus"
#: snikket_web/admin.py:531
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Pengguna ditambahkan ke kelompok"
#: snikket_web/admin.py:540
#: snikket_web/admin.py:541
msgid "User removed from circle"
msgstr "Pengguna dihapus dari kelompok"
#: snikket_web/admin.py:609
#: snikket_web/admin.py:610
msgid "Message contents"
msgstr "Isi pesan"
#: snikket_web/admin.py:615
#: snikket_web/admin.py:616
msgid "Only send to online users"
msgstr "Hanya kirim ke pengguna online"
#: snikket_web/admin.py:619
#: snikket_web/admin.py:620
msgid "Post to all users"
msgstr "Kirim ke semua pengguna"
#: snikket_web/admin.py:623
#: snikket_web/admin.py:624
msgid "Send preview to yourself"
msgstr "Kirim pratinjau ke diri sendiri"
#: snikket_web/admin.py:645
#: snikket_web/admin.py:646
msgid "Announcement sent!"
msgstr "Pengumuman terkirim!"
#: snikket_web/infra.py:51
#: snikket_web/infra.py:53
msgid "Main"
msgstr "Utama"
#: snikket_web/invite.py:33
#: snikket_web/invite.py:35
msgid ""
"The account data you tried to import is too large to upload. Please contact "
"your Snikket operator."
@@ -224,52 +224,52 @@ msgstr ""
"Data akun yang coba diimpor terlalu besar untuk diunggah. Silakan hubungi "
"operator Snikket Anda."
#: snikket_web/invite.py:112
#: snikket_web/invite.py:114
msgid "Username"
msgstr "Nama pengguna"
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
msgid "Password"
msgstr "Kata sandi"
#: snikket_web/invite.py:120 snikket_web/invite.py:188
#: snikket_web/invite.py:122 snikket_web/invite.py:190
msgid "Confirm password"
msgstr "Konfirmasi kata sandi"
#: snikket_web/invite.py:124 snikket_web/invite.py:192
#: snikket_web/invite.py:126 snikket_web/invite.py:194
msgid "The passwords must match."
msgstr "Kata sandi harus cocok."
#: snikket_web/invite.py:129
#: snikket_web/invite.py:131
msgid "Create account"
msgstr "Buat akun"
#: snikket_web/invite.py:156
#: snikket_web/invite.py:158
msgid "That username is already taken."
msgstr "Nama pengguna itu sudah dipakai."
#: snikket_web/invite.py:160 snikket_web/invite.py:225
#: snikket_web/invite.py:162 snikket_web/invite.py:227
msgid "Registration was declined for unknown reasons."
msgstr "Pendaftaran ditolak karena alasan yang tidak diketahui."
#: snikket_web/invite.py:164
#: snikket_web/invite.py:166
msgid "The username is not valid."
msgstr "Nama pengguna tidak valid."
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:29
msgid "Change password"
msgstr "Ganti kata sandi"
#: snikket_web/invite.py:244
#: snikket_web/invite.py:246
msgid "Account data file"
msgstr "File data akun"
#: snikket_web/invite.py:248
#: snikket_web/invite.py:250
msgid "Import data"
msgstr "Impor data"
#: snikket_web/invite.py:269
#: snikket_web/invite.py:271
#, python-format
msgid ""
"The account data you tried to import is in an unknown format. Please upload "
@@ -278,24 +278,24 @@ msgstr ""
"Data akun yang coba diimpor dalam format yang tidak dikenal. Harap unggah "
"file XML dalam format XEP-0227 (format yang disediakan: %(mimetype)s)."
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
#: snikket_web/user.py:178
msgid "Error"
msgstr "Kesalahan"
#: snikket_web/main.py:36
#: snikket_web/main.py:38
msgid "Address"
msgstr "Alamat"
#: snikket_web/main.py:46
#: snikket_web/main.py:48
msgid "Sign in"
msgstr "Masuk"
#: snikket_web/main.py:55
#: snikket_web/main.py:57
msgid "Invalid username or password."
msgstr "Nama pengguna atau kata sandi salah."
#: snikket_web/main.py:83
#: snikket_web/main.py:85
msgid "Login successful!"
msgstr "Login berhasil!"
@@ -471,7 +471,7 @@ msgstr ""
msgid "Software Versions"
msgstr "Versi perangkat lunak"
#: snikket_web/templates/about.html:29
#: snikket_web/templates/about.html:32
msgid "Back to the main page"
msgstr "Kembali ke halaman depan"
@@ -618,6 +618,7 @@ msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
"POT-Creation-Date: 2022-06-06 19:52+0200\n"
"PO-Revision-Date: 2021-05-19 15:12+0000\n"
"Last-Translator: Roberto Resoli <roberto@resolutions.it>\n"
"Language-Team: Italian <https://i18n.sotecware.net/projects/snikket/web-"
@@ -20,278 +20,278 @@ msgstr ""
"X-Generator: Weblate 4.5.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/templates/admin_edit_circle.html:59
#: snikket_web/templates/admin_users.html:8
msgid "Login name"
msgstr "Nome utente"
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/templates/admin_edit_circle.html:60
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
msgid "Display name"
msgstr "Nome visualizzato"
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
msgid "Access Level"
msgstr "Livello di accesso"
#: snikket_web/admin.py:78
#: snikket_web/admin.py:79
msgid "Limited"
msgstr "Limitato"
#: snikket_web/admin.py:79
#: snikket_web/admin.py:80
msgid "Normal user"
msgstr "Utente normale"
#: snikket_web/admin.py:80
#: snikket_web/admin.py:81
msgid "Administrator"
msgstr "Amministratore"
#: snikket_web/admin.py:85
#: snikket_web/admin.py:86
msgid "Update user"
msgstr "Aggiorna utente"
#: snikket_web/admin.py:89
#: snikket_web/admin.py:90
msgid "Create password reset link"
msgstr "Crea collegamento per reimpostare la password"
#: snikket_web/admin.py:107
#: snikket_web/admin.py:108
msgid "Password reset link created"
msgstr "Creato collegamento per reimpostare la password"
#: snikket_web/admin.py:122
#: snikket_web/admin.py:123
msgid "User information updated."
msgstr "Informazioni utente aggiornate."
#: snikket_web/admin.py:144
#: snikket_web/admin.py:145
msgid "Delete user permanently"
msgstr "Elimina definitivamente l'utente"
#: snikket_web/admin.py:157
#: snikket_web/admin.py:158
msgid "User deleted"
msgstr "Utente rimosso"
#: snikket_web/admin.py:195
#: snikket_web/admin.py:196
msgid "Password reset link not found"
msgstr "Collegamento per reimpostare la password non trovato"
#: snikket_web/admin.py:207
#: snikket_web/admin.py:208
msgid "Password reset link deleted"
msgstr "Eliminato collegamento per reimpostare la password"
#: snikket_web/admin.py:227
#: snikket_web/admin.py:228
msgid "Invite to circle"
msgstr "Invita nella cerchia"
#: snikket_web/admin.py:233
#: snikket_web/admin.py:234
msgid "At least one circle must be selected"
msgstr "Devi selezionare almeno una cerchia"
#: snikket_web/admin.py:238
#: snikket_web/admin.py:239
msgid "Valid for"
msgstr "Valido per"
#: snikket_web/admin.py:240
#: snikket_web/admin.py:241
msgid "One hour"
msgstr "Un'ora"
#: snikket_web/admin.py:241
#: snikket_web/admin.py:242
msgid "Twelve hours"
msgstr "Dodici ore"
#: snikket_web/admin.py:242
#: snikket_web/admin.py:243
msgid "One day"
msgstr "Un giorno"
#: snikket_web/admin.py:243
#: snikket_web/admin.py:244
msgid "One week"
msgstr "Una settimana"
#: snikket_web/admin.py:244
#: snikket_web/admin.py:245
msgid "Four weeks"
msgstr "Quattro settimane"
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
msgid "Invitation type"
msgstr "Tipo di invito"
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr "Individuale"
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
msgid "Group"
msgstr "Gruppo"
#: snikket_web/admin.py:259
#: snikket_web/admin.py:260
msgid "New invitation link"
msgstr "Nuovo collegamento di invito"
#: snikket_web/admin.py:321
#: snikket_web/admin.py:322
msgid "Revoke"
msgstr "Revoca"
#: snikket_web/admin.py:345
#: snikket_web/admin.py:346
msgid "Invitation created"
msgstr "Invito creato"
#: snikket_web/admin.py:361
#: snikket_web/admin.py:362
msgid "No such invitation exists"
msgstr "Questo invito non esiste"
#: snikket_web/admin.py:376
#: snikket_web/admin.py:377
msgid "Invitation revoked"
msgstr "Invito revocato"
#: snikket_web/admin.py:393 snikket_web/admin.py:441
#: snikket_web/admin.py:394 snikket_web/admin.py:442
msgid "Name"
msgstr "Nome"
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr "Crea cerchia"
#: snikket_web/admin.py:428
#: snikket_web/admin.py:429
msgid "Circle created"
msgstr "Cerchia creata"
#: snikket_web/admin.py:446
#: snikket_web/admin.py:447
msgid "Select user"
msgstr "Seleziona utente"
#: snikket_web/admin.py:451
#: snikket_web/admin.py:452
msgid "Update circle"
msgstr "Modifica cerchia"
#: snikket_web/admin.py:455
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Elimina cerchia definitivamente"
#: snikket_web/admin.py:461
#: snikket_web/admin.py:462
msgid "Add user"
msgstr "Aggiungi utente"
#: snikket_web/admin.py:477
#: snikket_web/admin.py:478
msgid "No such circle exists"
msgstr "Questa cerchia non esiste"
#: snikket_web/admin.py:514
#: snikket_web/admin.py:515
msgid "Circle data updated"
msgstr "Dati della cerchia aggiornati"
#: snikket_web/admin.py:520
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "Cerchia eliminata"
#: snikket_web/admin.py:531
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Utente aggiunto alla cerchia"
#: snikket_web/admin.py:540
#: snikket_web/admin.py:541
msgid "User removed from circle"
msgstr "Utente rimosso dalla cerchia"
#: snikket_web/admin.py:609
#: snikket_web/admin.py:610
msgid "Message contents"
msgstr ""
#: snikket_web/admin.py:615
#: snikket_web/admin.py:616
msgid "Only send to online users"
msgstr ""
#: snikket_web/admin.py:619
#: snikket_web/admin.py:620
msgid "Post to all users"
msgstr ""
#: snikket_web/admin.py:623
#: snikket_web/admin.py:624
msgid "Send preview to yourself"
msgstr ""
#: snikket_web/admin.py:645
#: snikket_web/admin.py:646
msgid "Announcement sent!"
msgstr ""
#: snikket_web/infra.py:51
#: snikket_web/infra.py:53
msgid "Main"
msgstr "Principale"
#: snikket_web/invite.py:33
#: snikket_web/invite.py:35
msgid ""
"The account data you tried to import is too large to upload. Please contact "
"your Snikket operator."
msgstr ""
#: snikket_web/invite.py:112
#: snikket_web/invite.py:114
msgid "Username"
msgstr "Nome utente"
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
msgid "Password"
msgstr "Password"
#: snikket_web/invite.py:120 snikket_web/invite.py:188
#: snikket_web/invite.py:122 snikket_web/invite.py:190
msgid "Confirm password"
msgstr "Conferma password"
#: snikket_web/invite.py:124 snikket_web/invite.py:192
#: snikket_web/invite.py:126 snikket_web/invite.py:194
msgid "The passwords must match."
msgstr "Le password devono essere identiche."
#: snikket_web/invite.py:129
#: snikket_web/invite.py:131
msgid "Create account"
msgstr "Crea utenza"
#: snikket_web/invite.py:156
#: snikket_web/invite.py:158
msgid "That username is already taken."
msgstr "Nome utente già in uso."
#: snikket_web/invite.py:160 snikket_web/invite.py:225
#: snikket_web/invite.py:162 snikket_web/invite.py:227
msgid "Registration was declined for unknown reasons."
msgstr "Registrazione rifiutata per motivi sconosciuti."
#: snikket_web/invite.py:164
#: snikket_web/invite.py:166
msgid "The username is not valid."
msgstr "Nome utente non valido."
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:29
msgid "Change password"
msgstr "Cambia password"
#: snikket_web/invite.py:244
#: snikket_web/invite.py:246
msgid "Account data file"
msgstr ""
#: snikket_web/invite.py:248
#: snikket_web/invite.py:250
msgid "Import data"
msgstr ""
#: snikket_web/invite.py:269
#: snikket_web/invite.py:271
#, python-format
msgid ""
"The account data you tried to import is in an unknown format. Please upload "
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
msgstr ""
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
#: snikket_web/user.py:178
msgid "Error"
msgstr "Errore"
#: snikket_web/main.py:36
#: snikket_web/main.py:38
msgid "Address"
msgstr "Indirizzo"
#: snikket_web/main.py:46
#: snikket_web/main.py:48
msgid "Sign in"
msgstr "Accedi"
#: snikket_web/main.py:55
#: snikket_web/main.py:57
msgid "Invalid username or password."
msgstr "Nome utente o password non validi."
#: snikket_web/main.py:83
#: snikket_web/main.py:85
msgid "Login successful!"
msgstr "Accesso riuscito!"
@@ -466,7 +466,7 @@ msgstr ""
msgid "Software Versions"
msgstr "Versioni dei programmi"
#: snikket_web/templates/about.html:29
#: snikket_web/templates/about.html:32
msgid "Back to the main page"
msgstr "Torna alla pagina principale"
@@ -613,6 +613,7 @@ msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
"POT-Creation-Date: 2022-06-06 19:52+0200\n"
"PO-Revision-Date: 2021-01-28 17:55+0000\n"
"Last-Translator: pep <pep@bouah.net>\n"
"Language-Team: Japanese <https://i18n.sotecware.net/projects/snikket/web-"
@@ -20,318 +20,318 @@ msgstr ""
"X-Generator: Weblate 4.4.2\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/templates/admin_edit_circle.html:59
#: snikket_web/templates/admin_users.html:8
msgid "Login name"
msgstr "ロゲイン名"
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/templates/admin_edit_circle.html:60
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
msgid "Display name"
msgstr "表示名"
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
msgid "Access Level"
msgstr ""
#: snikket_web/admin.py:78
#: snikket_web/admin.py:79
msgid "Limited"
msgstr ""
#: snikket_web/admin.py:79
#: snikket_web/admin.py:80
msgid "Normal user"
msgstr ""
#: snikket_web/admin.py:80
#: snikket_web/admin.py:81
#, fuzzy
#| msgid "Admin area"
msgid "Administrator"
msgstr "管理"
#: snikket_web/admin.py:85
#: snikket_web/admin.py:86
#, fuzzy
#| msgid "Update circle"
msgid "Update user"
msgstr "サークルを更新"
#: snikket_web/admin.py:89
#: snikket_web/admin.py:90
#, fuzzy
#| msgid "Password reset link for %(user_name)s"
msgid "Create password reset link"
msgstr "%(user_name)s のパスワード再設定リンク"
#: snikket_web/admin.py:107
#: snikket_web/admin.py:108
#, fuzzy
#| msgid "Password reset link for %(user_name)s"
msgid "Password reset link created"
msgstr "%(user_name)s のパスワード再設定リンク"
#: snikket_web/admin.py:122
#: snikket_web/admin.py:123
#, fuzzy
#| msgid "User information"
msgid "User information updated."
msgstr "ユーザー詳細"
#: snikket_web/admin.py:144
#: snikket_web/admin.py:145
msgid "Delete user permanently"
msgstr "ユーザーを削除する"
#: snikket_web/admin.py:157
#: snikket_web/admin.py:158
msgid "User deleted"
msgstr ""
#: snikket_web/admin.py:195
#: snikket_web/admin.py:196
#, fuzzy
#| msgid "Password reset link for %(user_name)s"
msgid "Password reset link not found"
msgstr "%(user_name)s のパスワード再設定リンク"
#: snikket_web/admin.py:207
#: snikket_web/admin.py:208
#, fuzzy
#| msgid "Password reset link for %(user_name)s"
msgid "Password reset link deleted"
msgstr "%(user_name)s のパスワード再設定リンク"
#: snikket_web/admin.py:227
#: snikket_web/admin.py:228
msgid "Invite to circle"
msgstr "サークルに紹介する"
#: snikket_web/admin.py:233
#: snikket_web/admin.py:234
msgid "At least one circle must be selected"
msgstr "サークルを選択してください"
#: snikket_web/admin.py:238
#: snikket_web/admin.py:239
msgid "Valid for"
msgstr "有効期限"
#: snikket_web/admin.py:240
#: snikket_web/admin.py:241
msgid "One hour"
msgstr "一時間"
#: snikket_web/admin.py:241
#: snikket_web/admin.py:242
msgid "Twelve hours"
msgstr "12時間"
#: snikket_web/admin.py:242
#: snikket_web/admin.py:243
msgid "One day"
msgstr "一日"
#: snikket_web/admin.py:243
#: snikket_web/admin.py:244
msgid "One week"
msgstr "一週間"
#: snikket_web/admin.py:244
#: snikket_web/admin.py:245
msgid "Four weeks"
msgstr "4週間"
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
msgid "Invitation type"
msgstr "紹介の種類"
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr "一回"
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
msgid "Group"
msgstr "複数回"
#: snikket_web/admin.py:259
#: snikket_web/admin.py:260
msgid "New invitation link"
msgstr "新しい紹介状"
#: snikket_web/admin.py:321
#: snikket_web/admin.py:322
msgid "Revoke"
msgstr "取り消す"
#: snikket_web/admin.py:345
#: snikket_web/admin.py:346
#, fuzzy
#| msgid "Invitation type"
msgid "Invitation created"
msgstr "紹介の種類"
#: snikket_web/admin.py:361
#: snikket_web/admin.py:362
#, fuzzy
#| msgid "New invitation link"
msgid "No such invitation exists"
msgstr "新しい紹介状"
#: snikket_web/admin.py:376
#: snikket_web/admin.py:377
#, fuzzy
#| msgid "Invitation type"
msgid "Invitation revoked"
msgstr "紹介の種類"
#: snikket_web/admin.py:393 snikket_web/admin.py:441
#: snikket_web/admin.py:394 snikket_web/admin.py:442
msgid "Name"
msgstr "名"
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr "サークルを作成"
#: snikket_web/admin.py:428
#: snikket_web/admin.py:429
#, fuzzy
#| msgid "Circle name"
msgid "Circle created"
msgstr "サークル名"
#: snikket_web/admin.py:446
#: snikket_web/admin.py:447
msgid "Select user"
msgstr "ユーザー選択"
#: snikket_web/admin.py:451
#: snikket_web/admin.py:452
msgid "Update circle"
msgstr "サークルを更新"
#: snikket_web/admin.py:455
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "サークルを削除"
#: snikket_web/admin.py:461
#: snikket_web/admin.py:462
msgid "Add user"
msgstr "ユーザーを追加する"
#: snikket_web/admin.py:477
#: snikket_web/admin.py:478
#, fuzzy
#| msgid "No circles"
msgid "No such circle exists"
msgstr "なし"
#: snikket_web/admin.py:514
#: snikket_web/admin.py:515
#, fuzzy
#| msgid "Circle name"
msgid "Circle data updated"
msgstr "サークル名"
#: snikket_web/admin.py:520
#: snikket_web/admin.py:521
#, fuzzy
#| msgid "Circle members"
msgid "Circle deleted"
msgstr "サークル会員"
#: snikket_web/admin.py:531
#: snikket_web/admin.py:532
#, fuzzy
#| msgid "Invite to circle"
msgid "User added to circle"
msgstr "サークルに紹介する"
#: snikket_web/admin.py:540
#: snikket_web/admin.py:541
#, fuzzy
#| msgid "Remove user %(username)s from circle"
msgid "User removed from circle"
msgstr "%(username)s をサークルから外す"
#: snikket_web/admin.py:609
#: snikket_web/admin.py:610
msgid "Message contents"
msgstr ""
#: snikket_web/admin.py:615
#: snikket_web/admin.py:616
msgid "Only send to online users"
msgstr ""
#: snikket_web/admin.py:619
#: snikket_web/admin.py:620
msgid "Post to all users"
msgstr ""
#: snikket_web/admin.py:623
#: snikket_web/admin.py:624
msgid "Send preview to yourself"
msgstr ""
#: snikket_web/admin.py:645
#: snikket_web/admin.py:646
msgid "Announcement sent!"
msgstr ""
#: snikket_web/infra.py:51
#: snikket_web/infra.py:53
msgid "Main"
msgstr "第一サークル"
#: snikket_web/invite.py:33
#: snikket_web/invite.py:35
msgid ""
"The account data you tried to import is too large to upload. Please contact "
"your Snikket operator."
msgstr ""
#: snikket_web/invite.py:112
#: snikket_web/invite.py:114
msgid "Username"
msgstr "ユーザー名"
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
msgid "Password"
msgstr "パスワード"
#: snikket_web/invite.py:120 snikket_web/invite.py:188
#: snikket_web/invite.py:122 snikket_web/invite.py:190
msgid "Confirm password"
msgstr "確認用パスワード"
#: snikket_web/invite.py:124 snikket_web/invite.py:192
#: snikket_web/invite.py:126 snikket_web/invite.py:194
#, fuzzy
#| msgid "The passwords must match"
msgid "The passwords must match."
msgstr "確認用パスワードが一致しません"
#: snikket_web/invite.py:129
#: snikket_web/invite.py:131
msgid "Create account"
msgstr "アカウント作成"
#: snikket_web/invite.py:156
#: snikket_web/invite.py:158
#, fuzzy
#| msgid "That username is already taken"
msgid "That username is already taken."
msgstr "このユーザー名は存在しています"
#: snikket_web/invite.py:160 snikket_web/invite.py:225
#: snikket_web/invite.py:162 snikket_web/invite.py:227
#, fuzzy
#| msgid "Registration was declined for unknown reasons"
msgid "Registration was declined for unknown reasons."
msgstr "理由不明の登録エラー"
#: snikket_web/invite.py:164
#: snikket_web/invite.py:166
#, fuzzy
#| msgid "The username is not valid"
msgid "The username is not valid."
msgstr "ユーザー名が不正"
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:29
msgid "Change password"
msgstr "パスワード変更"
#: snikket_web/invite.py:244
#: snikket_web/invite.py:246
msgid "Account data file"
msgstr ""
#: snikket_web/invite.py:248
#: snikket_web/invite.py:250
msgid "Import data"
msgstr ""
#: snikket_web/invite.py:269
#: snikket_web/invite.py:271
#, python-format
msgid ""
"The account data you tried to import is in an unknown format. Please upload "
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
msgstr ""
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
#: snikket_web/user.py:178
msgid "Error"
msgstr ""
#: snikket_web/main.py:36
#: snikket_web/main.py:38
msgid "Address"
msgstr "アドレス"
#: snikket_web/main.py:46
#: snikket_web/main.py:48
msgid "Sign in"
msgstr "サインイン"
#: snikket_web/main.py:55
#: snikket_web/main.py:57
msgid "Invalid username or password."
msgstr "ユーザー名またはパスワードが不正。"
#: snikket_web/main.py:83
#: snikket_web/main.py:85
msgid "Login successful!"
msgstr ""
@@ -498,7 +498,7 @@ msgstr ""
msgid "Software Versions"
msgstr "ソフトウェアバーション"
#: snikket_web/templates/about.html:29
#: snikket_web/templates/about.html:32
msgid "Back to the main page"
msgstr "戻る"
@@ -635,6 +635,7 @@ msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"

View File

@@ -8,287 +8,287 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
"POT-Creation-Date: 2022-06-07 22:31+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.9.1\n"
"Generated-By: Babel 2.10.1\n"
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/templates/admin_edit_circle.html:59
#: snikket_web/templates/admin_users.html:8
msgid "Login name"
msgstr ""
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/templates/admin_edit_circle.html:60
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
msgid "Display name"
msgstr ""
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
msgid "Access Level"
msgstr ""
#: snikket_web/admin.py:78
#: snikket_web/admin.py:79
msgid "Limited"
msgstr ""
#: snikket_web/admin.py:79
#: snikket_web/admin.py:80
msgid "Normal user"
msgstr ""
#: snikket_web/admin.py:80
#: snikket_web/admin.py:81
msgid "Administrator"
msgstr ""
#: snikket_web/admin.py:85
#: snikket_web/admin.py:86
msgid "Update user"
msgstr ""
#: snikket_web/admin.py:89
#: snikket_web/admin.py:90
msgid "Create password reset link"
msgstr ""
#: snikket_web/admin.py:107
#: snikket_web/admin.py:108
msgid "Password reset link created"
msgstr ""
#: snikket_web/admin.py:122
#: snikket_web/admin.py:123
msgid "User information updated."
msgstr ""
#: snikket_web/admin.py:144
#: snikket_web/admin.py:145
msgid "Delete user permanently"
msgstr ""
#: snikket_web/admin.py:157
#: snikket_web/admin.py:158
msgid "User deleted"
msgstr ""
#: snikket_web/admin.py:195
#: snikket_web/admin.py:196
msgid "Password reset link not found"
msgstr ""
#: snikket_web/admin.py:207
#: snikket_web/admin.py:208
msgid "Password reset link deleted"
msgstr ""
#: snikket_web/admin.py:227
#: snikket_web/admin.py:228
msgid "Invite to circle"
msgstr ""
#: snikket_web/admin.py:233
#: snikket_web/admin.py:234
msgid "At least one circle must be selected"
msgstr ""
#: snikket_web/admin.py:238
#: snikket_web/admin.py:239
msgid "Valid for"
msgstr ""
#: snikket_web/admin.py:240
#: snikket_web/admin.py:241
msgid "One hour"
msgstr ""
#: snikket_web/admin.py:241
#: snikket_web/admin.py:242
msgid "Twelve hours"
msgstr ""
#: snikket_web/admin.py:242
#: snikket_web/admin.py:243
msgid "One day"
msgstr ""
#: snikket_web/admin.py:243
#: snikket_web/admin.py:244
msgid "One week"
msgstr ""
#: snikket_web/admin.py:244
#: snikket_web/admin.py:245
msgid "Four weeks"
msgstr ""
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
msgid "Invitation type"
msgstr ""
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr ""
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
msgid "Group"
msgstr ""
#: snikket_web/admin.py:259
#: snikket_web/admin.py:260
msgid "New invitation link"
msgstr ""
#: snikket_web/admin.py:321
#: snikket_web/admin.py:322
msgid "Revoke"
msgstr ""
#: snikket_web/admin.py:345
#: snikket_web/admin.py:346
msgid "Invitation created"
msgstr ""
#: snikket_web/admin.py:361
#: snikket_web/admin.py:362
msgid "No such invitation exists"
msgstr ""
#: snikket_web/admin.py:376
#: snikket_web/admin.py:377
msgid "Invitation revoked"
msgstr ""
#: snikket_web/admin.py:393 snikket_web/admin.py:441
#: snikket_web/admin.py:394 snikket_web/admin.py:442
msgid "Name"
msgstr ""
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr ""
#: snikket_web/admin.py:428
#: snikket_web/admin.py:429
msgid "Circle created"
msgstr ""
#: snikket_web/admin.py:446
#: snikket_web/admin.py:447
msgid "Select user"
msgstr ""
#: snikket_web/admin.py:451
#: snikket_web/admin.py:452
msgid "Update circle"
msgstr ""
#: snikket_web/admin.py:455
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr ""
#: snikket_web/admin.py:461
#: snikket_web/admin.py:462
msgid "Add user"
msgstr ""
#: snikket_web/admin.py:477
#: snikket_web/admin.py:478
msgid "No such circle exists"
msgstr ""
#: snikket_web/admin.py:514
#: snikket_web/admin.py:515
msgid "Circle data updated"
msgstr ""
#: snikket_web/admin.py:520
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr ""
#: snikket_web/admin.py:531
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr ""
#: snikket_web/admin.py:540
#: snikket_web/admin.py:541
msgid "User removed from circle"
msgstr ""
#: snikket_web/admin.py:609
#: snikket_web/admin.py:610
msgid "Message contents"
msgstr ""
#: snikket_web/admin.py:615
#: snikket_web/admin.py:616
msgid "Only send to online users"
msgstr ""
#: snikket_web/admin.py:619
#: snikket_web/admin.py:620
msgid "Post to all users"
msgstr ""
#: snikket_web/admin.py:623
#: snikket_web/admin.py:624
msgid "Send preview to yourself"
msgstr ""
#: snikket_web/admin.py:645
#: snikket_web/admin.py:646
msgid "Announcement sent!"
msgstr ""
#: snikket_web/infra.py:51
#: snikket_web/infra.py:53
msgid "Main"
msgstr ""
#: snikket_web/invite.py:33
#: snikket_web/invite.py:35
msgid ""
"The account data you tried to import is too large to upload. Please "
"contact your Snikket operator."
msgstr ""
#: snikket_web/invite.py:112
#: snikket_web/invite.py:114
msgid "Username"
msgstr ""
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
msgid "Password"
msgstr ""
#: snikket_web/invite.py:120 snikket_web/invite.py:188
#: snikket_web/invite.py:122 snikket_web/invite.py:190
msgid "Confirm password"
msgstr ""
#: snikket_web/invite.py:124 snikket_web/invite.py:192
#: snikket_web/invite.py:126 snikket_web/invite.py:194
msgid "The passwords must match."
msgstr ""
#: snikket_web/invite.py:129
#: snikket_web/invite.py:131
msgid "Create account"
msgstr ""
#: snikket_web/invite.py:156
#: snikket_web/invite.py:158
msgid "That username is already taken."
msgstr ""
#: snikket_web/invite.py:160 snikket_web/invite.py:225
#: snikket_web/invite.py:162 snikket_web/invite.py:227
msgid "Registration was declined for unknown reasons."
msgstr ""
#: snikket_web/invite.py:164
#: snikket_web/invite.py:166
msgid "The username is not valid."
msgstr ""
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:29
msgid "Change password"
msgstr ""
#: snikket_web/invite.py:244
#: snikket_web/invite.py:246
msgid "Account data file"
msgstr ""
#: snikket_web/invite.py:248
#: snikket_web/invite.py:250
msgid "Import data"
msgstr ""
#: snikket_web/invite.py:269
#: snikket_web/invite.py:271
#, python-format
msgid ""
"The account data you tried to import is in an unknown format. Please "
"upload an XML file in XEP-0227 format (provided format: %(mimetype)s)."
msgstr ""
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
#: snikket_web/user.py:178
msgid "Error"
msgstr ""
#: snikket_web/main.py:36
#: snikket_web/main.py:38
msgid "Address"
msgstr ""
#: snikket_web/main.py:46
#: snikket_web/main.py:48
msgid "Sign in"
msgstr ""
#: snikket_web/main.py:55
#: snikket_web/main.py:57
msgid "Invalid username or password."
msgstr ""
#: snikket_web/main.py:83
#: snikket_web/main.py:85
msgid "Login successful!"
msgstr ""
@@ -445,7 +445,7 @@ msgstr ""
msgid "Software Versions"
msgstr ""
#: snikket_web/templates/about.html:29
#: snikket_web/templates/about.html:32
msgid "Back to the main page"
msgstr ""
@@ -580,6 +580,7 @@ msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
@@ -1078,8 +1079,8 @@ msgstr ""
#: snikket_web/templates/invite_register.html:16
#: snikket_web/templates/invite_reset_view.html:21
#: snikket_web/templates/invite_view.html:41
#: snikket_web/templates/invite_view.html:106
#: snikket_web/templates/invite_view.html:134
#: snikket_web/templates/invite_view.html:84
#: snikket_web/templates/invite_view.html:112
msgid "Open the app"
msgstr ""
@@ -1169,7 +1170,6 @@ msgid ""
msgstr ""
#: snikket_web/templates/invite_reset_view.html:26
#: snikket_web/templates/invite_view.html:77
msgid ""
"Your camera will turn on. Point it at the square code below until it is "
"within the highlighted square on your screen, and wait until the app "
@@ -1288,7 +1288,7 @@ msgid "Get it on Google Play"
msgstr ""
#: snikket_web/templates/invite_view.html:30
#: snikket_web/templates/invite_view.html:102
#: snikket_web/templates/invite_view.html:80
msgid "Download on the App Store"
msgstr ""
@@ -1319,11 +1319,11 @@ msgid "Scan invite code"
msgstr ""
#: snikket_web/templates/invite_view.html:55
#: snikket_web/templates/invite_view.html:84
#: snikket_web/templates/invite_view.html:96
#: snikket_web/templates/invite_view.html:112
#: snikket_web/templates/invite_view.html:124
#: snikket_web/templates/invite_view.html:140
#: snikket_web/templates/invite_view.html:62
#: snikket_web/templates/invite_view.html:74
#: snikket_web/templates/invite_view.html:90
#: snikket_web/templates/invite_view.html:102
#: snikket_web/templates/invite_view.html:118
msgid "Close"
msgstr ""
@@ -1334,59 +1334,39 @@ msgid ""
"itself."
msgstr ""
#: snikket_web/templates/invite_view.html:63
msgid "Using a QR code scanner"
msgstr ""
#: snikket_web/templates/invite_view.html:65
msgid "Using the Snikket app"
msgstr ""
#: snikket_web/templates/invite_view.html:70
msgid ""
"Use a <em>QR code</em> scanner on your mobile device to scan the code "
"below:"
msgstr ""
#: snikket_web/templates/invite_view.html:76
msgid ""
"Install the Snikket app on your mobile device, open it, and tap the "
"'Scan' button at the top."
msgstr ""
#: snikket_web/templates/invite_view.html:93
#: snikket_web/templates/invite_view.html:71
msgid "Install on iOS"
msgstr ""
#: snikket_web/templates/invite_view.html:99
#: snikket_web/templates/invite_view.html:77
msgid ""
"After downloading Snikket from the App Store, you have to return to this "
"invite link and tap on \"Open the app\" to proceed."
msgstr ""
#: snikket_web/templates/invite_view.html:101
#: snikket_web/templates/invite_view.html:79
msgid "First download Snikket from the App Store using the button below:"
msgstr ""
#: snikket_web/templates/invite_view.html:103
#: snikket_web/templates/invite_view.html:131
#: snikket_web/templates/invite_view.html:81
#: snikket_web/templates/invite_view.html:109
msgid ""
"After the installation is complete, you can return to this page and tap "
"the \"Open the app\" button to continue with the setup:"
msgstr ""
#: snikket_web/templates/invite_view.html:121
#: snikket_web/templates/invite_view.html:130
#: snikket_web/templates/invite_view.html:99
#: snikket_web/templates/invite_view.html:108
msgid "Install via F-Droid"
msgstr ""
#: snikket_web/templates/invite_view.html:127
#: snikket_web/templates/invite_view.html:105
msgid ""
"After installing Snikket via F-Droid, you have to return to this invite "
"link and tap on \"Open the app\" to proceed."
msgstr ""
#: snikket_web/templates/invite_view.html:129
#: snikket_web/templates/invite_view.html:107
msgid "First install Snikket from F-Droid using the button below:"
msgstr ""

View File

@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: translations@snikket.org\n"
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-06 19:52+0200\n"
"PO-Revision-Date: 2022-01-21 15:00+0000\n"
"Last-Translator: misiek <migelazur@mailbox.org>\n"
"Language-Team: Polish <http://i18n.sotecware.net/projects/snikket/web-portal/"
@@ -21,203 +21,203 @@ msgstr ""
"X-Generator: Weblate 4.8.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/templates/admin_edit_circle.html:59
#: snikket_web/templates/admin_users.html:8
msgid "Login name"
msgstr "Login"
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/templates/admin_edit_circle.html:60
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
msgid "Display name"
msgstr "Nazwa wyświetlana"
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
msgid "Access Level"
msgstr "Poziom dostępu"
#: snikket_web/admin.py:78
#: snikket_web/admin.py:79
msgid "Limited"
msgstr "Ograniczony"
#: snikket_web/admin.py:79
#: snikket_web/admin.py:80
msgid "Normal user"
msgstr "Zwykły użytkownik"
#: snikket_web/admin.py:80
#: snikket_web/admin.py:81
msgid "Administrator"
msgstr "Administrator"
#: snikket_web/admin.py:85
#: snikket_web/admin.py:86
msgid "Update user"
msgstr "Zapisz ustawienia użytkownika"
#: snikket_web/admin.py:89
#: snikket_web/admin.py:90
msgid "Create password reset link"
msgstr "Stwórz link do zresetowania hasła"
#: snikket_web/admin.py:107
#: snikket_web/admin.py:108
msgid "Password reset link created"
msgstr "Utworzono link resetowania hasła"
#: snikket_web/admin.py:122
#: snikket_web/admin.py:123
msgid "User information updated."
msgstr "Zaktualizowano informacje o użytkowniku."
#: snikket_web/admin.py:144
#: snikket_web/admin.py:145
msgid "Delete user permanently"
msgstr "Usuń użytkownika bezpowrotnie"
#: snikket_web/admin.py:157
#: snikket_web/admin.py:158
msgid "User deleted"
msgstr "Użytkownik został usunięty"
#: snikket_web/admin.py:195
#: snikket_web/admin.py:196
msgid "Password reset link not found"
msgstr "Nie znaleziono linku do zresetowania hasła"
#: snikket_web/admin.py:207
#: snikket_web/admin.py:208
msgid "Password reset link deleted"
msgstr "Usunięto link resetowania hasła"
#: snikket_web/admin.py:227
#: snikket_web/admin.py:228
msgid "Invite to circle"
msgstr "Zaproś do kręgu"
#: snikket_web/admin.py:233
#: snikket_web/admin.py:234
msgid "At least one circle must be selected"
msgstr "Należy wybrać przynajmniej jeden krąg"
#: snikket_web/admin.py:238
#: snikket_web/admin.py:239
msgid "Valid for"
msgstr "Ważne przez"
#: snikket_web/admin.py:240
#: snikket_web/admin.py:241
msgid "One hour"
msgstr "Godzinę"
#: snikket_web/admin.py:241
#: snikket_web/admin.py:242
msgid "Twelve hours"
msgstr "Dwanaście godzin"
#: snikket_web/admin.py:242
#: snikket_web/admin.py:243
msgid "One day"
msgstr "Dzień"
#: snikket_web/admin.py:243
#: snikket_web/admin.py:244
msgid "One week"
msgstr "Tydzień"
#: snikket_web/admin.py:244
#: snikket_web/admin.py:245
msgid "Four weeks"
msgstr "Cztery tygodnie"
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
msgid "Invitation type"
msgstr "Typ zaproszenia"
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr "Indywidualne"
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
msgid "Group"
msgstr "Grupowe"
#: snikket_web/admin.py:259
#: snikket_web/admin.py:260
msgid "New invitation link"
msgstr "Nowy link z zaproszeniem"
#: snikket_web/admin.py:321
#: snikket_web/admin.py:322
msgid "Revoke"
msgstr "Unieważnij"
#: snikket_web/admin.py:345
#: snikket_web/admin.py:346
msgid "Invitation created"
msgstr "Utworzono zaproszenie"
#: snikket_web/admin.py:361
#: snikket_web/admin.py:362
msgid "No such invitation exists"
msgstr "Takie zaproszenie nie istnieje"
#: snikket_web/admin.py:376
#: snikket_web/admin.py:377
msgid "Invitation revoked"
msgstr "Unieważniono zaproszenie"
#: snikket_web/admin.py:393 snikket_web/admin.py:441
#: snikket_web/admin.py:394 snikket_web/admin.py:442
msgid "Name"
msgstr "Nazwa"
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr "Utwórz krąg"
#: snikket_web/admin.py:428
#: snikket_web/admin.py:429
msgid "Circle created"
msgstr "Utworzono krąg"
#: snikket_web/admin.py:446
#: snikket_web/admin.py:447
msgid "Select user"
msgstr "Wybierz użytkownika"
#: snikket_web/admin.py:451
#: snikket_web/admin.py:452
msgid "Update circle"
msgstr "Zaktualizuj ustawienia kręgu"
#: snikket_web/admin.py:455
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Usuń krąg bezpowrotnie"
#: snikket_web/admin.py:461
#: snikket_web/admin.py:462
msgid "Add user"
msgstr "Dodaj użytkownika"
#: snikket_web/admin.py:477
#: snikket_web/admin.py:478
msgid "No such circle exists"
msgstr "Taki krąg nie istnieje"
#: snikket_web/admin.py:514
#: snikket_web/admin.py:515
msgid "Circle data updated"
msgstr "Zaktualizowano dane kręgu"
#: snikket_web/admin.py:520
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "Krąg został usunięty"
#: snikket_web/admin.py:531
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Dodano użytkownika do kręgu"
#: snikket_web/admin.py:540
#: snikket_web/admin.py:541
msgid "User removed from circle"
msgstr "Usunięto użytkownika z kręgu"
#: snikket_web/admin.py:609
#: snikket_web/admin.py:610
msgid "Message contents"
msgstr "Treść wiadomości"
#: snikket_web/admin.py:615
#: snikket_web/admin.py:616
msgid "Only send to online users"
msgstr "Wyślij jedynie do użytkowników online"
#: snikket_web/admin.py:619
#: snikket_web/admin.py:620
msgid "Post to all users"
msgstr "Wyślij do wszystkich użytkowników"
#: snikket_web/admin.py:623
#: snikket_web/admin.py:624
msgid "Send preview to yourself"
msgstr "Prześlij do siebie podgląd wiadomości"
#: snikket_web/admin.py:645
#: snikket_web/admin.py:646
msgid "Announcement sent!"
msgstr "Komunikat wysłany!"
#: snikket_web/infra.py:51
#: snikket_web/infra.py:53
msgid "Main"
msgstr "Główny"
#: snikket_web/invite.py:33
#: snikket_web/invite.py:35
msgid ""
"The account data you tried to import is too large to upload. Please contact "
"your Snikket operator."
@@ -225,52 +225,52 @@ msgstr ""
"Plik z danymi konta, które próbujesz zaimportować, jest zbyt duży. "
"Skontaktuj się z administratorem twojego serwera Snikket."
#: snikket_web/invite.py:112
#: snikket_web/invite.py:114
msgid "Username"
msgstr "Nazwa użytkownika"
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
msgid "Password"
msgstr "Hasło"
#: snikket_web/invite.py:120 snikket_web/invite.py:188
#: snikket_web/invite.py:122 snikket_web/invite.py:190
msgid "Confirm password"
msgstr "Potwierdź hasło"
#: snikket_web/invite.py:124 snikket_web/invite.py:192
#: snikket_web/invite.py:126 snikket_web/invite.py:194
msgid "The passwords must match."
msgstr "Hasła muszą się zgadzać."
#: snikket_web/invite.py:129
#: snikket_web/invite.py:131
msgid "Create account"
msgstr "Utwórz konto"
#: snikket_web/invite.py:156
#: snikket_web/invite.py:158
msgid "That username is already taken."
msgstr "Ta nazwa użytkownika jest już zajęta."
#: snikket_web/invite.py:160 snikket_web/invite.py:225
#: snikket_web/invite.py:162 snikket_web/invite.py:227
msgid "Registration was declined for unknown reasons."
msgstr "Z nieznanych przyczyn rejestracja została odrzucona."
#: snikket_web/invite.py:164
#: snikket_web/invite.py:166
msgid "The username is not valid."
msgstr "Ta nazwa użytkownika jest nieprawidłowa."
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:29
msgid "Change password"
msgstr "Zmień hasło"
#: snikket_web/invite.py:244
#: snikket_web/invite.py:246
msgid "Account data file"
msgstr "Plik z danymi konta"
#: snikket_web/invite.py:248
#: snikket_web/invite.py:250
msgid "Import data"
msgstr "Importuj dane"
#: snikket_web/invite.py:269
#: snikket_web/invite.py:271
#, python-format
msgid ""
"The account data you tried to import is in an unknown format. Please upload "
@@ -279,24 +279,24 @@ msgstr ""
"Dane konta, które próbujesz zaimportować, mają nieznany format. Proszę "
"wybrać plik w formacie XML zgodnym z XEP-0227 (podany format: %(mimetype)s)."
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
#: snikket_web/user.py:178
msgid "Error"
msgstr "Błąd"
#: snikket_web/main.py:36
#: snikket_web/main.py:38
msgid "Address"
msgstr "Adres"
#: snikket_web/main.py:46
#: snikket_web/main.py:48
msgid "Sign in"
msgstr "Zaloguj się"
#: snikket_web/main.py:55
#: snikket_web/main.py:57
msgid "Invalid username or password."
msgstr "Nieprawidłowa nazwa użytkownika lub hasło."
#: snikket_web/main.py:83
#: snikket_web/main.py:85
msgid "Login successful!"
msgstr "Zalogowano się pomyślnie!"
@@ -471,7 +471,7 @@ msgstr ""
msgid "Software Versions"
msgstr "Wersje oprogramowania"
#: snikket_web/templates/about.html:29
#: snikket_web/templates/about.html:32
msgid "Back to the main page"
msgstr "Wróć do strony głównej"
@@ -618,6 +618,7 @@ msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
@@ -1319,8 +1320,8 @@ msgid ""
"\"%(login_url)s\">manage your account</a>."
msgstr ""
"Możesz bezpiecznie zamknąć tę stronę lub zalogować się do Portalu "
"Użytkownika Snikket, aby <a href=\"%(login_url)s\">zarządzać swoim "
"kontem</a>."
"Użytkownika Snikket, aby <a href=\"%(login_url)s\">zarządzać swoim kontem</"
"a>."
#: snikket_web/templates/invite_success.html:21
msgid "Import successful"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
"POT-Creation-Date: 2022-06-06 19:52+0200\n"
"PO-Revision-Date: 2021-03-12 23:04+0000\n"
"Last-Translator: GodGoldfish <godgoldfish@pm.me>\n"
"Language-Team: Russian <https://i18n.sotecware.net/projects/snikket/web-"
@@ -21,296 +21,296 @@ msgstr ""
"X-Generator: Weblate 4.5.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/templates/admin_edit_circle.html:59
#: snikket_web/templates/admin_users.html:8
msgid "Login name"
msgstr "Логин"
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/templates/admin_edit_circle.html:60
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
msgid "Display name"
msgstr "Отображаемое имя"
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
msgid "Access Level"
msgstr ""
#: snikket_web/admin.py:78
#: snikket_web/admin.py:79
msgid "Limited"
msgstr ""
#: snikket_web/admin.py:79
#: snikket_web/admin.py:80
msgid "Normal user"
msgstr ""
#: snikket_web/admin.py:80
#: snikket_web/admin.py:81
#, fuzzy
#| msgid "Admin area"
msgid "Administrator"
msgstr "Административная зона"
#: snikket_web/admin.py:85
#: snikket_web/admin.py:86
#, fuzzy
#| msgid "Update circle"
msgid "Update user"
msgstr "Обновить крук"
#: snikket_web/admin.py:89
#: snikket_web/admin.py:90
#, fuzzy
#| msgid "Create password reset links or delete users."
msgid "Create password reset link"
msgstr "Создайте ссылки для сброса пароля или удалите пользователей."
#: snikket_web/admin.py:107
#: snikket_web/admin.py:108
msgid "Password reset link created"
msgstr "Ссылка на сброс пароля для %(user_name)s"
#: snikket_web/admin.py:122
#: snikket_web/admin.py:123
#, fuzzy
#| msgid "Circle information"
msgid "User information updated."
msgstr "Информация о круге"
#: snikket_web/admin.py:144
#: snikket_web/admin.py:145
msgid "Delete user permanently"
msgstr "Удалить пользователя навсегда"
#: snikket_web/admin.py:157
#: snikket_web/admin.py:158
msgid "User deleted"
msgstr "удалённый"
#: snikket_web/admin.py:195
#: snikket_web/admin.py:196
#, fuzzy
#| msgid "Password reset link created"
msgid "Password reset link not found"
msgstr "Ссылка на сброс пароля для %(user_name)s"
#: snikket_web/admin.py:207
#: snikket_web/admin.py:208
msgid "Password reset link deleted"
msgstr "Создайте ссылки для сброса пароля или удалите пользователей"
#: snikket_web/admin.py:227
#: snikket_web/admin.py:228
msgid "Invite to circle"
msgstr "Пригласить в круг"
#: snikket_web/admin.py:233
#: snikket_web/admin.py:234
msgid "At least one circle must be selected"
msgstr "Необходимо выбрать хотя бы один круг"
#: snikket_web/admin.py:238
#: snikket_web/admin.py:239
msgid "Valid for"
msgstr "Действителен в течении"
#: snikket_web/admin.py:240
#: snikket_web/admin.py:241
msgid "One hour"
msgstr "Один час"
#: snikket_web/admin.py:241
#: snikket_web/admin.py:242
msgid "Twelve hours"
msgstr "Двенадцать часов"
#: snikket_web/admin.py:242
#: snikket_web/admin.py:243
msgid "One day"
msgstr "Один день"
#: snikket_web/admin.py:243
#: snikket_web/admin.py:244
msgid "One week"
msgstr "Одна неделя"
#: snikket_web/admin.py:244
#: snikket_web/admin.py:245
msgid "Four weeks"
msgstr "Четыре недели"
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
msgid "Invitation type"
msgstr "Вид приглашения"
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr "Индивидуальный"
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
msgid "Group"
msgstr "Группа"
#: snikket_web/admin.py:259
#: snikket_web/admin.py:260
msgid "New invitation link"
msgstr "Новая ссылка на приглашение"
#: snikket_web/admin.py:321
#: snikket_web/admin.py:322
msgid "Revoke"
msgstr "Aннулировать"
#: snikket_web/admin.py:345
#: snikket_web/admin.py:346
msgid "Invitation created"
msgstr "Вид приглашения"
#: snikket_web/admin.py:361
#: snikket_web/admin.py:362
msgid "No such invitation exists"
msgstr "Новая ссылка на приглашение"
#: snikket_web/admin.py:376
#: snikket_web/admin.py:377
msgid "Invitation revoked"
msgstr "Вид приглашения"
#: snikket_web/admin.py:393 snikket_web/admin.py:441
#: snikket_web/admin.py:394 snikket_web/admin.py:442
msgid "Name"
msgstr "Имя"
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr "Создать крук"
#: snikket_web/admin.py:428
#: snikket_web/admin.py:429
msgid "Circle created"
msgstr "Имя круга"
#: snikket_web/admin.py:446
#: snikket_web/admin.py:447
msgid "Select user"
msgstr "Выврать пользователя"
#: snikket_web/admin.py:451
#: snikket_web/admin.py:452
msgid "Update circle"
msgstr "Обновить крук"
#: snikket_web/admin.py:455
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Удалить круг навсегда"
#: snikket_web/admin.py:461
#: snikket_web/admin.py:462
msgid "Add user"
msgstr "Добавить пользователя"
#: snikket_web/admin.py:477
#: snikket_web/admin.py:478
msgid "No such circle exists"
msgstr "Нет кругов"
#: snikket_web/admin.py:514
#: snikket_web/admin.py:515
msgid "Circle data updated"
msgstr "Имя круга"
#: snikket_web/admin.py:520
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "удалённый"
#: snikket_web/admin.py:531
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Пригласить в круг"
#: snikket_web/admin.py:540
#: snikket_web/admin.py:541
msgid "User removed from circle"
msgstr "Удалить пользователя %(username)s из круга"
#: snikket_web/admin.py:609
#: snikket_web/admin.py:610
msgid "Message contents"
msgstr ""
#: snikket_web/admin.py:615
#: snikket_web/admin.py:616
msgid "Only send to online users"
msgstr ""
#: snikket_web/admin.py:619
#: snikket_web/admin.py:620
msgid "Post to all users"
msgstr ""
#: snikket_web/admin.py:623
#: snikket_web/admin.py:624
msgid "Send preview to yourself"
msgstr ""
#: snikket_web/admin.py:645
#: snikket_web/admin.py:646
msgid "Announcement sent!"
msgstr ""
#: snikket_web/infra.py:51
#: snikket_web/infra.py:53
msgid "Main"
msgstr "Основное"
#: snikket_web/invite.py:33
#: snikket_web/invite.py:35
msgid ""
"The account data you tried to import is too large to upload. Please contact "
"your Snikket operator."
msgstr ""
#: snikket_web/invite.py:112
#: snikket_web/invite.py:114
msgid "Username"
msgstr "Имя пользователя"
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
msgid "Password"
msgstr "Пароль"
#: snikket_web/invite.py:120 snikket_web/invite.py:188
#: snikket_web/invite.py:122 snikket_web/invite.py:190
msgid "Confirm password"
msgstr "Повторите пароль"
#: snikket_web/invite.py:124 snikket_web/invite.py:192
#: snikket_web/invite.py:126 snikket_web/invite.py:194
#, fuzzy
#| msgid "The passwords must match"
msgid "The passwords must match."
msgstr "Паролт должны совпадать"
#: snikket_web/invite.py:129
#: snikket_web/invite.py:131
msgid "Create account"
msgstr "Создать аккунт"
#: snikket_web/invite.py:156
#: snikket_web/invite.py:158
#, fuzzy
#| msgid "That username is already taken"
msgid "That username is already taken."
msgstr "Это имя пользователя уже используется"
#: snikket_web/invite.py:160 snikket_web/invite.py:225
#: snikket_web/invite.py:162 snikket_web/invite.py:227
#, fuzzy
#| msgid "Registration was declined for unknown reasons"
msgid "Registration was declined for unknown reasons."
msgstr "Регистрация была отклонена по неизвестным причинам"
#: snikket_web/invite.py:164
#: snikket_web/invite.py:166
#, fuzzy
#| msgid "The username is not valid"
msgid "The username is not valid."
msgstr "Имя пользователя недействительно"
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:29
msgid "Change password"
msgstr "Изменить пароль"
#: snikket_web/invite.py:244
#: snikket_web/invite.py:246
msgid "Account data file"
msgstr ""
#: snikket_web/invite.py:248
#: snikket_web/invite.py:250
msgid "Import data"
msgstr ""
#: snikket_web/invite.py:269
#: snikket_web/invite.py:271
#, python-format
msgid ""
"The account data you tried to import is in an unknown format. Please upload "
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
msgstr ""
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
#: snikket_web/user.py:178
msgid "Error"
msgstr "Ошибка"
#: snikket_web/main.py:36
#: snikket_web/main.py:38
msgid "Address"
msgstr "Адрес"
#: snikket_web/main.py:46
#: snikket_web/main.py:48
msgid "Sign in"
msgstr "Войти"
#: snikket_web/main.py:55
#: snikket_web/main.py:57
msgid "Invalid username or password."
msgstr "Неверное имя пользователя или пароль."
#: snikket_web/main.py:83
#: snikket_web/main.py:85
msgid "Login successful!"
msgstr "Войти успешно!"
@@ -488,7 +488,7 @@ msgstr ""
msgid "Software Versions"
msgstr "Версии программного обеспечения"
#: snikket_web/templates/about.html:29
#: snikket_web/templates/about.html:32
msgid "Back to the main page"
msgstr "Назад на главную страницу"
@@ -635,6 +635,7 @@ msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"

View File

@@ -6,12 +6,12 @@
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: translations@snikket.org\n"
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-06 19:52+0200\n"
"PO-Revision-Date: 2022-01-18 09:21+0000\n"
"Last-Translator: Kim Alvefur <zash@zash.se>\n"
"Language-Team: Swedish <http://i18n.sotecware.net/projects/snikket/"
"web-portal/sv/>\n"
"Language-Team: Swedish <http://i18n.sotecware.net/projects/snikket/web-"
"portal/sv/>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -20,203 +20,203 @@ msgstr ""
"X-Generator: Weblate 4.8.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/templates/admin_edit_circle.html:59
#: snikket_web/templates/admin_users.html:8
msgid "Login name"
msgstr "Inloggningsnamn"
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/templates/admin_edit_circle.html:60
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
msgid "Display name"
msgstr "Visningsnamn"
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
msgid "Access Level"
msgstr "Användarnivåer"
#: snikket_web/admin.py:78
#: snikket_web/admin.py:79
msgid "Limited"
msgstr "Begränsad"
#: snikket_web/admin.py:79
#: snikket_web/admin.py:80
msgid "Normal user"
msgstr "Vanlig användare"
#: snikket_web/admin.py:80
#: snikket_web/admin.py:81
msgid "Administrator"
msgstr "Administratör"
#: snikket_web/admin.py:85
#: snikket_web/admin.py:86
msgid "Update user"
msgstr "Uppdatera användare"
#: snikket_web/admin.py:89
#: snikket_web/admin.py:90
msgid "Create password reset link"
msgstr "Skapa länk för återställning av lösenord"
#: snikket_web/admin.py:107
#: snikket_web/admin.py:108
msgid "Password reset link created"
msgstr "Skapade länk för att återställa lösenord"
#: snikket_web/admin.py:122
#: snikket_web/admin.py:123
msgid "User information updated."
msgstr "Användarinformation uppdaterad."
#: snikket_web/admin.py:144
#: snikket_web/admin.py:145
msgid "Delete user permanently"
msgstr "Radera användare permanent"
#: snikket_web/admin.py:157
#: snikket_web/admin.py:158
msgid "User deleted"
msgstr "Användare raderad"
#: snikket_web/admin.py:195
#: snikket_web/admin.py:196
msgid "Password reset link not found"
msgstr "Länk för återställning av lösenord hittades inte"
#: snikket_web/admin.py:207
#: snikket_web/admin.py:208
msgid "Password reset link deleted"
msgstr "Länk för återställning av lösenord raderad"
#: snikket_web/admin.py:227
#: snikket_web/admin.py:228
msgid "Invite to circle"
msgstr "Bjud in till krets"
#: snikket_web/admin.py:233
#: snikket_web/admin.py:234
msgid "At least one circle must be selected"
msgstr "Minst en krets behöver väljas"
#: snikket_web/admin.py:238
#: snikket_web/admin.py:239
msgid "Valid for"
msgstr "Giltig i"
#: snikket_web/admin.py:240
#: snikket_web/admin.py:241
msgid "One hour"
msgstr "En timme"
#: snikket_web/admin.py:241
#: snikket_web/admin.py:242
msgid "Twelve hours"
msgstr "Tolv timmar"
#: snikket_web/admin.py:242
#: snikket_web/admin.py:243
msgid "One day"
msgstr "En dag"
#: snikket_web/admin.py:243
#: snikket_web/admin.py:244
msgid "One week"
msgstr "En vecka"
#: snikket_web/admin.py:244
#: snikket_web/admin.py:245
msgid "Four weeks"
msgstr "Fyra veckor"
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
msgid "Invitation type"
msgstr "Typ av inbjudan"
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr "Individuell"
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
msgid "Group"
msgstr "Grupp"
#: snikket_web/admin.py:259
#: snikket_web/admin.py:260
msgid "New invitation link"
msgstr "Ny inbjudanslänk"
#: snikket_web/admin.py:321
#: snikket_web/admin.py:322
msgid "Revoke"
msgstr "Återkalla"
#: snikket_web/admin.py:345
#: snikket_web/admin.py:346
msgid "Invitation created"
msgstr "Inbjudan skapad"
#: snikket_web/admin.py:361
#: snikket_web/admin.py:362
msgid "No such invitation exists"
msgstr "Inbjudanslänken finns inte"
#: snikket_web/admin.py:376
#: snikket_web/admin.py:377
msgid "Invitation revoked"
msgstr "Inbjudan återkallad"
#: snikket_web/admin.py:393 snikket_web/admin.py:441
#: snikket_web/admin.py:394 snikket_web/admin.py:442
msgid "Name"
msgstr "Namn"
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr "Skapa krets"
#: snikket_web/admin.py:428
#: snikket_web/admin.py:429
msgid "Circle created"
msgstr "Krets skapad"
#: snikket_web/admin.py:446
#: snikket_web/admin.py:447
msgid "Select user"
msgstr "Välj användare"
#: snikket_web/admin.py:451
#: snikket_web/admin.py:452
msgid "Update circle"
msgstr "Uppdatera krets"
#: snikket_web/admin.py:455
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Radera krets permanent"
#: snikket_web/admin.py:461
#: snikket_web/admin.py:462
msgid "Add user"
msgstr "Lägg till användare"
#: snikket_web/admin.py:477
#: snikket_web/admin.py:478
msgid "No such circle exists"
msgstr "Kretsen finns inte"
#: snikket_web/admin.py:514
#: snikket_web/admin.py:515
msgid "Circle data updated"
msgstr "Kretsen uppdaterades"
#: snikket_web/admin.py:520
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "Krets raderad"
#: snikket_web/admin.py:531
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Användare tillagd i krets"
#: snikket_web/admin.py:540
#: snikket_web/admin.py:541
msgid "User removed from circle"
msgstr "Användaren %(username)s borttagen från krets"
#: snikket_web/admin.py:609
#: snikket_web/admin.py:610
msgid "Message contents"
msgstr "Meddelandeinnehåll"
#: snikket_web/admin.py:615
#: snikket_web/admin.py:616
msgid "Only send to online users"
msgstr "Skicka bara till användare som är online"
#: snikket_web/admin.py:619
#: snikket_web/admin.py:620
msgid "Post to all users"
msgstr "Skicka till alla användare"
#: snikket_web/admin.py:623
#: snikket_web/admin.py:624
msgid "Send preview to yourself"
msgstr "Skicka förhandsvisning till dig själv"
#: snikket_web/admin.py:645
#: snikket_web/admin.py:646
msgid "Announcement sent!"
msgstr "Tillkännagivande skickat!"
#: snikket_web/infra.py:51
#: snikket_web/infra.py:53
msgid "Main"
msgstr "Allmän"
#: snikket_web/invite.py:33
#: snikket_web/invite.py:35
msgid ""
"The account data you tried to import is too large to upload. Please contact "
"your Snikket operator."
@@ -224,52 +224,52 @@ msgstr ""
"Kontot du försökte importera är för stort för att ladda upp. Vänligen "
"kontakta din Snikket-operatör."
#: snikket_web/invite.py:112
#: snikket_web/invite.py:114
msgid "Username"
msgstr "Användarnamn"
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
msgid "Password"
msgstr "Lösenord"
#: snikket_web/invite.py:120 snikket_web/invite.py:188
#: snikket_web/invite.py:122 snikket_web/invite.py:190
msgid "Confirm password"
msgstr "Bekräfta lösenord"
#: snikket_web/invite.py:124 snikket_web/invite.py:192
#: snikket_web/invite.py:126 snikket_web/invite.py:194
msgid "The passwords must match."
msgstr "Lösenorden måste vara identiska."
#: snikket_web/invite.py:129
#: snikket_web/invite.py:131
msgid "Create account"
msgstr "Skapa konto"
#: snikket_web/invite.py:156
#: snikket_web/invite.py:158
msgid "That username is already taken."
msgstr "Det användarnamnet är redan taget."
#: snikket_web/invite.py:160 snikket_web/invite.py:225
#: snikket_web/invite.py:162 snikket_web/invite.py:227
msgid "Registration was declined for unknown reasons."
msgstr "Registreringen nekades av okänd anledning."
#: snikket_web/invite.py:164
#: snikket_web/invite.py:166
msgid "The username is not valid."
msgstr "Användarnamnet är ogiltigt."
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:29
msgid "Change password"
msgstr "Ändra lösenord"
#: snikket_web/invite.py:244
#: snikket_web/invite.py:246
msgid "Account data file"
msgstr "Kontodatafil"
#: snikket_web/invite.py:248
#: snikket_web/invite.py:250
msgid "Import data"
msgstr "Importera data"
#: snikket_web/invite.py:269
#: snikket_web/invite.py:271
#, python-format
msgid ""
"The account data you tried to import is in an unknown format. Please upload "
@@ -278,24 +278,24 @@ msgstr ""
"Kontot du försökte importera är i ett okänt format. Vänligen ladda upp en "
"XML-fil i XEP-0227-format (angivet format: %(mimetype)s)."
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
#: snikket_web/user.py:178
msgid "Error"
msgstr "Fel"
#: snikket_web/main.py:36
#: snikket_web/main.py:38
msgid "Address"
msgstr "Adress"
#: snikket_web/main.py:46
#: snikket_web/main.py:48
msgid "Sign in"
msgstr "Logga in"
#: snikket_web/main.py:55
#: snikket_web/main.py:57
msgid "Invalid username or password."
msgstr "Ogiltigt användarnamn eller lösenord."
#: snikket_web/main.py:83
#: snikket_web/main.py:85
msgid "Login successful!"
msgstr "Inloggning lyckades!"
@@ -469,7 +469,7 @@ msgstr ""
msgid "Software Versions"
msgstr "Mjukvaruversioner"
#: snikket_web/templates/about.html:29
#: snikket_web/templates/about.html:32
msgid "Back to the main page"
msgstr "Tillbaka till huvudsidan"
@@ -615,6 +615,7 @@ msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"

File diff suppressed because it is too large Load Diff

View File

@@ -13,7 +13,7 @@ from quart import (
flash,
current_app,
)
import quart.exceptions
import werkzeug.exceptions
import wtforms
@@ -59,7 +59,7 @@ _ACCESS_MODEL_CHOICES = [
class ProfileForm(BaseForm):
nickname = wtforms.TextField(
nickname = wtforms.StringField(
_l("Display name"),
)
@@ -96,7 +96,7 @@ async def index() -> str:
@bp.route('/passwd', methods=["GET", "POST"])
@client.require_session()
async def change_pw() -> typing.Union[str, quart.Response]:
async def change_pw() -> typing.Union[str, werkzeug.Response]:
form = ChangePasswordForm()
if form.validate_on_submit():
try:
@@ -104,8 +104,8 @@ async def change_pw() -> typing.Union[str, quart.Response]:
form.current_password.data,
form.new_password.data,
)
except (quart.exceptions.Unauthorized,
quart.exceptions.Forbidden):
except (werkzeug.exceptions.Unauthorized,
werkzeug.exceptions.Forbidden):
# server refused current password, set an appropriate error
form.current_password.errors.append(
_("Incorrect password."),
@@ -128,7 +128,7 @@ EAVATARTOOBIG = _l(
@bp.route("/profile", methods=["GET", "POST"])
@client.require_session()
async def profile() -> typing.Union[str, quart.Response]:
async def profile() -> typing.Union[str, werkzeug.Response]:
max_avatar_size = current_app.config["MAX_AVATAR_SIZE"]
form = ProfileForm()
@@ -221,7 +221,7 @@ async def manage_data() -> typing.Union[str, quart.Response]:
@bp.route("/logout", methods=["GET", "POST"])
@client.require_session()
async def logout() -> typing.Union[quart.Response, str]:
async def logout() -> typing.Union[werkzeug.Response, str]:
form = LogoutForm()
if form.validate_on_submit():
await client.logout()

View File

@@ -4,7 +4,7 @@ import typing
import xml.etree.ElementTree as ET
from quart import abort
import quart.exceptions
import werkzeug.exceptions
TAG_XMPP_ERROR = "error"
@@ -239,7 +239,7 @@ def extract_pubsub_item_get_reply(
) -> typing.Optional[ET.Element]:
try:
pubsub = extract_iq_reply(iq_tree, TAG_PUBSUB)
except quart.exceptions.NotFound:
except werkzeug.exceptions.NotFound:
return None
if pubsub is None: