Compare commits

...

73 Commits

Author SHA1 Message Date
Jonas Schäfer
725dffc458 Reduce image size by approximately 65% 2021-02-03 18:36:31 +01:00
Jonas Schäfer
22783b837e Update readme screenshot 2021-02-03 18:30:38 +01:00
Jonas Schäfer
ba18fe692f Fix ClientResponseError if a circle has a deleted user
Eventually, we need to clear that on the backend, but for now we
deal with it in the frontend.

Bonus: this also optimises the display of the circle by removing
O(n) backend requests.
2021-02-03 18:25:29 +01:00
riccio
387a989caa Translated using Weblate (English (United Kingdom))
Currently translated at 57.4% (127 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/en_GB/
2021-02-02 21:01:57 +00:00
uira
ffab48cff0 Translated using Weblate (Indonesian)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/id/
2021-02-02 21:01:57 +00:00
riccio
17bf7cb140 Translated using Weblate (Italian)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/it/
2021-02-02 21:01:57 +00:00
GodGoldfish
408d837a0f Translated using Weblate (Russian)
Currently translated at 42.9% (95 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/ru/
2021-02-02 21:01:57 +00:00
Jonas Schäfer
56e1083ada Translated using Weblate (English)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/en/
2021-02-02 21:01:56 +00:00
Link Mauve
2aa3d629da Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-02-02 21:01:55 +00:00
Jonas Schäfer
6779341db3 Merge pull request #47 from snikket-im/feature/ci-no-push
Disable GitHub pushing to Docker Hub and include docker build in standard CI testing
2021-02-01 16:20:26 +01:00
Jonas Schäfer
10a0de0637 Add test build to standard CI 2021-02-01 16:17:06 +01:00
Jonas Schäfer
b3185a8d18 Remove build job pushing to docker hub
We don’t want that, Snikket got its own build servers.
2021-02-01 16:16:50 +01:00
Link Mauve
2db6cbe6fd Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-02-01 15:11:31 +00:00
GodGoldfish
9bc6e0b555 Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-02-01 15:11:31 +00:00
Link Mauve
98a3eeba7c Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-02-01 15:09:57 +00:00
GodGoldfish
de97b08f01 Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-02-01 15:09:57 +00:00
riccio
f2dc970731 Translated using Weblate (Italian)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/it/
2021-02-01 11:20:44 +00:00
Jonas Schäfer
2f8e724104 Enable Polish by default 2021-01-31 20:51:03 +01:00
Jonas Schäfer
a3ab537de0 Add more translated languages to the list 2021-01-31 15:29:21 +01:00
Jonas Schäfer
b04c4fa42d Force setting the SNIKKET_DOMAIN as HTTP Host when talking to prosody
This is required if the portal is talking to a Prosody with
multiple HTTP domains and it doesn’t have http_default_host set...
In a true snikket, this doesn’t happen, but we all know...
2021-01-31 15:29:21 +01:00
Jonas Schäfer
078be4ba35 Added translation using Weblate (Italian) 2021-01-31 13:02:47 +00:00
Jonas Schäfer
c1f186a3da Translated using Weblate (German)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/de/
2021-01-31 12:54:49 +00:00
misiek
7aaeb0f368 Translated using Weblate (Polish)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/pl/
2021-01-31 12:54:48 +00:00
uira
b475e76189 Translated using Weblate (Indonesian)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/id/
2021-01-31 12:54:48 +00:00
Jonas Schäfer
8b6f5e8e18 Added translation using Weblate (Russian) 2021-01-31 12:21:39 +00:00
Jonas Schäfer
695ece9165 Add missing file referenced from invites 2021-01-31 12:51:09 +01:00
Jonas Schäfer
7013161872 Add full support for favicon magic in portal even without proxy 2021-01-31 12:51:09 +01:00
Jonas Schäfer
f19270b276 Fix dark mode
Fixes #43.
2021-01-31 10:34:45 +01:00
Link Mauve
cd4955cce8 Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-01-30 13:47:38 +00:00
Link Mauve
4d03946a08 Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-01-30 13:45:59 +00:00
Link Mauve
60f7d063b6 Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-01-30 13:45:01 +00:00
Link Mauve
a57c2c6e20 Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-01-30 13:37:20 +00:00
franck
6a5445a525 Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-01-30 13:37:20 +00:00
Link Mauve
40a2e6b1b4 Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-01-30 13:35:31 +00:00
franck
4b48ebda90 Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-01-30 13:35:31 +00:00
Link Mauve
09f498c6b3 Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-01-30 13:35:00 +00:00
franck
781bac0ffa Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-01-30 13:35:00 +00:00
Link Mauve
377a28c070 Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-01-30 13:34:49 +00:00
franck
0046f2f494 Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-01-30 13:34:49 +00:00
Link Mauve
7239b8cbdc Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-01-30 13:34:01 +00:00
franck
0008d0215e Translated using Weblate (French)
Currently translated at 100.0% (221 of 221 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-01-30 13:34:00 +00:00
Weblate
2f69e48ef8 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/
2021-01-30 11:47:45 +00:00
Jonas Schäfer
58a9903a8f Make clipboard button accessible
Without the @href, it is not accessible at all because it is not
considered an active element.
2021-01-30 12:47:37 +01:00
Jonas Schäfer
0dbd8087eb Fix use of incorrect symbol 2021-01-30 12:47:37 +01:00
Jonas Schäfer
ba3440b169 Properly catch 404 on deleted invite
Otherwise, this gives a nasty 500. A proper fix would be to flash
a message and return to the invite list, but that’s more complex
and will be tracked in #40.
2021-01-30 12:47:37 +01:00
Weblate
8a010cf3a3 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/
2021-01-30 10:34:23 +00:00
Jonas Schäfer
e7610928e2 Remove unused template 2021-01-30 11:34:16 +01:00
Weblate
522b65f8ef Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/
2021-01-30 10:15:40 +00:00
Jonas Schäfer
3c90a8ca79 Translated using Weblate (Indonesian)
Currently translated at 93.3% (209 of 224 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/id/
2021-01-30 10:15:40 +00:00
Jonas Schäfer
abd7894b6f Fix nesting mistake 2021-01-30 11:15:29 +01:00
Jonas Schäfer
eaaca163a0 Fix rendering issues in password reset invite pages 2021-01-30 11:05:57 +01:00
Weblate
1c4fa92c97 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/
2021-01-30 09:49:42 +00:00
Link Mauve
42b5f05c8f Translated using Weblate (French)
Currently translated at 91.8% (192 of 209 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-01-30 09:49:41 +00:00
misiek
59701a4af8 Translated using Weblate (Polish)
Currently translated at 100.0% (209 of 209 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/pl/
2021-01-30 09:49:41 +00:00
Jonas Schäfer
5f1d3ba307 Implement password reset flow 2021-01-30 10:49:28 +01:00
uira
985675e012 Translated using Weblate (Indonesian)
Currently translated at 100.0% (209 of 209 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/id/
2021-01-30 09:07:21 +00:00
Weblate
f372b31b9d Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/
2021-01-29 14:59:13 +00:00
Jonas Schäfer
9612926230 Address a bunch of accessibility issues
- Add missing labels for form fields
- Improve contrast slightly
- Remove incorrect aria-label= and title= attributes
- Use fieldset for radio button groups
2021-01-29 15:58:54 +01:00
Jonas Schäfer
57adf0c679 Fix dark mode
It was broken after the welcome card refactor.
2021-01-29 15:58:54 +01:00
Matthew Wild
c28e98ec18 Set appropriate interface and port in docker 2021-01-29 14:03:26 +00:00
Matthew Wild
f27c86e29a Initialize required environment variables appropriately 2021-01-29 13:59:30 +00:00
Matthew Wild
ec94a47c8c Update to use logo including text for invite pages 2021-01-29 08:48:13 +00:00
Weblate
362587d852 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/
2021-01-29 08:32:44 +00:00
Jonas Schäfer
25f161d2b0 Make boxes friendlier 2021-01-29 09:32:11 +01:00
Jonas Schäfer
e5c5bbfbb4 Fix broken form validation for main circle 2021-01-29 09:32:06 +01:00
Jonas Schäfer
4044e857bc Disable iOS app reference by default
The app is not published yet, so we hide it by default. But we
allow allow to set an environment variable to show the button with
an appropriate link.
2021-01-29 09:32:01 +01:00
Jonas Schäfer
f4348600e2 Minor tweak to user profile home card
This aligns the buttons of the two cards and also the aspect
ratio becomes a tad nicer.
2021-01-28 20:10:18 +01:00
Jonas Schäfer
028f9b35a6 Fix leak of internal circle name in tooltips 2021-01-28 20:01:22 +01:00
Weblate
50d5fd21e0 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/
2021-01-28 17:55:46 +00:00
pep
a75bf333bd Translated using Weblate (Japanese)
Currently translated at 64.1% (129 of 201 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/ja/
2021-01-28 17:55:45 +00:00
pep
47975cb1a6 Translated using Weblate (French)
Currently translated at 100.0% (201 of 201 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/fr/
2021-01-28 17:55:45 +00:00
misiek
2ae9425b6a Translated using Weblate (Polish)
Currently translated at 100.0% (201 of 201 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/pl/
2021-01-28 17:55:45 +00:00
uira
00b4d528c9 Translated using Weblate (Indonesian)
Currently translated at 100.0% (201 of 201 strings)

Translation: Snikket/Web Portal
Translate-URL: https://i18n.sotecware.net/projects/snikket/web-portal/id/
2021-01-28 17:55:45 +00:00
49 changed files with 5658 additions and 1907 deletions

View File

@@ -1,23 +0,0 @@
name: Docker image build
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build the Docker image
run: >-
docker build . \
--build-arg=BUILD_SERIES=dev \
--build-arg=BUILD_ID="$(echo "$GITHUB_SHA" | head -c 12)" \
--tag snikket/snikket-web-portal:dev
- name: Log into registry
run: echo "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}" | docker login -u snikket --password-stdin
- name: Push the Docker image
run: docker push snikket/snikket-web-portal:dev

View File

@@ -1,31 +0,0 @@
---
name: Docker release image build
"on":
push:
tags:
- release/*.*
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build the Docker image
run: >-
echo "Building ref $GITHUB_REF...";
RELEASE_TAG="${GITHUB_REF#refs/tags/release/}";
RELEASE_SERIES="${RELEASE_TAG%.*}";
RELEASE_VER="${RELEASE_TAG#$RELEASE_SERIES.}";
docker build . \
--build-arg=BUILD_SERIES="$RELEASE_SERIES" \
--build-arg=BUILD_ID="$RELEASE_VER" \
--tag snikket/snikket-web-portal:"$RELEASE_SERIES"
- name: Log into registry
run: echo "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}" | docker login -u snikket --password-stdin
- name: Push the Docker image
run: >-
RELEASE_TAG="${GITHUB_REF#refs/tags/release/}";
RELEASE_SERIES="${RELEASE_TAG%.*}";
docker push snikket/snikket-web-portal:"$RELEASE_SERIES"

View File

@@ -48,3 +48,12 @@ jobs:
- name: Linting
run: |
python -m flake8 snikket_web
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build the Docker image
run: >-
docker build .

View File

@@ -3,44 +3,28 @@ FROM debian:buster
ARG BUILD_SERIES=dev
ARG BUILD_ID=0
ENV DEBIAN_FRONTEND noninteractive
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
COPY build-requirements.txt /opt/snikket-web-portal/build-requirements.txt
COPY Makefile /opt/snikket-web-portal/Makefile
COPY snikket_web/ /opt/snikket-web-portal/snikket_web
COPY babel.cfg /opt/snikket-web-portal/babel.cfg
# This Dockerfile attempts to strike a balance between image size and time it
# takes to do an incremental build on changes.
# Improvements welcome.
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 \
libpython3-dev \
make build-essential \
; \
apt-get clean ; rm -rf /var/lib/apt/lists
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
COPY build-requirements.txt /opt/snikket-web-portal/build-requirements.txt
WORKDIR /opt/snikket-web-portal
RUN set -eu; \
pip3 install -r requirements.txt; \
pip3 install -r build-requirements.txt; \
rm -rf /root/.cache;
COPY Makefile /opt/snikket-web-portal/Makefile
COPY snikket_web/ /opt/snikket-web-portal/snikket_web
COPY babel.cfg /opt/snikket-web-portal/babel.cfg
# NOTE: abusing true(1) as a terrible way to disable a specific command. If
# one merged all the RUN commands into one, one would want to run the
# uninstall/remove commands there, but with the split up RUN commands it is
# rather pointless.
RUN set -eu; \
make; \
true pip3 uninstall -yr build-requirements.txt; \
true apt-get remove -y build-essential make libpython3-dev; \
true apt-get autoremove -y; \
pip3 uninstall -yr build-requirements.txt; \
apt-get remove -y build-essential make libpython3-dev; \
apt-get autoremove -y; \
pip3 install hypercorn; \
rm -rf /root/.cache; \
apt-get clean ; rm -rf /var/lib/apt/lists
@@ -48,5 +32,7 @@ RUN set -eu; \
COPY docker/env.py /etc/snikket-web-portal/env.py
ENV SNIKKET_WEB_PYENV=/etc/snikket-web-portal/env.py
ENV SNIKKET_WEB_PROSODY_ENDPOINT=http://127.0.0.1:5280/
ADD docker/entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/bin/sh", "/entrypoint.sh"]

View File

@@ -1,2 +1,5 @@
#!/bin/sh
exec hypercorn -b "0.0.0.0:8000" 'snikket_web:create_app()'
export SNIKKET_WEB_DOMAIN="$SNIKKET_DOMAIN"
exec hypercorn -b "127.0.0.1:5765" 'snikket_web:create_app()'

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 421 KiB

View File

@@ -15,6 +15,7 @@ from quart import (
render_template,
current_app,
redirect,
jsonify,
)
import environ
@@ -142,7 +143,14 @@ class AppConfig:
domain = environ.var()
site_name = environ.var("")
avatar_cache_ttl = environ.var(1800, converter=int)
languages = environ.var(["de", "en"], converter=autosplit)
languages = environ.var([
"de",
"en",
"fr",
"id",
"po",
], converter=autosplit)
apple_store_url = environ.var("")
_UPPER_CASE = "".join(map(chr, range(ord("A"), ord("Z")+1)))
@@ -172,6 +180,7 @@ def create_app() -> quart.Quart:
app.config["SNIKKET_DOMAIN"] = config.domain
app.config["SITE_NAME"] = config.site_name or config.domain
app.config["AVATAR_CACHE_TTL"] = config.avatar_cache_ttl
app.config["APPLE_STORE_URL"] = config.apple_store_url
app.context_processor(proc)
app.register_error_handler(
@@ -194,6 +203,44 @@ def create_app() -> quart.Quart:
return redirect(url_for('main.login'))
@app.route("/site.webmanifest")
def site_manifest() -> quart.Response:
# this is needed for icons
return jsonify(
{
"name": "Snikket",
"short_name": "Snikket",
"icons": [
{
"src": url_for(
"static",
filename="img/android-chrome-192x192.png",
),
"sizes": "192x192",
"type": "image/png"
},
{
"src": url_for(
"static",
filename="img/android-chrome-256x256.png",
),
"sizes": "256x256",
"type": "image/png"
},
{
"src": url_for(
"static",
filename="img/android-chrome-512x512.png",
),
"sizes": "512x512",
"type": "image/png"
},
],
"theme_color": "#fbfdff",
"background_color": "#fbfdff",
}
)
logging_config = app.config.get("LOGGING_CONFIG")
if logging_config is not None:
if isinstance(logging_config, dict):

View File

@@ -1,4 +1,3 @@
import asyncio
import json
import typing
@@ -251,7 +250,11 @@ 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]:
invite_info = await client.get_invite_by_id(id_)
try:
invite_info = await client.get_invite_by_id(id_)
except aiohttp.ClientResponseError as exc:
if exc.status == 404:
abort(404)
circles = await client.list_groups()
circle_map = {
circle.id_: circle
@@ -358,25 +361,21 @@ async def edit_circle(id_: str) -> typing.Union[str, quart.Response]:
return redirect(url_for(".circles"))
raise
circle_members = await asyncio.gather(*(
client.get_user_by_localpart(
localpart,
session=session,
)
for localpart in sorted(circle.members)
))
users = await client.list_users()
users = sorted(
await client.list_users(),
key=lambda x: x.localpart
)
circle_members = [
user for user in users
if user.localpart in circle.members
]
form = EditCircleForm()
form.user_to_add.choices = sorted(
(
(u.localpart, u.localpart)
for u in users
if u.localpart not in circle.members
),
key=lambda x: x[1]
)
form.user_to_add.choices = [
(user.localpart, user.localpart)
for user in users
if user.localpart not in circle.members
]
valid_users = [x[0] for x in form.user_to_add.choices]
invite_form = InvitePost()

View File

@@ -7,6 +7,7 @@ import aiohttp
import quart.flask_patch
from quart import (
Blueprint,
current_app,
render_template,
redirect,
url_for,
@@ -56,6 +57,14 @@ async def view(id_: str) -> str:
return await render_template("invite_invalid.html")
raise
if invite.reset_localpart is not None:
return await render_template(
"invite_reset_view.html",
invite=invite,
invite_id=id_,
account_jid="{}@{}".format(invite.reset_localpart, invite.domain)
)
play_store_url = (
"https://play.google.com/store/apps/details?" +
urllib.parse.urlencode(
@@ -68,9 +77,7 @@ async def view(id_: str) -> str:
),
)
)
apple_store_url = (
"https://apps.apple.com/us/app/tigase-messenger/id1153516838"
)
apple_store_url = current_app.config["APPLE_STORE_URL"]
return await render_template(
"invite_view.html",
@@ -106,7 +113,14 @@ class RegisterForm(flask_wtf.FlaskForm): # type:ignore
@bp.route("/<id_>/register", methods=["GET", "POST"])
async def register(id_: str) -> typing.Union[str, quart.Response]:
invite = await client.get_public_invite_by_id(id_)
try:
invite = await client.get_public_invite_by_id(id_)
except aiohttp.ClientResponseError as exc:
if exc.status == 404:
return redirect(url_for(".view", id_=id_))
if invite.reset_localpart is not None:
return redirect(url_for(".reset", id_=id_))
form = RegisterForm()
if form.validate_on_submit():
@@ -145,6 +159,66 @@ async def register(id_: str) -> typing.Union[str, quart.Response]:
)
class ResetForm(flask_wtf.FlaskForm): # type:ignore
password = wtforms.PasswordField(
_l("Password"),
)
password_confirm = wtforms.PasswordField(
_l("Confirm password"),
validators=[wtforms.validators.InputRequired(),
wtforms.validators.EqualTo(
"password",
_l("The passwords must match")
)]
)
action_reset = wtforms.SubmitField(
_l("Change password")
)
@bp.route("/<id_>/reset", methods=["GET", "POST"])
async def reset(id_: str) -> typing.Union[str, quart.Response]:
try:
invite = await client.get_public_invite_by_id(id_)
except aiohttp.ClientResponseError as exc:
if exc.status == 404:
return redirect(url_for(".view", id_=id_))
if invite.reset_localpart is None:
return redirect(url_for(".register", id_=id_))
form = ResetForm()
if form.validate_on_submit():
# log the user in? show a guide? no idea.
try:
jid = await client.register_with_token(
username=invite.reset_localpart,
password=form.password.data,
token=id_,
)
except aiohttp.ClientResponseError as exc:
if exc.status == 403:
form.localpart.errors.append(
_l("Registration was declined for unknown reasons")
)
elif exc.status == 404:
return redirect(url_for(".view", id_=id_))
else:
raise
else:
http_session[INVITE_SESSION_JID] = jid
return redirect(url_for(".reset_success"))
return await render_template(
"invite_reset.html",
invite=invite,
form=form,
)
@bp.route("/success", methods=["GET", "POST"])
async def success() -> str:
return await render_template(
@@ -153,6 +227,14 @@ async def success() -> str:
)
@bp.route("/success/reset", methods=["GET", "POST"])
async def reset_success() -> str:
return await render_template(
"invite_reset_success.html",
jid=http_session.get(INVITE_SESSION_JID, ""),
)
@bp.route("/-")
async def index() -> quart.Response:
return redirect(url_for("index"))

View File

@@ -121,6 +121,8 @@ class AdminGroupInfo:
class PublicInviteInfo:
inviter: typing.Optional[str]
xmpp_uri: str
reset_localpart: typing.Optional[str]
domain: str
@classmethod
def from_api_response(
@@ -130,6 +132,8 @@ class PublicInviteInfo:
return cls(
inviter=data.get("inviter") or None,
xmpp_uri=data["uri"],
reset_localpart=data.get("reset", None),
domain=data["domain"],
)
@@ -140,6 +144,7 @@ class HTTPSessionManager:
async def _create(self) -> aiohttp.ClientSession:
return aiohttp.ClientSession(headers={
"Accept": "application/json",
"Host": current_app.config["SNIKKET_DOMAIN"],
})
async def teardown(self, exc: typing.Optional[BaseException]) -> None:
@@ -200,6 +205,7 @@ class HTTPAuthSessionManager(HTTPSessionManager):
headers={
"Authorization": "Bearer {}".format(token),
"Accept": "application/json",
"Host": current_app.config["SNIKKET_DOMAIN"],
}
)

View File

@@ -222,12 +222,19 @@ div.form {
}
div.form.layout-expanded {
label {
label, legend {
display: block;
font-weight: bold;
color: $gray-200;
}
fieldset {
display: block;
border: 0;
padding: 0;
margin: 0;
}
input[type="radio"] + label, input[type="checkbox"] + label {
font-weight: inherit;
color: inherit;
@@ -264,11 +271,6 @@ div.form.layout-expanded {
}
}
ul[id] {
padding: $w-s1 0;
padding-left: $w-l1;
}
input[type="checkbox"], input[type="radio"] {
position: absolute;
z-index: -1;
@@ -408,11 +410,12 @@ div.form.layout-expanded {
}
}
.f-ebox > ul {
fieldset > ul {
/* radio group */
list-style-type: none;
margin: 0;
padding: 0;
padding: $w-s1 0;
padding-left: $w-l1;
> li {
margin: 0;
@@ -474,7 +477,7 @@ input[type="submit"], button, .button {
&.primary {
background: linear-gradient(0deg, $primary-500, $primary-600);
box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.1);
color: $primary-900;
color: white;
border: none;
/* TODO: fix vertical rhyhtm ... */
border-radius: $w-s4;
@@ -780,7 +783,7 @@ body#login {
/* admin area specials */
#topbar > div.admin-note {
color: $alert-500;
color: $alert-400;
font-size: nth($h-sizes, 5);
margin-left: $w-l1;
}
@@ -885,7 +888,7 @@ nav.welcome {
&.wide {
flex: 1 0 auto;
display: block;
/* display: block; */
}
.button {
@@ -1043,6 +1046,12 @@ pre.guru-meditation {
}
}
body#login {
.form-title {
color: $primary-800;
}
}
body > footer {
background-color: $gray-200;
color: $gray-800;
@@ -1090,14 +1099,10 @@ pre.guru-meditation {
}
}
div.welcome-cards {
& > .card {
background: black;
}
& > a.card {
& > h2 {
color: $primary-800;
nav.welcome {
> ul {
> li {
background-color: black;
}
}
}
@@ -1144,11 +1149,11 @@ pre.guru-meditation {
}
&.secondary {
background: linear-gradient(0deg, $gray-400, $gray-500);
background: linear-gradient(0deg, $gray-200, $gray-300);
color: $gray-900;
&:hover, &:focus {
background: linear-gradient(0deg, $gray-500, $gray-600);
background: linear-gradient(0deg, $gray-300, $gray-400);
color: white;
}

View File

@@ -183,3 +183,13 @@ div.form.layout-expanded .lwrap {
background-attachment: fixed;
background-size: cover;
}
/* dark mode */
@media (prefers-color-scheme: dark) {
div.form.layout-expanded .lwrap {
span {
background: $gray-200;
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="260.000000pt" height="260.000000pt" viewBox="0 0 260.000000 260.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,260.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M1169 2496 c-2 -2 -24 -6 -49 -9 -51 -6 -196 -42 -237 -59 -360 -146
-607 -401 -723 -748 -49 -143 -62 -230 -62 -386 0 -177 27 -297 109 -498 115
-282 109 -516 -18 -660 l-30 -35 38 6 c151 22 316 93 400 172 12 12 25 21 28
21 3 0 41 -20 83 -45 181 -104 366 -152 592 -153 133 0 240 16 362 54 84 27
228 92 228 103 0 4 -14 15 -31 25 -254 150 -478 469 -534 761 -5 22 -10 47
-11 55 -21 97 -21 303 1 409 58 293 200 534 420 716 33 28 81 64 108 80 26 17
47 33 47 36 0 3 -39 24 -87 47 -86 40 -217 83 -298 97 -46 7 -329 17 -336 11z
m-117 -379 c90 -53 140 -137 140 -237 0 -231 -271 -353 -445 -199 -62 54 -89
113 -90 197 -1 125 70 223 193 263 49 16 155 4 202 -24z"/>
<path d="M847 2029 c-56 -29 -96 -101 -91 -161 12 -128 153 -196 261 -124 37
24 73 83 73 118 0 23 -4 25 -45 24 -75 -2 -108 46 -93 139 2 17 -3 20 -33 21
-20 1 -52 -7 -72 -17z"/>
<path d="M1885 2218 c-136 -100 -265 -251 -340 -398 -40 -80 -92 -223 -100
-281 -4 -24 -8 -46 -10 -49 -2 -3 -6 -35 -9 -71 l-6 -65 33 -1 c125 -3 325
-57 461 -124 77 -39 178 -101 204 -126 7 -7 17 -13 20 -13 14 0 178 -166 216
-219 39 -53 39 -53 52 -30 18 32 63 173 75 234 71 364 -31 723 -281 997 -64
70 -219 198 -238 198 -4 0 -38 -23 -77 -52z"/>
<path d="M1418 1245 c-7 -8 17 -171 37 -244 9 -35 28 -93 42 -128 l26 -64 41
7 c136 22 368 118 446 182 l31 27 -50 33 c-146 94 -330 161 -491 178 -36 3
-68 8 -71 10 -3 2 -8 1 -11 -1z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@@ -22,13 +22,13 @@
<td class="collapsible">{{ circle.members | length }}</td>
<td class="nowrap">
{%- call custom_form_button("create_link", invite_form.circles.name, circle.id_, slim=True, class="secondary accent") -%}
{% trans circle_name=circle.name %}Create invitation to circle {{ circle_name }}{% endtrans %}
{% trans circle_name=(circle | circle_name) %}Create invitation to circle {{ circle_name }}{% endtrans %}
{%- endcall -%}
{%- call action_button("people", url_for(".edit_circle", id_=circle.id_) + "#members", class="secondary") -%}
{% trans circle_name=circle.name %}Manage members of {{ circle_name }}{% endtrans %}
{% trans circle_name=(circle | circle_name) %}Manage members of {{ circle_name }}{% endtrans %}
{%- endcall -%}
{%- call action_button("edit", url_for(".edit_circle", id_=circle.id_), class="primary") -%}
{% trans circle_name=circle.name %}Edit circle {{ circle_name }}{% endtrans %}
{% trans circle_name=(circle | circle_name) %}Edit circle {{ circle_name }}{% endtrans %}
{%- endcall -%}
</td>
</tr>

View File

@@ -5,8 +5,10 @@
<h2 class="form-title">{% trans %}Create new invitation{% endtrans %}</h2>
<p class="form-descr weak">{% trans %}Create a new invitation link to invite more users to your Snikket service by clicking the button below.{% endtrans %}</p>
<div class="f-ebox">
{{ invite_form.type_.label }}
{{ invite_form.type_ }}
<fieldset>{#- -#}
<legend>{{ invite_form.type_.label.text }}</legend>
{{- invite_form.type_ -}}
</fieldset>
</div>
<div class="f-ebox">
{{ invite_form.lifetime.label }}

View File

@@ -9,8 +9,9 @@
<form method="POST">
{{- form.csrf_token -}}
{%- if target_circle.id_ == "default" -%}
<input type="hidden" name="{{ form.name.name }}" value="{{ form.name.data }}">{#- -#}
<div class="box hint form layout-expanded">
<header>{% trans %}This circle cannot be modified{% endtrans %}</header>
<header>{% trans %}This is your main circle{% endtrans %}</header>
<p>{% trans %}This circle is managed automatically and cannot be removed or renamed.{% endtrans %}</p>
{%- if target_circle.muc_jid -%}
<div><label for="circle-muc-jid">{% trans %}Group chat address{% endtrans %}</label></div>
@@ -89,8 +90,8 @@
</div>
</div>
{%- else -%}
<div class="box hint el-2">
<header>{% trans %}No users left{% endtrans %}</header>
<div class="elevated box success el-2">
<header>{% trans %}All users added{% endtrans %}</header>
<p>{% trans %}All users on this service are already in this circle.{% endtrans %}</p>
</div>
{%- endif -%}

View File

@@ -12,8 +12,8 @@
<dl>
<dt>{% trans %}Valid until{% endtrans %}</dt>
<dd>{{ invite.expires | format_date }}</dd>
<dt>{% trans %}Link{% endtrans %}</dt>
<dd>{% call showuri(invite.landing_page) %}{% endcall %}</dd>
<dt><label for="link-field">{% trans %}Link{% endtrans %}</label></dt>
<dd>{% call showuri(invite.landing_page, id_="link-field") %}{% endcall %}</dd>
<dt>{% trans %}Invitation type{% endtrans %}</dt>
<dd>{% call invite_type_description(invite) %}{% endcall %}</dd>
{%- set ngroups = invite.group_ids | length -%}

View File

@@ -1,32 +0,0 @@
{% extends "admin_app.html" %}
{% block content %}
<h1>{% trans user_name=target_user.localpart %}Edit user {{ user_name }}{% endtrans %}</h1>
<div class="form layout-expanded"><form method="POST">
<h2 class="form-title">{% trans %}User information{% endtrans %}</h2>
{{ form.csrf_token }}
<div class="f-ebox">
{{ form.username.label }}
{{ form.username(readonly="readonly") }}
</div>
<div class="f-ebox">
{{ form.nickname.label }}
{{ form.nickname(readonly="readonly") }}
</div>
<div class="f-ebox">
{{ form.email.label }}
{{ form.email(readonly="readonly") }}
</div>
<div class="f-ebox">
{{ form.phone.label }}
{{ form.phone(readonly="readonly") }}
</div>
{{ form.action_save(class="primary") }}
<input type="submit" class="a11y-only">
<h2 class="form-title">{% trans %}Password reset{% endtrans %}</h2>
<p>{% trans %}If the user has forgotten their password, use the below button to create a password reset link. The password reset link can be used once to change the password of the account. Transmit the link to the user via a secure channel.{% endtrans %}</p>
{{ form.action_create_reset_link(class="secondary accent") }}
<h2 class="form-title">{% trans %}Delete user{% endtrans %}</h2>
<p>{% trans %}{% endtrans %}</p>
{{ form.action_create_reset_link(class="secondary accent") }}
</form></div>
{% endblock %}

View File

@@ -33,7 +33,7 @@
</li>
<li>
{#- -#}
<p>{% trans %}Go back to your users web portal page.{% endtrans %}</p>
<p>{% trans %}Go back to your user's web portal page.{% endtrans %}</p>
{#- -#}
<div>{% call standard_button("logout", url_for("user.index"), class="secondary") %}{% trans %}Exit admin panel{% endtrans %}{% endcall %}</div>
{#- -#}

View File

@@ -14,8 +14,8 @@
<dd>
<dt>{% trans %}Valid until{% endtrans %}</dt>
<dd>{{ reset_link.expires | format_date }}</dd>
<dt>{% trans %}Link{% endtrans %}</dt>
<dd>{% call showuri(reset_link.landing_page) %}{% endcall %}</dd>
<dt><label for="link-field">{% trans %}Link{% endtrans %}</label></dt>
<dd>{% call showuri(reset_link.landing_page, id_="link-field") %}{% endcall %}</dd>
</dd>
<div class="f-bbox">
{%- call custom_form_button("remove_link", form.action_revoke.name, reset_link.id_, class="secondary danger") -%}

View File

@@ -8,11 +8,11 @@
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/common.css') }}">
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/app.css') }}">
{% endblock %}
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
<link rel="apple-touch-icon" sizes="180x180" href="{{ url_for("static", filename="img/apple-touch-icon.png") }}">
<link rel="icon" type="image/png" sizes="32x32" href="{{ url_for("static", filename="img/favicon-32x32.png") }}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ url_for("static", filename="img/favicon-16x16.png") }}">
<link rel="manifest" href="{{ url_for("site_manifest") }}">
<link rel="mask-icon" href="{{ url_for("static", filename="img/safari-pinned-tab.svg") }}" color="#5bbad5">
<meta name="msapplication-TileColor" content="#fbd308">
<meta name="theme-color" content="#fbd308">
</head>

View File

@@ -3,7 +3,7 @@
{% block content %}
<div class="elevated box el-3">
<h1>{% trans site_name=config["SITE_NAME"] %}Invite to {{ site_name }}{% endtrans %}</h1>
<div class="powered-by">{% trans logo_url=url_for("static", filename="img/snikket-logo.svg") %}Powered by <img src="{{ logo_url }}" alt="Snikket">{% endtrans %}</div>
<div class="powered-by">{% trans logo_url=url_for("static", filename="img/snikket-logo-text.svg") %}Powered by <img src="{{ logo_url }}" alt="Snikket">{% endtrans %}</div>
<div class="box alert">
<header>{% trans %}Invite expired{% endtrans %}</header>
<p>{% trans %}Sorry, it looks like this invitation link has expired!{% endtrans %}</p>

View File

@@ -7,7 +7,7 @@
{% block content %}
<div class="elevated box el-3">
<h1>{% trans site_name=config["SITE_NAME"] %}Register on {{ site_name }}{% endtrans %}</h1>
<div class="powered-by">{% trans logo_url=url_for("static", filename="img/snikket-logo.svg") %}Powered by <img src="{{ logo_url }}" alt="Snikket">{% endtrans %}</div>
<div class="powered-by">{% trans logo_url=url_for("static", filename="img/snikket-logo-text.svg") %}Powered by <img src="{{ logo_url }}" alt="Snikket">{% endtrans %}</div>
<p>{% trans site_name=config["SITE_NAME"] %}{{ site_name }} is using Snikket - a secure, privacy-friendly chat app.{% endtrans %}</p>
<h2>{% trans %}Create an account{% endtrans %}</h2>
<p>{% trans %}Creating an account will allow to communicate with other people using the Snikket app or compatible software. If you already have the app installed, we recommend that you continue the account creation process inside the app by clicking on the button below:{% endtrans %}</p>

View File

@@ -0,0 +1,35 @@
{% extends "unauth.html" %}
{% from "library.j2" import standard_button, render_errors %}
{% block style %}
{{ super() }}
<link rel="stylesheet" type="text/css" href="{{ url_for("static", filename="css/invite.css") }}">
{% endblock %}
{% block head_lead %}
{{ super() }}
<title>{% trans %}Reset your password | Snikket{% endtrans %}</title>
<script async type="text/javascript" src="{{ url_for("static", filename="js/qrcode.min.js") }}"></script>
{% endblock %}
{% block content %}
<form method="POST"><div class="form layout-expanded">
{{- form.csrf_token -}}
<h1 class="form-title">{% trans %}Reset your password online{% endtrans %}</h1>
<p class="form-desc weak">{% trans %}To reset your password online, fill out the fields below and confirm using the button.{% endtrans %}</p>
{%- call render_errors(form) %}{% endcall -%}
<div class="f-ebox">
{{ form.password.label }}
{{ form.password }}
</div>
<div class="f-ebox">
{{ form.password_confirm.label }}
{{ form.password_confirm }}
</div>
<div class="f-bbox">
{%- call form_button("passwd", form.action_reset, class="primary") -%}{%- endcall -%}
</div>
</div></form>
<script type="text/javascript">
var onload = function() {
apply_qr_code(document.getElementById("qr-uri"));
};
</script>
{% endblock %}

View File

@@ -0,0 +1,14 @@
{% extends "unauth.html" %}
{% from "library.j2" import standard_button %}
{% block head_lead %}
{{ super() }}
<title>{% trans %}Password reset successful | Snikket{% endtrans %}</title>
{% endblock %}
{% block content %}
<h1>{% trans %}Password reset successful{% endtrans %}</h1>
<div class="box success">
<header>{% trans %}Your password has been changed{% endtrans %}</header>
<p>{% trans %}You can now log in using your new password.{% endtrans %}</p>
<p>{% trans %}You can now safely close this page.{% endtrans %}</p>
</div>
{% endblock %}

View File

@@ -0,0 +1,37 @@
{% extends "unauth.html" %}
{% from "library.j2" import standard_button %}
{% block style %}
{{ super() }}
<link rel="stylesheet" type="text/css" href="{{ url_for("static", filename="css/invite.css") }}">
{% endblock %}
{% block head_lead %}
{{ super() }}
<title>{% trans %}Reset your password | Snikket{% endtrans %}</title>
<script async type="text/javascript" src="{{ url_for("static", filename="js/invite-magic.js") }}"></script>
<script async type="text/javascript" src="{{ url_for("static", filename="js/qrcode.min.js") }}"></script>
{% endblock %}
{% block content %}
<h1>{% trans %}Reset your password{% endtrans %}</h1>
<p>{% trans account_jid=account_jid %}This page allows you to reset the password of your account, <strong>{{ account_jid }}</strong>, once.{% endtrans %}</p>
<div class="elevated el-2">
<h2>{% trans %}Using the app{% endtrans %}</h2>
<p>{% trans %}To reset your password using the Snikket App, tap the button below.{% endtrans %}</p>
<div>
{%- call standard_button("exit_to_app", invite.xmpp_uri, class="secondary") -%}
{% trans %}Open the app{% endtrans %}
{%- endcall -%}
</div>
<img class="float-right" id="tutorial-scan" aria-hidden="true" alt="" src="{{ url_for("static", filename="img/tutorial-scan.png") }}">
<p>{% trans %}Alternatively, you can scan the below code with the Snikket App using 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>
<p>{% trans %}You will then be prompted to enter a new password for your account.{% endtrans %}</p>
<div id="qr-uri" data-qrdata="{{ invite.xmpp_uri }}" class="qr"></div>
<h2>{% trans %}Alternatives{% endtrans %}</h2>
<p>{% trans reset_url=url_for(".reset", id_=invite_id) %}You can also <a href="{{ reset_url }}">reset your password online</a> if the above button or scanning the QR code does not work for you.{% endtrans %}</p>
</div>
<script type="text/javascript">
var onload = function() {
apply_qr_code(document.getElementById("qr-uri"));
};
</script>
{% endblock %}

View File

@@ -8,9 +8,9 @@
{% block content %}
<div class="elevated box el-3 form layout-expanded">
<h1>{% trans site_name=config["SITE_NAME"] %}Successfully registered on {{ site_name }}{% endtrans %}</h1>
<div class="powered-by">{% trans logo_url=url_for("static", filename="img/snikket-logo.svg") %}Powered by <img src="{{ logo_url }}" alt="Snikket">{% endtrans %}</div>
<div class="powered-by">{% trans logo_url=url_for("static", filename="img/snikket-logo-text.svg") %}Powered by <img src="{{ logo_url }}" alt="Snikket">{% endtrans %}</div>
<p>{% trans site_name=config["SITE_NAME"], jid=jid %}Congratulations! You successfully registered on {{ site_name }} as {{ jid }}.{% endtrans %}</p>
<input type="text" readonly="readonly" value="{{ jid }}">
<label for="address" class="a11y-only">{% trans %}Your address{% endtrans %}</label><input type="text" readonly="readonly" value="{{ jid }}" id="address">
{%- call clipboard_button(jid, show_label=True) -%}
{% trans %}Copy address{% endtrans %}
{%- endcall -%}

View File

@@ -10,18 +10,24 @@
{% block content %}
<div class="elevated box el-3">
<h1>{% trans site_name=config["SITE_NAME"] %}Invite to {{ site_name }}{% endtrans %}</h1>
<div class="powered-by">{% trans logo_url=url_for("static", filename="img/snikket-logo.svg") %}Powered by <img src="{{ logo_url }}" alt="Snikket">{% endtrans %}</div>
<div class="powered-by">{% trans logo_url=url_for("static", filename="img/snikket-logo-text.svg") %}Powered by <img src="{{ logo_url }}" alt="Snikket">{% endtrans %}</div>
{%- if invite.inviter -%}
<p>{% trans site_name=config["SITE_NAME"], inviter_name=invite.inviter %}You have been invited to chat with {{ inviter_name }} using Snikket, a secure, privacy-friendly chat app on {{ site_name }}.{% endtrans %}</p>
{%- else -%}
<p>{% trans site_name=config["SITE_NAME"] %}You have been invited to chat on {{ site_name }} using Snikket, a secure, privacy-friendly chat app.{% endtrans %}</p>
{%- endif -%}
<h2>{% trans %}Get started{% endtrans %}</h2>
{%- if apple_store_url -%}
<p>{% trans %}Install the Snikket App on your Android or iOS device.{% endtrans %}</p>
{%- else -%}
<p>{% trans ios_info_url="https://snikket.org/faq/#is-there-an-ios-app" %}Install the Snikket App on your Android device (<a href="{{ ios_info_url }}" rel="noopener noreferrer" target="_blank">iOS coming soon!</a>).{% endtrans %}</p>
{%- endif -%}
<div class="install-buttons">
<ul>
<li><a href="{{ play_store_url }}"><img alt='{% trans %}Get it on Google Play{% endtrans %}' src='https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png' class="play"/></a></li>
{%- if apple_store_url -%}
<li><a href="{{ apple_store_url }}"><img alt='{% trans %}Download on the App Store{% endtrans %}' src="{{ apple_store_badge() }}" class="apple"></a></li>
{%- endif -%}
</ul>
{%- call standard_button("qrcode", "#qr-modal", class="primary", onclick="open_modal(this); return false;") -%}
{% trans %}Not on mobile?{% endtrans %}

View File

@@ -10,11 +10,11 @@
{%- endif -%}
{%- endmacro %}
{% macro showuri(uri, caller=None) %}
{% macro showuri(uri, caller=None, id_=None) %}
{%- if uri is none -%}
<em>—</em>
{%- else -%}
<div><input type="text" readonly="readonly" value="{{ uri }}"></div>
<div><input type="text" {% if id_ %}id="{{ id_ }}" {% endif %}readonly="readonly" value="{{ uri }}"></div>
<div>{% call clipboard_button(uri, show_label=True) %}{% trans %}Copy link{% endtrans %}{% endcall %}</div>
{%- endif -%}
{% endmacro %}
@@ -26,7 +26,7 @@
{% macro standard_button(icon_name, href, caller=None, class=None, onclick=None) -%}
{%- set label = caller() -%}
<a href="{{ href }}" class="button {% if class %}{{ class }}{% endif %}" aria-label="{{ a11y }}" title="{{ a11y }}"{% if onclick %} onclick="{{ onclick }}"{% endif %}>{% call icon(icon_name) %}{% endcall %}<span>{{ label }}</span></a>
<a href="{{ href }}" class="button {% if class %}{{ class }}{% endif %}" {% if onclick %} onclick="{{ onclick }}"{% endif %}>{% call icon(icon_name) %}{% endcall %}<span>{{ label }}</span></a>
{%- endmacro %}
{% macro form_button(icon_name, button_obj, caller=None, class=None) -%}
@@ -60,6 +60,7 @@
{% macro clipboard_button(data, show_label=False, caller=None, class=None) -%}
{%- set label = caller() -%}
<a class="button{% if class %} {{ class }}{% endif %}"
href="#"
{% if not show_label %}
aria-label="{{ label }}"
title="{{ label }}"

View File

@@ -17,7 +17,7 @@
<div class="details">
<div class="display-name">{{ user_info.display_name | default(user_info.username) }}</div>
<div class="address">
<input value="{{ user_info.address }}">
<input value="{{ user_info.address }}" aria-label="{% trans %}Your XMPP address{% endtrans %}">
{% call clipboard_button(user_info.address) %}{% trans %}Copy address{% endtrans %}{% endcall %}
</div>
</div>
@@ -27,8 +27,10 @@
{#- -#}
{# <img aria-hidden="true" src="{{ url_for("static", filename="img/illus-profile.svg") }}"> #}
{#- -#}
<div>{% call standard_button("edit", url_for(".profile"), class="primary") %}{% trans %}Edit profile{% endtrans %}{% endcall %}</div>
<div>{% call standard_button("passwd", url_for(".change_pw"), class="secondary") %}{% trans %}Change password{% endtrans %}{% endcall %}</div>
<div>
<div>{% call standard_button("edit", url_for(".profile"), class="primary") %}{% trans %}Edit profile{% endtrans %}{% endcall %}</div>
<div>{% call standard_button("passwd", url_for(".change_pw"), class="secondary") %}{% trans %}Change password{% endtrans %}{% endcall %}</div>
</div>
{#- -#}
</li>
{% if user_info.is_admin %}

View File

@@ -5,7 +5,7 @@
{% endblock %}
{% block content %}
<div class="form layout-expanded"><form method="POST">
<h2 class="form-title">{% trans %}Change your password{% endtrans %}</h2>
<h1 class="form-title">{% trans %}Change your password{% endtrans %}</h1>
<p class="form-desc weak">{% trans %}To change your password, you need to provide the current password as well as the new one. To reduce the chance of typos, we ask for your new password twice.{% endtrans %}</p>
{{ form.csrf_token }}
{%- call render_errors(form) -%}

View File

@@ -4,6 +4,7 @@
<title>Snikket Web Portal</title>
{% endblock %}
{% block content %}
<h1>{% trans %}Update your profile{% endtrans %}</h1>
<div class="form layout-expanded"><form method="POST" enctype="multipart/form-data">
<h2 class="form-title">{% trans %}Profile{% endtrans %}</h2>
{{ form.csrf_token }}
@@ -21,8 +22,10 @@
<h3 class="form-title">{% trans %}Visibility{% endtrans %}</h3>
<p class="form-descr weak">{% trans %}This section allows you to control who can see your profile information, like avatar and nickname.{% endtrans %}</p>
<div class="f-ebox">
{{ form.profile_access_model.label }}
{{ form.profile_access_model }}
<fieldset>{#- -#}
<legend>{{ form.profile_access_model.label.text }}</legend>
{{- form.profile_access_model -}}
</fieldset>
</div>
<div class="f-bbox">
{%- call standard_button("back", url_for('.index'), class="secondary") %}{% trans %}Back{% endtrans %}{% endcall -%}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2021-01-27 17:16+0100\n"
"PO-Revision-Date: 2021-01-23 17:06+0000\n"
"Last-Translator: Matthew Wild <matthew@snikket.org>\n"
"POT-Creation-Date: 2021-01-30 12:45+0100\n"
"PO-Revision-Date: 2021-02-02 21:01+0000\n"
"Last-Translator: riccio <unriccio@email.it>\n"
"Language-Team: English (United Kingdom) <https://i18n.sotecware.net/projects/"
"snikket/web-portal/en_GB/>\n"
"Language: en_GB\n"
@@ -57,16 +57,14 @@ msgid "Four weeks"
msgstr "Four weeks"
#: snikket_web/admin.py:152 snikket_web/templates/admin_edit_invite.html:17
#, fuzzy
#| msgid "View invitation"
msgid "Invitation type"
msgstr "View invitation"
msgstr "Invitation type"
#: snikket_web/admin.py:154 snikket_web/templates/library.j2:115
#: snikket_web/admin.py:154 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr ""
#: snikket_web/admin.py:155 snikket_web/templates/library.j2:113
#: snikket_web/admin.py:155 snikket_web/templates/library.j2:114
msgid "Group"
msgstr ""
@@ -78,29 +76,29 @@ msgstr "New invitation link"
msgid "Revoke"
msgstr "Revoke"
#: snikket_web/admin.py:279 snikket_web/admin.py:323
#: snikket_web/admin.py:283 snikket_web/admin.py:327
msgid "Name"
msgstr "Name"
#: snikket_web/admin.py:284 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:288 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr "Create circle"
#: snikket_web/admin.py:328
#: snikket_web/admin.py:332
msgid "Select user"
msgstr "Select user"
#: snikket_web/admin.py:333
#: snikket_web/admin.py:337
#, fuzzy
#| msgid "Create circle"
msgid "Update circle"
msgstr "Create circle"
#: snikket_web/admin.py:337
#: snikket_web/admin.py:341
msgid "Delete circle permanently"
msgstr "Delete circle permanently"
#: snikket_web/admin.py:343
#: snikket_web/admin.py:347
msgid "Add user"
msgstr "Add user"
@@ -108,44 +106,47 @@ msgstr "Add user"
msgid "Main"
msgstr "Main"
#: snikket_web/invite.py:86
#: snikket_web/invite.py:93
msgid "Username"
msgstr ""
#: snikket_web/invite.py:90 snikket_web/main.py:41
#: snikket_web/invite.py:97 snikket_web/invite.py:164 snikket_web/main.py:41
msgid "Password"
msgstr "Password"
#: snikket_web/invite.py:94
#: snikket_web/invite.py:101 snikket_web/invite.py:168
#, fuzzy
#| msgid "Confirm new password"
msgid "Confirm password"
msgstr "Confirm new password"
#: snikket_web/invite.py:98
#, fuzzy
#| msgid "The new passwords must match."
#: snikket_web/invite.py:105 snikket_web/invite.py:172
msgid "The passwords must match"
msgstr "The new passwords must match."
msgstr "The passwords must match"
#: snikket_web/invite.py:103
#: snikket_web/invite.py:110
#, fuzzy
#| msgid "Create circle"
msgid "Create account"
msgstr "Create circle"
#: snikket_web/invite.py:123
#: snikket_web/invite.py:137
msgid "That username is already taken"
msgstr ""
#: snikket_web/invite.py:127
#: snikket_web/invite.py:141 snikket_web/invite.py:205
msgid "Registration was declined for unknown reasons"
msgstr ""
#: snikket_web/invite.py:131
#: snikket_web/invite.py:145
msgid "The username is not valid"
msgstr ""
#: snikket_web/invite.py:177 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:32
msgid "Change password"
msgstr "Change password"
#: snikket_web/main.py:36
msgid "Address"
msgstr "Address"
@@ -173,10 +174,8 @@ msgid "Confirm new password"
msgstr "Confirm new password"
#: snikket_web/user.py:35
#, fuzzy
#| msgid "The new passwords must match."
msgid "The new passwords must match"
msgstr "The new passwords must match."
msgstr "The new passwords must match"
#: snikket_web/user.py:42
msgid "Sign out"
@@ -207,7 +206,7 @@ msgstr "Avatar"
msgid "Profile visibility"
msgstr "Profile visibility"
#: snikket_web/templates/user_home.html:7 snikket_web/user.py:68
#: snikket_web/user.py:68
msgid "Update profile"
msgstr "Update profile"
@@ -294,7 +293,7 @@ msgid "Admin area"
msgstr "Admin dashboard"
#: snikket_web/templates/admin_circles.html:4
#: snikket_web/templates/admin_home.html:11
#: snikket_web/templates/admin_home.html:23
msgid "Manage circles"
msgstr "Manage circles"
@@ -403,7 +402,6 @@ msgid "Delete user %(user_name)s"
msgstr "Delete user %(user_name)s"
#: snikket_web/templates/admin_delete_user.html:6
#: snikket_web/templates/admin_edit_user.html:28
msgid "Delete user"
msgstr "Delete user"
@@ -428,80 +426,81 @@ msgid ""
msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_edit_circle.html:43
#: snikket_web/templates/admin_edit_invite.html:45
#: snikket_web/templates/admin_edit_circle.html:44
#: snikket_web/templates/admin_edit_invite.html:49
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:13
#: snikket_web/templates/user_passwd.html:30
#: snikket_web/templates/user_profile.html:25
#: snikket_web/templates/user_profile.html:31
msgid "Back"
msgstr "Back"
#: snikket_web/templates/admin_edit_circle.html:13
msgid "This circle cannot be modified"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:14
#: snikket_web/templates/admin_edit_circle.html:15
msgid "This circle is managed automatically and cannot be removed or renamed."
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:16
#: snikket_web/templates/admin_edit_circle.html:32
#: snikket_web/templates/admin_edit_circle.html:17
#: snikket_web/templates/admin_edit_circle.html:33
#, fuzzy
#| msgid "Email address"
msgid "Group chat address"
msgstr "Email address"
#: snikket_web/templates/admin_edit_circle.html:19
#: snikket_web/templates/admin_edit_circle.html:35
#: snikket_web/templates/admin_edit_circle.html:20
#: snikket_web/templates/admin_edit_circle.html:36
#: snikket_web/templates/invite_success.html:15
#: snikket_web/templates/user_home.html:21
#, fuzzy
#| msgid "Email address"
msgid "Copy address"
msgstr "Email address"
#: snikket_web/templates/admin_edit_circle.html:25
#: snikket_web/templates/admin_edit_circle.html:26
msgid "Circle information"
msgstr "Circle information"
#: snikket_web/templates/admin_edit_circle.html:38
#: snikket_web/templates/admin_edit_circle.html:39
msgid "This circle has no group chat associated."
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:47
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "Delete circle"
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:49
msgid "Deleting a circle does not delete any users in the circle."
msgstr "Deleting a circle does not delete any users in the circle."
#: snikket_web/templates/admin_edit_circle.html:54
#: snikket_web/templates/admin_edit_circle.html:55
msgid "Circle members"
msgstr "Circle members"
#: snikket_web/templates/admin_edit_circle.html:69
#: snikket_web/templates/admin_edit_circle.html:70
#, python-format
msgid "Remove user %(username)s from circle"
msgstr "Remove user %(username)s from circle"
#: snikket_web/templates/admin_edit_circle.html:77
#: snikket_web/templates/admin_edit_circle.html:78
msgid "This circle currently has no members."
msgstr "This circle currently has no members."
#: snikket_web/templates/admin_edit_circle.html:79
#: snikket_web/templates/admin_edit_circle.html:80
msgid "Invite more members"
msgstr "Invite more members"
#: snikket_web/templates/admin_edit_circle.html:82
#: snikket_web/templates/admin_edit_circle.html:83
msgid "Add existing user"
msgstr "Add existing user"
#: snikket_web/templates/admin_edit_circle.html:93
msgid "No users left"
msgstr "No users left"
#: snikket_web/templates/admin_edit_circle.html:94
msgid "All users added"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:95
msgid "All users on this service are already in this circle."
msgstr "All users on this service are already in this circle."
@@ -520,19 +519,8 @@ msgstr "Valid until"
msgid "Link"
msgstr "Link"
#: snikket_web/templates/admin_edit_invite.html:18
msgid ""
"This invitation link can be used arbitrarily often, until it expires, is "
"revoked or a service-wide user limit is reached."
msgstr ""
"This invitation link can be used arbitrarily often, until it expires, is "
"revoked or a service-wide user limit is reached."
#: snikket_web/templates/admin_edit_invite.html:18
msgid "This invitation link can only be used once and is then depleted."
msgstr "This invitation link can only be used once and is then depleted."
#: snikket_web/templates/admin_edit_invite.html:22
#: snikket_web/templates/admin_home.html:19
msgid "Circles"
msgstr "Circles"
@@ -551,73 +539,74 @@ msgstr "Circle"
msgid "The user will not be added to any circle and will have no contacts."
msgstr "The user will not be added to any circle and will have no contacts."
#: snikket_web/templates/admin_edit_invite.html:39
#: snikket_web/templates/admin_edit_invite.html:40
msgid "Contact"
msgstr ""
#: snikket_web/templates/admin_edit_invite.html:41
#, python-format
msgid "The user will get added as contact of %(peer_jid)s."
msgstr ""
#: snikket_web/templates/admin_edit_invite.html:43
msgid "Created"
msgstr "Created"
#: snikket_web/templates/admin_edit_user.html:3
#, python-format
msgid "Edit user %(user_name)s"
msgstr "Edit user %(user_name)s"
#: snikket_web/templates/admin_edit_user.html:5
msgid "User information"
msgstr "User information"
#: snikket_web/templates/admin_edit_user.html:25
#: snikket_web/templates/admin_reset_user_password.html:8
msgid "Password reset"
msgstr "Password reset"
#: snikket_web/templates/admin_edit_user.html:26
msgid ""
"If the user has forgotten their password, use the below button to create a "
"password reset link. The password reset link can be used once to change the "
"password of the account. Transmit the link to the user via a secure channel."
msgstr ""
"If the user has forgotten their password, use the below button to create a "
"password reset link. The password reset link can be used once to change the "
"password of the account. Transmit the link to the user via a secure channel."
#: snikket_web/templates/admin_home.html:3
msgid "Welcome to the administration dashboard!"
#: snikket_web/templates/admin_home.html:4
#, fuzzy
#| msgid "Welcome to the administration dashboard!"
msgid "Welcome to the admin panel!"
msgstr "Welcome to the administration dashboard!"
#: snikket_web/templates/admin_home.html:4
#: snikket_web/templates/admin_home.html:5
#, python-format
msgid "At your service, %(user_name)s."
msgstr "At your service, %(user_name)s."
#: snikket_web/templates/admin_home.html:7
#: snikket_web/templates/admin_home.html:9
msgid "Users"
msgstr ""
#: snikket_web/templates/admin_home.html:11
msgid "Create password reset links or delete users."
msgstr "Create password reset links or delete users."
#: snikket_web/templates/admin_home.html:15
#: snikket_web/templates/admin_users.html:4
msgid "Manage users"
msgstr "Manage users"
#: snikket_web/templates/admin_home.html:8
msgid "Modify administrative user information or delete users."
msgstr "Modify administrative user information or delete users."
#: snikket_web/templates/admin_home.html:12
#: snikket_web/templates/admin_home.html:21
msgid "Create and manage social circles represented on your service."
msgstr ""
#: snikket_web/templates/admin_home.html:15
#: snikket_web/templates/admin_home.html:27
#, fuzzy
#| msgid "View invitation"
msgid "Invitations"
msgstr "View invitation"
#: snikket_web/templates/admin_home.html:29
#, fuzzy
#| msgid "Create, revoke or view invitations."
msgid "Create, revoke or copy invitations."
msgstr "Create, revoke or view invitations."
#: snikket_web/templates/admin_home.html:31
#: snikket_web/templates/admin_invites.html:8
msgid "Manage invitations"
msgstr "Manage invitations"
#: snikket_web/templates/admin_home.html:16
msgid "Create, revoke or view invitations."
msgstr "Create, revoke or view invitations."
#: snikket_web/templates/admin_home.html:19
msgid "Back to the main view"
msgstr "Back to the main view"
#: snikket_web/templates/admin_home.html:20
msgid "Go back to your users web portal page."
#: snikket_web/templates/admin_home.html:36
#, fuzzy
#| msgid "Go back to your users web portal page."
msgid "Go back to your user's web portal page."
msgstr "Go back to your users web portal page."
#: snikket_web/templates/admin_home.html:38
msgid "Exit admin panel"
msgstr ""
#: snikket_web/templates/admin_invites.html:10
msgid "Pending invitations"
msgstr "Pending invitations"
@@ -642,6 +631,10 @@ msgstr "Delete invitation"
msgid "Currently, there are no pending invitations."
msgstr "Currently, there are no pending invitations."
#: snikket_web/templates/admin_reset_user_password.html:8
msgid "Password reset"
msgstr "Password reset"
#: snikket_web/templates/admin_reset_user_password.html:12
#, python-format
msgid "Password reset link for %(user_name)s"
@@ -673,6 +666,10 @@ msgstr "Create password reset link for %(user_name)s"
msgid "Snikket Web Portal"
msgstr "Snikket Web Portal"
#: snikket_web/templates/app.html:8
msgid "Log out"
msgstr "Log out"
#: snikket_web/templates/backend_error.html:3
#: snikket_web/templates/exception.html:3
#: snikket_web/templates/internal_error.html:3
@@ -696,14 +693,13 @@ msgstr "Go back to the main page"
msgid "The web portal encountered an internal error."
msgstr "The web portal encountered an internal error."
#: snikket_web/templates/invite_invalid.html:4
#: snikket_web/templates/invite_view.html:12
#, fuzzy, python-format
#| msgid "Edit user %(user_name)s"
msgid "Invite to %(site_name)s"
msgstr "Edit user %(user_name)s"
#: snikket_web/templates/invite_invalid.html:5
#: snikket_web/templates/invite_view.html:12
#, python-format
msgid "Invite to %(site_name)s"
msgstr "Invite to %(site_name)s"
#: snikket_web/templates/invite_invalid.html:6
#: snikket_web/templates/invite_register.html:10
#: snikket_web/templates/invite_success.html:11
#: snikket_web/templates/invite_view.html:13
@@ -711,13 +707,13 @@ msgstr "Edit user %(user_name)s"
msgid "Powered by <img src=\"%(logo_url)s\" alt=\"Snikket\">"
msgstr ""
#: snikket_web/templates/invite_invalid.html:7
#: snikket_web/templates/invite_invalid.html:8
#, fuzzy
#| msgid "Invite to circle"
msgid "Invite expired"
msgstr "Invite to circle"
#: snikket_web/templates/invite_invalid.html:8
#: snikket_web/templates/invite_invalid.html:9
msgid "Sorry, it looks like this invitation link has expired!"
msgstr ""
@@ -727,10 +723,9 @@ msgid "Register on %(site_name)s | Snikket"
msgstr ""
#: snikket_web/templates/invite_register.html:9
#, fuzzy, python-format
#| msgid "Edit user %(user_name)s"
#, python-format
msgid "Register on %(site_name)s"
msgstr "Edit user %(user_name)s"
msgstr "Register on %(site_name)s"
#: snikket_web/templates/invite_register.html:11
#, python-format
@@ -752,17 +747,18 @@ msgid ""
msgstr ""
#: snikket_web/templates/invite_register.html:14
#: snikket_web/templates/invite_view.html:31
#: snikket_web/templates/invite_view.html:37
msgid "App already installed?"
msgstr ""
#: snikket_web/templates/invite_register.html:16
#: snikket_web/templates/invite_view.html:33
#: snikket_web/templates/invite_reset_view.html:21
#: snikket_web/templates/invite_view.html:39
msgid "Open the app"
msgstr ""
#: snikket_web/templates/invite_register.html:18
#: snikket_web/templates/invite_view.html:35
#: snikket_web/templates/invite_view.html:41
msgid "This button works only if you have the app installed already!"
msgstr ""
@@ -785,6 +781,99 @@ msgstr ""
msgid "Enter a secure password that you do not use anywhere else."
msgstr ""
#: snikket_web/templates/invite_reset.html:9
#: snikket_web/templates/invite_reset_view.html:9
#, fuzzy
#| msgid "Change your password"
msgid "Reset your password | Snikket"
msgstr "Change your password"
#: snikket_web/templates/invite_reset.html:15
#, fuzzy
#| msgid "Change your password"
msgid "Reset your password online"
msgstr "Change your password"
#: snikket_web/templates/invite_reset.html:16
msgid ""
"To reset your password online, fill out the fields below and confirm using "
"the button."
msgstr ""
#: snikket_web/templates/invite_reset_success.html:5
msgid "Password reset successful | Snikket"
msgstr ""
#: snikket_web/templates/invite_reset_success.html:8
#, fuzzy
#| msgid "Password reset"
msgid "Password reset successful"
msgstr "Password reset"
#: snikket_web/templates/invite_reset_success.html:10
msgid "Your password has been changed"
msgstr ""
#: snikket_web/templates/invite_reset_success.html:11
msgid "You can now log in using your new password."
msgstr ""
#: snikket_web/templates/invite_reset_success.html:12
#: snikket_web/templates/invite_success.html:18
msgid "You can now safely close this page."
msgstr ""
#: snikket_web/templates/invite_reset_view.html:14
#, fuzzy
#| msgid "Change your password"
msgid "Reset your password"
msgstr "Change your password"
#: snikket_web/templates/invite_reset_view.html:15
#, python-format
msgid ""
"This page allows you to reset the password of your account, <strong>"
"%(account_jid)s</strong>, once."
msgstr ""
#: snikket_web/templates/invite_reset_view.html:17
msgid "Using the app"
msgstr ""
#: snikket_web/templates/invite_reset_view.html:18
msgid "To reset your password using the Snikket App, tap the button below."
msgstr ""
#: snikket_web/templates/invite_reset_view.html:25
msgid ""
"Alternatively, you can scan the below code with the Snikket App using the "
"Scan button at the top."
msgstr ""
#: snikket_web/templates/invite_reset_view.html:26
#: snikket_web/templates/invite_view.html:75
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 "
"recognises it."
msgstr ""
#: snikket_web/templates/invite_reset_view.html:27
msgid "You will then be prompted to enter a new password for your account."
msgstr ""
#: snikket_web/templates/invite_reset_view.html:29
#: snikket_web/templates/invite_view.html:43
msgid "Alternatives"
msgstr ""
#: snikket_web/templates/invite_reset_view.html:30
#, python-format
msgid ""
"You can also <a href=\"%(reset_url)s\">reset your password online</a> if the "
"above button or scanning the QR code does not work for you."
msgstr ""
#: snikket_web/templates/invite_success.html:5
#, python-format
msgid "Successfully registered on %(site_name)s | Snikket"
@@ -801,16 +890,18 @@ msgid ""
"Congratulations! You successfully registered on %(site_name)s as %(jid)s."
msgstr ""
#: snikket_web/templates/invite_success.html:13
#, fuzzy
#| msgid "Email address"
msgid "Your address"
msgstr "Email address"
#: snikket_web/templates/invite_success.html:17
msgid ""
"You can now set up your legacy XMPP client with the above address and the "
"password you chose during registration."
msgstr ""
#: snikket_web/templates/invite_success.html:18
msgid "You can now safely close this page."
msgstr ""
#: snikket_web/templates/invite_view.html:6
#, python-format
msgid "Invite to %(site_name)s | Snikket"
@@ -834,33 +925,36 @@ msgstr ""
msgid "Get started"
msgstr ""
#: snikket_web/templates/invite_view.html:20
#: snikket_web/templates/invite_view.html:21
msgid "Install the Snikket App on your Android or iOS device."
msgstr ""
#: snikket_web/templates/invite_view.html:23
msgid "Get it on Google Play"
msgstr ""
#: snikket_web/templates/invite_view.html:24
msgid "Download on the App Store"
#, python-format
msgid ""
"Install the Snikket App on your Android device (<a href=\"%(ios_info_url)s\" "
"rel=\"noopener noreferrer\" target=\"_blank\">iOS coming soon!</a>)."
msgstr ""
#: snikket_web/templates/invite_view.html:27
msgid "Get it on Google Play"
msgstr ""
#: snikket_web/templates/invite_view.html:29
msgid "Download on the App Store"
msgstr ""
#: snikket_web/templates/invite_view.html:33
msgid "Not on mobile?"
msgstr ""
#: snikket_web/templates/invite_view.html:30
#: snikket_web/templates/invite_view.html:36
msgid ""
"After installation the app should automatically open and prompt you to "
"create an account. If not, simply click the button below."
msgstr ""
#: snikket_web/templates/invite_view.html:37
msgid "Alternatives"
msgstr ""
#: snikket_web/templates/invite_view.html:38
#: snikket_web/templates/invite_view.html:44
#, python-format
msgid ""
"You can connect to Snikket using any XMPP-compatible software. If the button "
@@ -868,61 +962,66 @@ msgid ""
"\">register an account manually</a>."
msgstr ""
#: snikket_web/templates/invite_view.html:44
#: snikket_web/templates/invite_view.html:50
#, fuzzy
#| msgid "Show invite details"
msgid "Scan invite code"
msgstr "Show invite details"
#: snikket_web/templates/invite_view.html:47
#: snikket_web/templates/invite_view.html:76
#: snikket_web/templates/invite_view.html:53
#: snikket_web/templates/invite_view.html:82
msgid "Close"
msgstr ""
#: snikket_web/templates/invite_view.html:50
#: snikket_web/templates/invite_view.html:56
msgid ""
"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."
msgstr ""
#: snikket_web/templates/invite_view.html:55
#: snikket_web/templates/invite_view.html:61
msgid "Using a QR code scanner"
msgstr ""
#: snikket_web/templates/invite_view.html:57
#: snikket_web/templates/invite_view.html:63
msgid "Using the Snikket app"
msgstr ""
#: snikket_web/templates/invite_view.html:62
msgid ""
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
msgstr ""
#: snikket_web/templates/invite_view.html:68
msgid ""
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
"button at the top."
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
msgstr ""
#: snikket_web/templates/invite_view.html:69
#: snikket_web/templates/invite_view.html:74
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 "
"recognises it."
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
"button at the top."
msgstr ""
#: snikket_web/templates/library.j2:18
msgid "Copy link"
msgstr "Copy link"
#: snikket_web/templates/library.j2:80
#: snikket_web/templates/library.j2:81
msgid "Invalid input"
msgstr "Invalid input"
#: snikket_web/templates/library.j2:107
#: snikket_web/templates/library.j2:108
msgid "deleted"
msgstr "deleted"
#: snikket_web/templates/library.j2:122
#, fuzzy
#| msgid "Manage users and invitations of this Snikket service."
msgid "Can be used multiple times to create accounts on this Snikket service."
msgstr "Manage users and invitations of this Snikket service."
#: snikket_web/templates/library.j2:124
#, fuzzy
#| msgid "Manage users and invitations of this Snikket service."
msgid "Can be used once to create an account on this Snikket service."
msgstr "Manage users and invitations of this Snikket service."
#: snikket_web/templates/login.html:5
msgid "Snikket Login"
msgstr "Snikket Login"
@@ -935,43 +1034,50 @@ msgstr "Enter your Snikket address and password to manage your account."
msgid "Login failed"
msgstr "Login failed"
#: snikket_web/templates/user_home.html:3
#: snikket_web/templates/user_home.html:9
msgid "Welcome!"
msgstr "Welcome!"
#: snikket_web/templates/user_home.html:4
#: snikket_web/templates/user_home.html:10
#, python-format
msgid "Welcome home, %(user_name)s."
msgstr "Welcome home, %(user_name)s."
#: snikket_web/templates/user_home.html:8
msgid ""
"Change display name, set avatar and configure visibility of your personal "
"data to others."
msgstr ""
"Change display name, set avatar and configure visibility of your personal "
"data to others."
#: snikket_web/templates/user_home.html:11
#: snikket_web/templates/user_passwd.html:32
msgid "Change password"
msgstr "Change password"
#: snikket_web/templates/user_home.html:15
msgid "Admin dashboard"
msgstr "Admin dashboard"
#: snikket_web/templates/user_home.html:16
msgid "Manage users and invitations of this Snikket service."
msgstr "Manage users and invitations of this Snikket service."
#: snikket_web/templates/user_home.html:14
#, fuzzy
#| msgid "Create circle"
msgid "Your account"
msgstr "Create circle"
#: snikket_web/templates/user_home.html:20
msgid "Log out"
msgstr "Log out"
#, fuzzy
#| msgid "Email address"
msgid "Your XMPP address"
msgstr "Email address"
#: snikket_web/templates/user_home.html:21
msgid "Exit the Snikket Web Portal, without logging out your other devices."
msgstr "Exit the Snikket Web Portal, without logging out your other devices."
#: snikket_web/templates/user_home.html:31
#, fuzzy
#| msgid "Update profile"
msgid "Edit profile"
msgstr "Update profile"
#: snikket_web/templates/user_home.html:38
#, fuzzy
#| msgid "About Snikket"
msgid "Your Snikket"
msgstr "About Snikket"
#: snikket_web/templates/user_home.html:40
#, fuzzy
#| msgid "Manage users and invitations of this Snikket service."
msgid "Manage users, invitations and circles of your Snikket service."
msgstr "Manage users and invitations of this Snikket service."
#: snikket_web/templates/user_home.html:42
#, fuzzy
#| msgid "Admin dashboard"
msgid "Admin panel"
msgstr "Admin dashboard"
#: snikket_web/templates/user_logout.html:8
msgid "Sign out of the Snikket Web Portal"
@@ -1007,15 +1113,21 @@ msgstr ""
"After changing your password, you will have to enter the new password on all "
"of your devices."
#: snikket_web/templates/user_profile.html:8
#: snikket_web/templates/user_profile.html:7
#, fuzzy
#| msgid "Update profile"
msgid "Update your profile"
msgstr "Update profile"
#: snikket_web/templates/user_profile.html:9
msgid "Profile"
msgstr "Profile"
#: snikket_web/templates/user_profile.html:18
#: snikket_web/templates/user_profile.html:22
msgid "Visibility"
msgstr "Visibility"
#: snikket_web/templates/user_profile.html:19
#: snikket_web/templates/user_profile.html:23
msgid ""
"This section allows you to control who can see your profile information, "
"like avatar and nickname."
@@ -1023,6 +1135,56 @@ msgstr ""
"This section allows you to control who can see your profile information, "
"like avatar and nickname."
#~ msgid "Edit user %(user_name)s"
#~ msgstr "Edit user %(user_name)s"
#~ msgid "User information"
#~ msgstr "User information"
#~ msgid ""
#~ "If the user has forgotten their password, use the below button to create "
#~ "a password reset link. The password reset link can be used once to change "
#~ "the password of the account. Transmit the link to the user via a secure "
#~ "channel."
#~ msgstr ""
#~ "If the user has forgotten their password, use the below button to create "
#~ "a password reset link. The password reset link can be used once to change "
#~ "the password of the account. Transmit the link to the user via a secure "
#~ "channel."
#~ msgid "No users left"
#~ msgstr "No users left"
#~ msgid ""
#~ "This invitation link can be used arbitrarily often, until it expires, is "
#~ "revoked or a service-wide user limit is reached."
#~ msgstr ""
#~ "This invitation link can be used arbitrarily often, until it expires, is "
#~ "revoked or a service-wide user limit is reached."
#~ msgid "This invitation link can only be used once and is then depleted."
#~ msgstr "This invitation link can only be used once and is then depleted."
#~ msgid "Modify administrative user information or delete users."
#~ msgstr "Modify administrative user information or delete users."
#~ msgid "Back to the main view"
#~ msgstr "Back to the main view"
#~ msgid ""
#~ "Change display name, set avatar and configure visibility of your personal "
#~ "data to others."
#~ msgstr ""
#~ "Change display name, set avatar and configure visibility of your personal "
#~ "data to others."
#~ msgid "Admin dashboard"
#~ msgstr "Admin dashboard"
#~ msgid "Exit the Snikket Web Portal, without logging out your other devices."
#~ msgstr ""
#~ "Exit the Snikket Web Portal, without logging out your other devices."
#~ msgid "Invite a group of people"
#~ msgstr "Invite a group of people"

File diff suppressed because it is too large Load Diff

View File

@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2021-01-27 17:16+0100\n"
"PO-Revision-Date: 2021-01-27 14:35+0000\n"
"POT-Creation-Date: 2021-01-30 12:45+0100\n"
"PO-Revision-Date: 2021-02-02 21:01+0000\n"
"Last-Translator: uira <inboxriau@andriana.id>\n"
"Language-Team: Indonesian <https://i18n.sotecware.net/projects/snikket/web-"
"portal/id/>\n"
"Language-Team: Indonesian <https://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"
@@ -57,48 +57,46 @@ msgid "Four weeks"
msgstr "Empat minggu"
#: snikket_web/admin.py:152 snikket_web/templates/admin_edit_invite.html:17
#, fuzzy
#| msgid "View invitation"
msgid "Invitation type"
msgstr "Lihat undangan"
msgstr "Jenis undangan"
#: snikket_web/admin.py:154 snikket_web/templates/library.j2:115
#: snikket_web/admin.py:154 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr ""
msgstr "Individu"
#: snikket_web/admin.py:155 snikket_web/templates/library.j2:113
#: snikket_web/admin.py:155 snikket_web/templates/library.j2:114
msgid "Group"
msgstr ""
msgstr "Grup"
#: snikket_web/admin.py:161
msgid "New invitation link"
msgstr "Tautan undangan terbaru"
msgstr "Tautan undangan baru"
#: snikket_web/admin.py:223
msgid "Revoke"
msgstr "Batalkan"
#: snikket_web/admin.py:279 snikket_web/admin.py:323
#: snikket_web/admin.py:283 snikket_web/admin.py:327
msgid "Name"
msgstr "Nama"
#: snikket_web/admin.py:284 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:288 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr "Buat kelompok"
#: snikket_web/admin.py:328
#: snikket_web/admin.py:332
msgid "Select user"
msgstr "Pilih pengguna"
#: snikket_web/admin.py:333
#: snikket_web/admin.py:337
msgid "Update circle"
msgstr "Memperbarui kelompok"
#: snikket_web/admin.py:337
#: snikket_web/admin.py:341
msgid "Delete circle permanently"
msgstr "Hapus kelompok secara permanen"
#: snikket_web/admin.py:343
#: snikket_web/admin.py:347
msgid "Add user"
msgstr "Tambah pengguna"
@@ -106,38 +104,43 @@ msgstr "Tambah pengguna"
msgid "Main"
msgstr "Utama"
#: snikket_web/invite.py:86
#: snikket_web/invite.py:93
msgid "Username"
msgstr "Nama pengguna"
#: snikket_web/invite.py:90 snikket_web/main.py:41
#: snikket_web/invite.py:97 snikket_web/invite.py:164 snikket_web/main.py:41
msgid "Password"
msgstr "Kata sandi"
#: snikket_web/invite.py:94
#: snikket_web/invite.py:101 snikket_web/invite.py:168
msgid "Confirm password"
msgstr "Konfirmasi kata sandi"
#: snikket_web/invite.py:98
#: snikket_web/invite.py:105 snikket_web/invite.py:172
msgid "The passwords must match"
msgstr "Kata sandi harus cocok"
#: snikket_web/invite.py:103
#: snikket_web/invite.py:110
msgid "Create account"
msgstr "Buat akun"
#: snikket_web/invite.py:123
#: snikket_web/invite.py:137
msgid "That username is already taken"
msgstr "Nama pengguna itu sudah dipakai"
#: snikket_web/invite.py:127
#: snikket_web/invite.py:141 snikket_web/invite.py:205
msgid "Registration was declined for unknown reasons"
msgstr "Pendaftaran ditolak karena alasan yang tidak diketahui"
#: snikket_web/invite.py:131
#: snikket_web/invite.py:145
msgid "The username is not valid"
msgstr "Nama pengguna tidak valid"
#: snikket_web/invite.py:177 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:32
msgid "Change password"
msgstr "Ganti kata sandi"
#: snikket_web/main.py:36
msgid "Address"
msgstr "Alamat"
@@ -195,7 +198,7 @@ msgstr "Gambar profil"
msgid "Profile visibility"
msgstr "Visibilitas profil"
#: snikket_web/templates/user_home.html:7 snikket_web/user.py:68
#: snikket_web/user.py:68
msgid "Update profile"
msgstr "Perbaharui profil"
@@ -280,9 +283,9 @@ msgid "Admin area"
msgstr "Wewenang Administrator"
#: snikket_web/templates/admin_circles.html:4
#: snikket_web/templates/admin_home.html:11
#: snikket_web/templates/admin_home.html:23
msgid "Manage circles"
msgstr "Atur kelompok"
msgstr "Kelola kelompok"
#: snikket_web/templates/admin_circles.html:5
msgid ""
@@ -322,10 +325,9 @@ msgid "Create invitation to circle %(circle_name)s"
msgstr "Buat undangan untuk kelompok %(circle_name)s"
#: snikket_web/templates/admin_circles.html:28
#, fuzzy, python-format
#| msgid "Show details of circle %(circle_name)s"
#, python-format
msgid "Manage members of %(circle_name)s"
msgstr "Tampilkan detil dari kelompok %(circle_name)s"
msgstr "Kelola anggota dari %(circle_name)s"
#: snikket_web/templates/admin_circles.html:31
#: snikket_web/templates/admin_edit_circle.html:8
@@ -394,7 +396,6 @@ msgid "Delete user %(user_name)s"
msgstr "Hapus pengguna %(user_name)s"
#: snikket_web/templates/admin_delete_user.html:6
#: snikket_web/templates/admin_edit_user.html:28
msgid "Delete user"
msgstr "Hapus pengguna"
@@ -422,78 +423,80 @@ msgstr ""
"strong>"
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_edit_circle.html:43
#: snikket_web/templates/admin_edit_invite.html:45
#: snikket_web/templates/admin_edit_circle.html:44
#: snikket_web/templates/admin_edit_invite.html:49
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:13
#: snikket_web/templates/user_passwd.html:30
#: snikket_web/templates/user_profile.html:25
#: snikket_web/templates/user_profile.html:31
msgid "Back"
msgstr "Kembali"
#: snikket_web/templates/admin_edit_circle.html:13
msgid "This circle cannot be modified"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr "Ini kelompok utama anda"
#: snikket_web/templates/admin_edit_circle.html:15
msgid "This circle is managed automatically and cannot be removed or renamed."
msgstr ""
"Kelompok ini dikelola secara otomatis, tidak dapat dihapus atau diganti nama."
#: snikket_web/templates/admin_edit_circle.html:16
#: snikket_web/templates/admin_edit_circle.html:32
#: snikket_web/templates/admin_edit_circle.html:17
#: snikket_web/templates/admin_edit_circle.html:33
msgid "Group chat address"
msgstr "Alamat percakapan grup"
#: snikket_web/templates/admin_edit_circle.html:19
#: snikket_web/templates/admin_edit_circle.html:35
#: snikket_web/templates/admin_edit_circle.html:20
#: snikket_web/templates/admin_edit_circle.html:36
#: snikket_web/templates/invite_success.html:15
#: snikket_web/templates/user_home.html:21
msgid "Copy address"
msgstr "Salin alamat"
#: snikket_web/templates/admin_edit_circle.html:25
#: snikket_web/templates/admin_edit_circle.html:26
msgid "Circle information"
msgstr "Informasi kelompok"
#: snikket_web/templates/admin_edit_circle.html:38
#: snikket_web/templates/admin_edit_circle.html:39
msgid "This circle has no group chat associated."
msgstr "Kelompok ini tidak memiliki percakapan grup."
#: snikket_web/templates/admin_edit_circle.html:47
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "Hapus kelompok"
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:49
msgid "Deleting a circle does not delete any users in the circle."
msgstr ""
"Menghapus kelompok tidak menghapus satu pun pengguna di dalam kelompok "
"tersebut."
#: snikket_web/templates/admin_edit_circle.html:54
#: snikket_web/templates/admin_edit_circle.html:55
msgid "Circle members"
msgstr "Anggota kelompok"
#: snikket_web/templates/admin_edit_circle.html:69
#: snikket_web/templates/admin_edit_circle.html:70
#, python-format
msgid "Remove user %(username)s from circle"
msgstr "Hapus pengguna %(username)s dari kelompok"
#: snikket_web/templates/admin_edit_circle.html:77
#: snikket_web/templates/admin_edit_circle.html:78
msgid "This circle currently has no members."
msgstr "Kelompok ini sedang tidak memiliki anggota."
#: snikket_web/templates/admin_edit_circle.html:79
#: snikket_web/templates/admin_edit_circle.html:80
msgid "Invite more members"
msgstr "Ajak lebih banyak anggota"
#: snikket_web/templates/admin_edit_circle.html:82
#: snikket_web/templates/admin_edit_circle.html:83
msgid "Add existing user"
msgstr "Tambahkan pengguna yang ada"
#: snikket_web/templates/admin_edit_circle.html:93
msgid "No users left"
msgstr "Tidak ada pengguna tersisa"
#: snikket_web/templates/admin_edit_circle.html:94
msgid "All users added"
msgstr "Semua pengguna ditambahkan"
#: snikket_web/templates/admin_edit_circle.html:95
msgid "All users on this service are already in this circle."
msgstr "Semua pengguna layanan ini sudah ada di kelompok ini."
@@ -512,19 +515,8 @@ msgstr "Valid hingga"
msgid "Link"
msgstr "Tautan"
#: snikket_web/templates/admin_edit_invite.html:18
msgid ""
"This invitation link can be used arbitrarily often, until it expires, is "
"revoked or a service-wide user limit is reached."
msgstr ""
"Tautan undangan ini dapat terus digunakan, hingga habis masa berlakunya, "
"dicabut atau batas pengguna seluruh layanan tercapai."
#: snikket_web/templates/admin_edit_invite.html:18
msgid "This invitation link can only be used once and is then depleted."
msgstr "Tautan undangan ini hanya dapat digunakan satu kali."
#: snikket_web/templates/admin_edit_invite.html:22
#: snikket_web/templates/admin_home.html:19
msgid "Circles"
msgstr "Kelompok"
@@ -546,73 +538,65 @@ msgstr ""
"Pengguna tidak akan ditambahkan ke kelompok mana pun dan tidak akan memiliki "
"kontak."
#: snikket_web/templates/admin_edit_invite.html:39
#: snikket_web/templates/admin_edit_invite.html:40
msgid "Contact"
msgstr "Kontak"
#: snikket_web/templates/admin_edit_invite.html:41
#, python-format
msgid "The user will get added as contact of %(peer_jid)s."
msgstr "Pengguna akan ditambahkan ke kontak %(peer_jid)s."
#: snikket_web/templates/admin_edit_invite.html:43
msgid "Created"
msgstr "Dibuat"
#: snikket_web/templates/admin_edit_user.html:3
#, python-format
msgid "Edit user %(user_name)s"
msgstr "Edit pengguna %(user_name)s"
#: snikket_web/templates/admin_edit_user.html:5
msgid "User information"
msgstr "Informasi pengguna"
#: snikket_web/templates/admin_edit_user.html:25
#: snikket_web/templates/admin_reset_user_password.html:8
msgid "Password reset"
msgstr "Reset kata sandi"
#: snikket_web/templates/admin_edit_user.html:26
msgid ""
"If the user has forgotten their password, use the below button to create a "
"password reset link. The password reset link can be used once to change the "
"password of the account. Transmit the link to the user via a secure channel."
msgstr ""
"Jika pengguna lupa kata sandi, gunakan tombol di bawah untuk membuat tautan "
"setel ulang kata sandi. Tautan pengaturan ulang kata sandi dapat digunakan "
"satu kali untuk mengubah kata sandi akun. Kirimkan link ke pengguna melalui "
"saluran aman."
#: snikket_web/templates/admin_home.html:3
msgid "Welcome to the administration dashboard!"
msgstr "Selamat datang di dasbor administrasi!"
#: snikket_web/templates/admin_home.html:4
msgid "Welcome to the admin panel!"
msgstr "Selamat datang di panel administrator!"
#: snikket_web/templates/admin_home.html:5
#, python-format
msgid "At your service, %(user_name)s."
msgstr "Siap melayani Anda, %(user_name)s."
#: snikket_web/templates/admin_home.html:7
#: snikket_web/templates/admin_home.html:9
msgid "Users"
msgstr "Pengguna"
#: snikket_web/templates/admin_home.html:11
msgid "Create password reset links or delete users."
msgstr "Buat tautan setel ulang kata sandi atau hapus pengguna."
#: snikket_web/templates/admin_home.html:15
#: snikket_web/templates/admin_users.html:4
msgid "Manage users"
msgstr "Atur pengguna"
msgstr "Kelola pengguna"
#: snikket_web/templates/admin_home.html:8
msgid "Modify administrative user information or delete users."
msgstr "Ubah informasi pengguna atau hapus pengguna."
#: snikket_web/templates/admin_home.html:12
#: snikket_web/templates/admin_home.html:21
msgid "Create and manage social circles represented on your service."
msgstr "Buat dan kelola kelompok yang ada di layanan Anda."
#: snikket_web/templates/admin_home.html:15
#: snikket_web/templates/admin_home.html:27
msgid "Invitations"
msgstr "Undangan"
#: snikket_web/templates/admin_home.html:29
msgid "Create, revoke or copy invitations."
msgstr "Buat, batalkan, atau salin undangan."
#: snikket_web/templates/admin_home.html:31
#: snikket_web/templates/admin_invites.html:8
msgid "Manage invitations"
msgstr "Kelola undangan"
#: snikket_web/templates/admin_home.html:16
msgid "Create, revoke or view invitations."
msgstr "Buat, batalkan, atau lihat undangan."
#: snikket_web/templates/admin_home.html:36
msgid "Go back to your user's web portal page."
msgstr "Kembali ke halaman portal web pengguna."
#: snikket_web/templates/admin_home.html:19
msgid "Back to the main view"
msgstr "Kembali ke halaman utama"
#: snikket_web/templates/admin_home.html:20
msgid "Go back to your users web portal page."
msgstr "Kembali ke halaman portal web pengguna Anda."
#: snikket_web/templates/admin_home.html:38
msgid "Exit admin panel"
msgstr "Keluar panel administrator"
#: snikket_web/templates/admin_invites.html:10
msgid "Pending invitations"
@@ -620,7 +604,7 @@ msgstr "Undangan menunggu jawaban"
#: snikket_web/templates/admin_invites.html:22
msgid "Type"
msgstr ""
msgstr "Jenis"
#: snikket_web/templates/admin_invites.html:43
msgid "Show invite details"
@@ -628,7 +612,7 @@ msgstr "Lihat detil undangan"
#: snikket_web/templates/admin_invites.html:46
msgid "Copy invite link to clipboard"
msgstr "Kopi tautan undangan ke papan klip"
msgstr "Salin tautan undangan ke papan klip"
#: snikket_web/templates/admin_invites.html:49
msgid "Delete invitation"
@@ -638,6 +622,10 @@ msgstr "Hapus undangan"
msgid "Currently, there are no pending invitations."
msgstr "Saat ini, tidak ada undangan yang menunggu jawaban."
#: snikket_web/templates/admin_reset_user_password.html:8
msgid "Password reset"
msgstr "Reset kata sandi"
#: snikket_web/templates/admin_reset_user_password.html:12
#, python-format
msgid "Password reset link for %(user_name)s"
@@ -669,6 +657,10 @@ msgstr "Buat tautan setel ulang kata sandi untuk %(user_name)s"
msgid "Snikket Web Portal"
msgstr "Portal Web Snikket"
#: snikket_web/templates/app.html:8
msgid "Log out"
msgstr "Keluar"
#: snikket_web/templates/backend_error.html:3
#: snikket_web/templates/exception.html:3
#: snikket_web/templates/internal_error.html:3
@@ -692,13 +684,13 @@ msgstr "Kembali ke halaman utama"
msgid "The web portal encountered an internal error."
msgstr "Portal web mengalami kesalahan internal."
#: snikket_web/templates/invite_invalid.html:4
#: snikket_web/templates/invite_invalid.html:5
#: snikket_web/templates/invite_view.html:12
#, python-format
msgid "Invite to %(site_name)s"
msgstr "Undang ke %(site_name)s"
#: snikket_web/templates/invite_invalid.html:5
#: snikket_web/templates/invite_invalid.html:6
#: snikket_web/templates/invite_register.html:10
#: snikket_web/templates/invite_success.html:11
#: snikket_web/templates/invite_view.html:13
@@ -706,11 +698,11 @@ msgstr "Undang ke %(site_name)s"
msgid "Powered by <img src=\"%(logo_url)s\" alt=\"Snikket\">"
msgstr "Didukung oleh <img alt=\"Snikket\" src=\"%(logo_url)s\">"
#: snikket_web/templates/invite_invalid.html:7
#: snikket_web/templates/invite_invalid.html:8
msgid "Invite expired"
msgstr "Undangan kedaluwarsa"
#: snikket_web/templates/invite_invalid.html:8
#: snikket_web/templates/invite_invalid.html:9
msgid "Sorry, it looks like this invitation link has expired!"
msgstr "Maaf, tautan undangan ini sudah kedaluwarsa!"
@@ -748,17 +740,18 @@ msgstr ""
"menggunakan aplikasi dengan mengklik tombol di bawah ini:"
#: snikket_web/templates/invite_register.html:14
#: snikket_web/templates/invite_view.html:31
#: snikket_web/templates/invite_view.html:37
msgid "App already installed?"
msgstr "Aplikasi sudah dipasang?"
#: snikket_web/templates/invite_register.html:16
#: snikket_web/templates/invite_view.html:33
#: snikket_web/templates/invite_reset_view.html:21
#: snikket_web/templates/invite_view.html:39
msgid "Open the app"
msgstr "Buka aplikasi"
#: snikket_web/templates/invite_register.html:18
#: snikket_web/templates/invite_view.html:35
#: snikket_web/templates/invite_view.html:41
msgid "This button works only if you have the app installed already!"
msgstr "Tombol ini hanya berfungsi jika Anda sudah memasang aplikasinya!"
@@ -786,6 +779,104 @@ msgstr ""
msgid "Enter a secure password that you do not use anywhere else."
msgstr "Masukkan kata sandi yang tidak Anda gunakan di tempat lain."
#: snikket_web/templates/invite_reset.html:9
#: snikket_web/templates/invite_reset_view.html:9
msgid "Reset your password | Snikket"
msgstr "Setel ulang kata sandi | Snikket"
#: snikket_web/templates/invite_reset.html:15
msgid "Reset your password online"
msgstr "Setel ulang kata sandi secara daring"
#: snikket_web/templates/invite_reset.html:16
msgid ""
"To reset your password online, fill out the fields below and confirm using "
"the button."
msgstr ""
"Untuk mengatur ulang kata sandi Anda secara daring, isi form di bawah ini "
"dan klik tombol konfirmasi."
#: snikket_web/templates/invite_reset_success.html:5
msgid "Password reset successful | Snikket"
msgstr "Setel ulang kata sandi berhasil | Snikket"
#: snikket_web/templates/invite_reset_success.html:8
msgid "Password reset successful"
msgstr "Setel ulang kata sandi berhasil"
#: snikket_web/templates/invite_reset_success.html:10
msgid "Your password has been changed"
msgstr "Kata sandi anda sudah diubah"
#: snikket_web/templates/invite_reset_success.html:11
msgid "You can now log in using your new password."
msgstr "Anda dapat masuk menggunakan kata sandi baru Anda."
#: snikket_web/templates/invite_reset_success.html:12
#: snikket_web/templates/invite_success.html:18
msgid "You can now safely close this page."
msgstr "Sekarang Anda dapat menutup halaman ini."
#: snikket_web/templates/invite_reset_view.html:14
msgid "Reset your password"
msgstr "Setel ulang kata sandi"
#: snikket_web/templates/invite_reset_view.html:15
#, python-format
msgid ""
"This page allows you to reset the password of your account, <strong>"
"%(account_jid)s</strong>, once."
msgstr ""
"Halaman ini memungkinkan Anda untuk mengatur ulang kata sandi akun, "
"<strong>%(account_jid)s</strong>, sekali."
#: snikket_web/templates/invite_reset_view.html:17
msgid "Using the app"
msgstr "Gunakan aplikasi"
#: snikket_web/templates/invite_reset_view.html:18
msgid "To reset your password using the Snikket App, tap the button below."
msgstr ""
"Untuk mengatur ulang kata sandi Anda menggunakan Aplikasi Snikket, klik "
"tombol di bawah ini."
#: snikket_web/templates/invite_reset_view.html:25
msgid ""
"Alternatively, you can scan the below code with the Snikket App using the "
"Scan button at the top."
msgstr ""
"Atau, Anda dapat memindai kode di bawah ini dengan Snikket menggunakan "
"tombol Pindai di bagian atas."
#: snikket_web/templates/invite_reset_view.html:26
#: snikket_web/templates/invite_view.html:75
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 "
"recognises it."
msgstr ""
"Kamera akan menyala. Arahkan ke kode persegi di bawah ini hingga berada di "
"dalam kotak yang disorot di layar Anda, tunggu hingga aplikasi mengenali "
"kode."
#: snikket_web/templates/invite_reset_view.html:27
msgid "You will then be prompted to enter a new password for your account."
msgstr "Anda akan diminta untuk memasukkan kata sandi baru untuk akun Anda."
#: snikket_web/templates/invite_reset_view.html:29
#: snikket_web/templates/invite_view.html:43
msgid "Alternatives"
msgstr "Alternatif"
#: snikket_web/templates/invite_reset_view.html:30
#, python-format
msgid ""
"You can also <a href=\"%(reset_url)s\">reset your password online</a> if the "
"above button or scanning the QR code does not work for you."
msgstr ""
"Anda juga dapat <a href=\"%(reset_url)s\"> mengatur ulang kata sandi Anda "
"secara online </a> jika tombol di atas atau memindai kode QR tidak berfungsi."
#: snikket_web/templates/invite_success.html:5
#, python-format
msgid "Successfully registered on %(site_name)s | Snikket"
@@ -802,17 +893,17 @@ msgid ""
"Congratulations! You successfully registered on %(site_name)s as %(jid)s."
msgstr "Selamat! Anda berhasil terdaftar di %(site_name)s sebagai %(jid)s."
#: snikket_web/templates/invite_success.html:13
msgid "Your address"
msgstr "Alamat anda"
#: snikket_web/templates/invite_success.html:17
msgid ""
"You can now set up your legacy XMPP client with the above address and the "
"password you chose during registration."
msgstr ""
"Anda sekarang dapat mengatur aplikasi XMPP lawas Anda dengan alamat di atas "
"dan kata sandi yang Anda pilih saat pendaftaran."
#: snikket_web/templates/invite_success.html:18
msgid "You can now safely close this page."
msgstr "Sekarang Anda dapat menutup halaman ini."
"Sekarang anda dapat mempersiapkan aplikasi XMPP lawas Anda dengan alamat di "
"atas dan kata sandi yang dipilih saat pendaftaran."
#: snikket_web/templates/invite_view.html:6
#, python-format
@@ -841,23 +932,32 @@ msgstr ""
msgid "Get started"
msgstr "Mulailah"
#: snikket_web/templates/invite_view.html:20
#: snikket_web/templates/invite_view.html:21
msgid "Install the Snikket App on your Android or iOS device."
msgstr "Instal Snikket di perangkat Android atau iOS Anda."
#: snikket_web/templates/invite_view.html:23
#, python-format
msgid ""
"Install the Snikket App on your Android device (<a href=\"%(ios_info_url)s\" "
"rel=\"noopener noreferrer\" target=\"_blank\">iOS coming soon!</a>)."
msgstr ""
"Instal aplikasi Snikket di perangkat Android anda (<a href=\"%(ios_info_url)s"
"\" rel=\"noopener noreferrer\" target=\"_blank\">iOS segera tersedia!</a>)."
#: snikket_web/templates/invite_view.html:27
msgid "Get it on Google Play"
msgstr "Dapatkan di Google Play"
#: snikket_web/templates/invite_view.html:24
#: snikket_web/templates/invite_view.html:29
msgid "Download on the App Store"
msgstr "Unduh di App Store"
#: snikket_web/templates/invite_view.html:27
#: snikket_web/templates/invite_view.html:33
msgid "Not on mobile?"
msgstr "Bukan di ponsel?"
#: snikket_web/templates/invite_view.html:30
#: snikket_web/templates/invite_view.html:36
msgid ""
"After installation the app should automatically open and prompt you to "
"create an account. If not, simply click the button below."
@@ -865,11 +965,7 @@ msgstr ""
"Setelah instalasi, aplikasi akan terbuka otomatis dan meminta Anda untuk "
"membuat akun. Jika tidak, cukup klik tombol di bawah."
#: snikket_web/templates/invite_view.html:37
msgid "Alternatives"
msgstr "Alternatif"
#: snikket_web/templates/invite_view.html:38
#: snikket_web/templates/invite_view.html:44
#, python-format
msgid ""
"You can connect to Snikket using any XMPP-compatible software. If the button "
@@ -880,16 +976,16 @@ msgstr ""
"XMPP. Jika tombol di atas tidak berfungsi dengan aplikasi, Anda mungkin "
"perlu <a href=\"%(register_url)s\">mendaftarkan akun secara manual</a>."
#: snikket_web/templates/invite_view.html:44
#: snikket_web/templates/invite_view.html:50
msgid "Scan invite code"
msgstr "Pindai kode undangan"
#: snikket_web/templates/invite_view.html:47
#: snikket_web/templates/invite_view.html:76
#: snikket_web/templates/invite_view.html:53
#: snikket_web/templates/invite_view.html:82
msgid "Close"
msgstr "Tutup"
#: snikket_web/templates/invite_view.html:50
#: snikket_web/templates/invite_view.html:56
msgid ""
"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."
@@ -898,22 +994,22 @@ msgstr ""
"kode dengan kamera. Anda dapat menggunakan aplikasi pemindai QR atau "
"aplikasi Snikket."
#: snikket_web/templates/invite_view.html:55
#: snikket_web/templates/invite_view.html:61
msgid "Using a QR code scanner"
msgstr "Menggunakan pemindai kode QR"
#: snikket_web/templates/invite_view.html:57
#: snikket_web/templates/invite_view.html:63
msgid "Using the Snikket app"
msgstr "Menggunakan Snikket"
#: snikket_web/templates/invite_view.html:62
#: snikket_web/templates/invite_view.html:68
msgid ""
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
msgstr ""
"Gunakan pemindai <em>kode QR</em> di perangkat seluler Anda untuk memindai "
"kode di bawah:"
#: snikket_web/templates/invite_view.html:68
#: snikket_web/templates/invite_view.html:74
msgid ""
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
"button at the top."
@@ -921,78 +1017,71 @@ msgstr ""
"Instal aplikasi Snikket di perangkat seluler Anda, buka, dan ketuk tombol "
"'Pindai'."
#: snikket_web/templates/invite_view.html:69
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 "
"recognises it."
msgstr ""
"Kamera akan menyala. Arahkan ke kode persegi di bawah ini hingga berada di "
"dalam kotak yang disorot di layar Anda, tunggu hingga aplikasi mengenali "
"kode."
#: snikket_web/templates/library.j2:18
msgid "Copy link"
msgstr "Kopi tautan"
msgstr "Salin tautan"
#: snikket_web/templates/library.j2:80
#: snikket_web/templates/library.j2:81
msgid "Invalid input"
msgstr "Input tidak valid"
#: snikket_web/templates/library.j2:107
#: snikket_web/templates/library.j2:108
msgid "deleted"
msgstr "Dihapus"
#: snikket_web/templates/library.j2:122
msgid "Can be used multiple times to create accounts on this Snikket service."
msgstr ""
"Dapat digunakan beberapa kali untuk membuat akun di layanan Snikket ini."
#: snikket_web/templates/library.j2:124
msgid "Can be used once to create an account on this Snikket service."
msgstr "Dapat digunakan satu kali untuk membuat akun di layanan Snikket ini."
#: snikket_web/templates/login.html:5
msgid "Snikket Login"
msgstr "Login Snikket"
#: snikket_web/templates/login.html:14
msgid "Enter your Snikket address and password to manage your account."
msgstr "Ketik alamat Snikket dan kata sandinya untuk mengatur akun anda."
msgstr "Ketik alamat Snikket dan kata sandinya untuk mengelola akun anda."
#: snikket_web/templates/login.html:18
msgid "Login failed"
msgstr "Percobaan masuk gagal"
#: snikket_web/templates/user_home.html:3
#: snikket_web/templates/user_home.html:9
msgid "Welcome!"
msgstr "Selamat datang!"
#: snikket_web/templates/user_home.html:4
#: snikket_web/templates/user_home.html:10
#, python-format
msgid "Welcome home, %(user_name)s."
msgstr "Selamat kembali ke rumah, %(user_name)s."
#: snikket_web/templates/user_home.html:8
msgid ""
"Change display name, set avatar and configure visibility of your personal "
"data to others."
msgstr ""
"Ubah nama tampilan, atur avatar, dan konfigurasikan visibilitas data pribadi "
"Anda untuk orang lain."
#: snikket_web/templates/user_home.html:11
#: snikket_web/templates/user_passwd.html:32
msgid "Change password"
msgstr "Ganti kata sandi"
#: snikket_web/templates/user_home.html:15
msgid "Admin dashboard"
msgstr "Dasbor Administrator"
#: snikket_web/templates/user_home.html:16
msgid "Manage users and invitations of this Snikket service."
msgstr "Kelola pengguna dan undangan layanan Snikket."
#: snikket_web/templates/user_home.html:14
msgid "Your account"
msgstr "Akun anda"
#: snikket_web/templates/user_home.html:20
msgid "Log out"
msgstr "Keluar"
msgid "Your XMPP address"
msgstr "Alamat XMPP anda"
#: snikket_web/templates/user_home.html:21
msgid "Exit the Snikket Web Portal, without logging out your other devices."
msgstr ""
"Keluar dari Portal Web Snikket, tanpa mengeluarkan perangkat Anda yang lain."
#: snikket_web/templates/user_home.html:31
msgid "Edit profile"
msgstr "Edit profil"
#: snikket_web/templates/user_home.html:38
msgid "Your Snikket"
msgstr "Snikket anda"
#: snikket_web/templates/user_home.html:40
msgid "Manage users, invitations and circles of your Snikket service."
msgstr "Kelola pengguna, undangan dan kelompok pengguna layanan Snikket."
#: snikket_web/templates/user_home.html:42
msgid "Admin panel"
msgstr "Panel Administrator"
#: snikket_web/templates/user_logout.html:8
msgid "Sign out of the Snikket Web Portal"
@@ -1028,15 +1117,19 @@ msgstr ""
"Sesudah penggantian kata sandi, anda perlu memasukkan kata sandi baru ke "
"semua perangkat anda."
#: snikket_web/templates/user_profile.html:8
#: snikket_web/templates/user_profile.html:7
msgid "Update your profile"
msgstr "Perbaharui profil anda"
#: snikket_web/templates/user_profile.html:9
msgid "Profile"
msgstr "Profil"
#: snikket_web/templates/user_profile.html:18
#: snikket_web/templates/user_profile.html:22
msgid "Visibility"
msgstr "Visibilitas"
#: snikket_web/templates/user_profile.html:19
#: snikket_web/templates/user_profile.html:23
msgid ""
"This section allows you to control who can see your profile information, "
"like avatar and nickname."
@@ -1044,6 +1137,63 @@ msgstr ""
"Bagian ini memungkinkan Anda untuk mengontrol siapa yang bisa melihat profil "
"Anda, seperti avatar dan nama panggilan."
#~ msgid "Edit user %(user_name)s"
#~ msgstr "Edit pengguna %(user_name)s"
#~ msgid "User information"
#~ msgstr "Informasi pengguna"
#~ msgid ""
#~ "If the user has forgotten their password, use the below button to create "
#~ "a password reset link. The password reset link can be used once to change "
#~ "the password of the account. Transmit the link to the user via a secure "
#~ "channel."
#~ msgstr ""
#~ "Jika pengguna lupa kata sandi, gunakan tombol di bawah untuk membuat "
#~ "tautan setel ulang kata sandi. Tautan pengaturan ulang kata sandi dapat "
#~ "digunakan satu kali untuk mengubah kata sandi akun. Kirimkan link ke "
#~ "pengguna melalui saluran aman."
#~ msgid "<label for=\"link-field\">Link</label>"
#~ msgstr "<label for=\"link-field\">Tautan</label>"
#~ msgid "This circle cannot be modified"
#~ msgstr "Kelompok ini tidak bisa diubah"
#~ msgid "No users left"
#~ msgstr "Tidak ada pengguna tersisa"
#~ msgid ""
#~ "This invitation link can be used arbitrarily often, until it expires, is "
#~ "revoked or a service-wide user limit is reached."
#~ msgstr ""
#~ "Tautan undangan ini dapat terus digunakan, hingga habis masa berlakunya, "
#~ "dicabut atau batas pengguna seluruh layanan tercapai."
#~ msgid "This invitation link can only be used once and is then depleted."
#~ msgstr "Tautan undangan ini hanya dapat digunakan satu kali."
#~ msgid "Modify administrative user information or delete users."
#~ msgstr "Ubah informasi pengguna atau hapus pengguna."
#~ msgid "Back to the main view"
#~ msgstr "Kembali ke halaman utama"
#~ msgid ""
#~ "Change display name, set avatar and configure visibility of your personal "
#~ "data to others."
#~ msgstr ""
#~ "Ubah nama tampilan, atur avatar, dan konfigurasikan visibilitas data "
#~ "pribadi Anda untuk orang lain."
#~ msgid "Admin dashboard"
#~ msgstr "Dasbor Administrator"
#~ msgid "Exit the Snikket Web Portal, without logging out your other devices."
#~ msgstr ""
#~ "Keluar dari Portal Web Snikket, tanpa mengeluarkan perangkat Anda yang "
#~ "lain."
#~ msgid "Invite a group of people"
#~ msgstr "Mengundang beberapa orang"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2021-01-28 18:53+0100\n"
"POT-Creation-Date: 2021-01-30 12:45+0100\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"
@@ -57,11 +57,11 @@ msgstr ""
msgid "Invitation type"
msgstr ""
#: snikket_web/admin.py:154 snikket_web/templates/library.j2:115
#: snikket_web/admin.py:154 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr ""
#: snikket_web/admin.py:155 snikket_web/templates/library.j2:113
#: snikket_web/admin.py:155 snikket_web/templates/library.j2:114
msgid "Group"
msgstr ""
@@ -73,27 +73,27 @@ msgstr ""
msgid "Revoke"
msgstr ""
#: snikket_web/admin.py:279 snikket_web/admin.py:323
#: snikket_web/admin.py:283 snikket_web/admin.py:327
msgid "Name"
msgstr ""
#: snikket_web/admin.py:284 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:288 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr ""
#: snikket_web/admin.py:328
#: snikket_web/admin.py:332
msgid "Select user"
msgstr ""
#: snikket_web/admin.py:333
#: snikket_web/admin.py:337
msgid "Update circle"
msgstr ""
#: snikket_web/admin.py:337
#: snikket_web/admin.py:341
msgid "Delete circle permanently"
msgstr ""
#: snikket_web/admin.py:343
#: snikket_web/admin.py:347
msgid "Add user"
msgstr ""
@@ -101,38 +101,43 @@ msgstr ""
msgid "Main"
msgstr ""
#: snikket_web/invite.py:86
#: snikket_web/invite.py:93
msgid "Username"
msgstr ""
#: snikket_web/invite.py:90 snikket_web/main.py:41
#: snikket_web/invite.py:97 snikket_web/invite.py:164 snikket_web/main.py:41
msgid "Password"
msgstr ""
#: snikket_web/invite.py:94
#: snikket_web/invite.py:101 snikket_web/invite.py:168
msgid "Confirm password"
msgstr ""
#: snikket_web/invite.py:98
#: snikket_web/invite.py:105 snikket_web/invite.py:172
msgid "The passwords must match"
msgstr ""
#: snikket_web/invite.py:103
#: snikket_web/invite.py:110
msgid "Create account"
msgstr ""
#: snikket_web/invite.py:123
#: snikket_web/invite.py:137
msgid "That username is already taken"
msgstr ""
#: snikket_web/invite.py:127
#: snikket_web/invite.py:141 snikket_web/invite.py:205
msgid "Registration was declined for unknown reasons"
msgstr ""
#: snikket_web/invite.py:131
#: snikket_web/invite.py:145
msgid "The username is not valid"
msgstr ""
#: snikket_web/invite.py:177 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:32
msgid "Change password"
msgstr ""
#: snikket_web/main.py:36
msgid "Address"
msgstr ""
@@ -368,7 +373,6 @@ msgid "Delete user %(user_name)s"
msgstr ""
#: snikket_web/templates/admin_delete_user.html:6
#: snikket_web/templates/admin_edit_user.html:28
msgid "Delete user"
msgstr ""
@@ -393,77 +397,77 @@ msgid ""
msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_edit_circle.html:43
#: snikket_web/templates/admin_edit_circle.html:44
#: snikket_web/templates/admin_edit_invite.html:49
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:13
#: snikket_web/templates/user_passwd.html:30
#: snikket_web/templates/user_profile.html:28
#: snikket_web/templates/user_profile.html:31
msgid "Back"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:13
msgid "This circle cannot be modified"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:14
#: snikket_web/templates/admin_edit_circle.html:15
msgid "This circle is managed automatically and cannot be removed or renamed."
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:16
#: snikket_web/templates/admin_edit_circle.html:32
#: snikket_web/templates/admin_edit_circle.html:17
#: snikket_web/templates/admin_edit_circle.html:33
msgid "Group chat address"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:19
#: snikket_web/templates/admin_edit_circle.html:35
#: snikket_web/templates/admin_edit_circle.html:20
#: snikket_web/templates/admin_edit_circle.html:36
#: snikket_web/templates/invite_success.html:15
#: snikket_web/templates/user_home.html:21
msgid "Copy address"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:25
#: snikket_web/templates/admin_edit_circle.html:26
msgid "Circle information"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:38
#: snikket_web/templates/admin_edit_circle.html:39
msgid "This circle has no group chat associated."
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:47
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:49
msgid "Deleting a circle does not delete any users in the circle."
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:54
#: snikket_web/templates/admin_edit_circle.html:55
msgid "Circle members"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:69
#: snikket_web/templates/admin_edit_circle.html:70
#, python-format
msgid "Remove user %(username)s from circle"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:77
#: snikket_web/templates/admin_edit_circle.html:78
msgid "This circle currently has no members."
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:79
#: snikket_web/templates/admin_edit_circle.html:80
msgid "Invite more members"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:82
#: snikket_web/templates/admin_edit_circle.html:83
msgid "Add existing user"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:93
msgid "No users left"
#: snikket_web/templates/admin_edit_circle.html:94
msgid "All users added"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:94
#: snikket_web/templates/admin_edit_circle.html:95
msgid "All users on this service are already in this circle."
msgstr ""
@@ -513,28 +517,6 @@ msgstr ""
msgid "Created"
msgstr ""
#: snikket_web/templates/admin_edit_user.html:3
#, python-format
msgid "Edit user %(user_name)s"
msgstr ""
#: snikket_web/templates/admin_edit_user.html:5
msgid "User information"
msgstr ""
#: snikket_web/templates/admin_edit_user.html:25
#: snikket_web/templates/admin_reset_user_password.html:8
msgid "Password reset"
msgstr ""
#: snikket_web/templates/admin_edit_user.html:26
msgid ""
"If the user has forgotten their password, use the below button to create "
"a password reset link. The password reset link can be used once to change"
" the password of the account. Transmit the link to the user via a secure "
"channel."
msgstr ""
#: snikket_web/templates/admin_home.html:4
msgid "Welcome to the admin panel!"
msgstr ""
@@ -575,7 +557,7 @@ msgid "Manage invitations"
msgstr ""
#: snikket_web/templates/admin_home.html:36
msgid "Go back to your users web portal page."
msgid "Go back to your user's web portal page."
msgstr ""
#: snikket_web/templates/admin_home.html:38
@@ -606,6 +588,10 @@ msgstr ""
msgid "Currently, there are no pending invitations."
msgstr ""
#: snikket_web/templates/admin_reset_user_password.html:8
msgid "Password reset"
msgstr ""
#: snikket_web/templates/admin_reset_user_password.html:12
#, python-format
msgid "Password reset link for %(user_name)s"
@@ -712,17 +698,18 @@ msgid ""
msgstr ""
#: snikket_web/templates/invite_register.html:14
#: snikket_web/templates/invite_view.html:31
#: snikket_web/templates/invite_view.html:37
msgid "App already installed?"
msgstr ""
#: snikket_web/templates/invite_register.html:16
#: snikket_web/templates/invite_view.html:33
#: snikket_web/templates/invite_reset_view.html:21
#: snikket_web/templates/invite_view.html:39
msgid "Open the app"
msgstr ""
#: snikket_web/templates/invite_register.html:18
#: snikket_web/templates/invite_view.html:35
#: snikket_web/templates/invite_view.html:41
msgid "This button works only if you have the app installed already!"
msgstr ""
@@ -746,6 +733,91 @@ msgstr ""
msgid "Enter a secure password that you do not use anywhere else."
msgstr ""
#: snikket_web/templates/invite_reset.html:9
#: snikket_web/templates/invite_reset_view.html:9
msgid "Reset your password | Snikket"
msgstr ""
#: snikket_web/templates/invite_reset.html:15
msgid "Reset your password online"
msgstr ""
#: snikket_web/templates/invite_reset.html:16
msgid ""
"To reset your password online, fill out the fields below and confirm "
"using the button."
msgstr ""
#: snikket_web/templates/invite_reset_success.html:5
msgid "Password reset successful | Snikket"
msgstr ""
#: snikket_web/templates/invite_reset_success.html:8
msgid "Password reset successful"
msgstr ""
#: snikket_web/templates/invite_reset_success.html:10
msgid "Your password has been changed"
msgstr ""
#: snikket_web/templates/invite_reset_success.html:11
msgid "You can now log in using your new password."
msgstr ""
#: snikket_web/templates/invite_reset_success.html:12
#: snikket_web/templates/invite_success.html:18
msgid "You can now safely close this page."
msgstr ""
#: snikket_web/templates/invite_reset_view.html:14
msgid "Reset your password"
msgstr ""
#: snikket_web/templates/invite_reset_view.html:15
#, python-format
msgid ""
"This page allows you to reset the password of your account, "
"<strong>%(account_jid)s</strong>, once."
msgstr ""
#: snikket_web/templates/invite_reset_view.html:17
msgid "Using the app"
msgstr ""
#: snikket_web/templates/invite_reset_view.html:18
msgid "To reset your password using the Snikket App, tap the button below."
msgstr ""
#: snikket_web/templates/invite_reset_view.html:25
msgid ""
"Alternatively, you can scan the below code with the Snikket App using the"
" Scan button at the top."
msgstr ""
#: snikket_web/templates/invite_reset_view.html:26
#: snikket_web/templates/invite_view.html:75
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 "
"recognises it."
msgstr ""
#: snikket_web/templates/invite_reset_view.html:27
msgid "You will then be prompted to enter a new password for your account."
msgstr ""
#: snikket_web/templates/invite_reset_view.html:29
#: snikket_web/templates/invite_view.html:43
msgid "Alternatives"
msgstr ""
#: snikket_web/templates/invite_reset_view.html:30
#, python-format
msgid ""
"You can also <a href=\"%(reset_url)s\">reset your password online</a> if "
"the above button or scanning the QR code does not work for you."
msgstr ""
#: snikket_web/templates/invite_success.html:5
#, python-format
msgid "Successfully registered on %(site_name)s | Snikket"
@@ -761,16 +833,16 @@ msgstr ""
msgid "Congratulations! You successfully registered on %(site_name)s as %(jid)s."
msgstr ""
#: snikket_web/templates/invite_success.html:13
msgid "Your address"
msgstr ""
#: snikket_web/templates/invite_success.html:17
msgid ""
"You can now set up your legacy XMPP client with the above address and the"
" password you chose during registration."
msgstr ""
#: snikket_web/templates/invite_success.html:18
msgid "You can now safely close this page."
msgstr ""
#: snikket_web/templates/invite_view.html:6
#, python-format
msgid "Invite to %(site_name)s | Snikket"
@@ -794,33 +866,37 @@ msgstr ""
msgid "Get started"
msgstr ""
#: snikket_web/templates/invite_view.html:20
#: snikket_web/templates/invite_view.html:21
msgid "Install the Snikket App on your Android or iOS device."
msgstr ""
#: snikket_web/templates/invite_view.html:23
msgid "Get it on Google Play"
msgstr ""
#: snikket_web/templates/invite_view.html:24
msgid "Download on the App Store"
#, python-format
msgid ""
"Install the Snikket App on your Android device (<a "
"href=\"%(ios_info_url)s\" rel=\"noopener noreferrer\" "
"target=\"_blank\">iOS coming soon!</a>)."
msgstr ""
#: snikket_web/templates/invite_view.html:27
msgid "Get it on Google Play"
msgstr ""
#: snikket_web/templates/invite_view.html:29
msgid "Download on the App Store"
msgstr ""
#: snikket_web/templates/invite_view.html:33
msgid "Not on mobile?"
msgstr ""
#: snikket_web/templates/invite_view.html:30
#: snikket_web/templates/invite_view.html:36
msgid ""
"After installation the app should automatically open and prompt you to "
"create an account. If not, simply click the button below."
msgstr ""
#: snikket_web/templates/invite_view.html:37
msgid "Alternatives"
msgstr ""
#: snikket_web/templates/invite_view.html:38
#: snikket_web/templates/invite_view.html:44
#, python-format
msgid ""
"You can connect to Snikket using any XMPP-compatible software. If the "
@@ -828,66 +904,59 @@ msgid ""
"href=\"%(register_url)s\">register an account manually</a>."
msgstr ""
#: snikket_web/templates/invite_view.html:44
#: snikket_web/templates/invite_view.html:50
msgid "Scan invite code"
msgstr ""
#: snikket_web/templates/invite_view.html:47
#: snikket_web/templates/invite_view.html:76
#: snikket_web/templates/invite_view.html:53
#: snikket_web/templates/invite_view.html:82
msgid "Close"
msgstr ""
#: snikket_web/templates/invite_view.html:50
#: snikket_web/templates/invite_view.html:56
msgid ""
"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."
msgstr ""
#: snikket_web/templates/invite_view.html:55
#: snikket_web/templates/invite_view.html:61
msgid "Using a QR code scanner"
msgstr ""
#: snikket_web/templates/invite_view.html:57
#: snikket_web/templates/invite_view.html:63
msgid "Using the Snikket app"
msgstr ""
#: snikket_web/templates/invite_view.html:62
#: snikket_web/templates/invite_view.html:68
msgid ""
"Use a <em>QR code</em> scanner on your mobile device to scan the code "
"below:"
msgstr ""
#: snikket_web/templates/invite_view.html:68
#: snikket_web/templates/invite_view.html:74
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:69
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 "
"recognises it."
msgstr ""
#: snikket_web/templates/library.j2:18
msgid "Copy link"
msgstr ""
#: snikket_web/templates/library.j2:80
#: snikket_web/templates/library.j2:81
msgid "Invalid input"
msgstr ""
#: snikket_web/templates/library.j2:107
#: snikket_web/templates/library.j2:108
msgid "deleted"
msgstr ""
#: snikket_web/templates/library.j2:121
#: snikket_web/templates/library.j2:122
msgid "Can be used multiple times to create accounts on this Snikket service."
msgstr ""
#: snikket_web/templates/library.j2:123
#: snikket_web/templates/library.j2:124
msgid "Can be used once to create an account on this Snikket service."
msgstr ""
@@ -916,24 +985,23 @@ msgstr ""
msgid "Your account"
msgstr ""
#: snikket_web/templates/user_home.html:30
msgid "Edit profile"
#: snikket_web/templates/user_home.html:20
msgid "Your XMPP address"
msgstr ""
#: snikket_web/templates/user_home.html:31
#: snikket_web/templates/user_passwd.html:32
msgid "Change password"
msgstr ""
#: snikket_web/templates/user_home.html:36
msgid "Your Snikket"
msgid "Edit profile"
msgstr ""
#: snikket_web/templates/user_home.html:38
msgid "Manage users, invitations and circles of your Snikket service."
msgid "Your Snikket"
msgstr ""
#: snikket_web/templates/user_home.html:40
msgid "Manage users, invitations and circles of your Snikket service."
msgstr ""
#: snikket_web/templates/user_home.html:42
msgid "Admin panel"
msgstr ""
@@ -964,15 +1032,19 @@ msgid ""
"all of your devices."
msgstr ""
#: snikket_web/templates/user_profile.html:8
#: snikket_web/templates/user_profile.html:7
msgid "Update your profile"
msgstr ""
#: snikket_web/templates/user_profile.html:9
msgid "Profile"
msgstr ""
#: snikket_web/templates/user_profile.html:21
#: snikket_web/templates/user_profile.html:22
msgid "Visibility"
msgstr ""
#: snikket_web/templates/user_profile.html:22
#: snikket_web/templates/user_profile.html:23
msgid ""
"This section allows you to control who can see your profile information, "
"like avatar and nickname."

View File

@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2021-01-27 17:16+0100\n"
"PO-Revision-Date: 2021-01-27 16:17+0000\n"
"POT-Creation-Date: 2021-01-30 12:45+0100\n"
"PO-Revision-Date: 2021-01-31 12:54+0000\n"
"Last-Translator: misiek <migelazur@mailbox.org>\n"
"Language-Team: Polish <https://i18n.sotecware.net/projects/snikket/web-"
"portal/pl/>\n"
"Language-Team: Polish <https://i18n.sotecware.net/projects/snikket/"
"web-portal/pl/>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -31,7 +31,7 @@ msgstr "Zaproś do kręgu"
#: snikket_web/admin.py:135
msgid "At least one circle must be selected"
msgstr "Wybrany musi być przynajmniej jeden krąg"
msgstr "Należy wybrać przynajmniej jeden krąg"
#: snikket_web/admin.py:140
msgid "Valid for"
@@ -39,7 +39,7 @@ msgstr "Ważne przez"
#: snikket_web/admin.py:142
msgid "One hour"
msgstr "Jedną godzinę"
msgstr "Godzinę"
#: snikket_web/admin.py:143
msgid "Twelve hours"
@@ -47,29 +47,27 @@ msgstr "Dwanaście godzin"
#: snikket_web/admin.py:144
msgid "One day"
msgstr "Jeden dzień"
msgstr "Dzień"
#: snikket_web/admin.py:145
msgid "One week"
msgstr "Jeden tydzień"
msgstr "Tydzień"
#: snikket_web/admin.py:146
msgid "Four weeks"
msgstr "Cztery tygodnie"
#: snikket_web/admin.py:152 snikket_web/templates/admin_edit_invite.html:17
#, fuzzy
#| msgid "View invitation"
msgid "Invitation type"
msgstr "Szczegóły zaproszenia"
msgstr "Typ zaproszenia"
#: snikket_web/admin.py:154 snikket_web/templates/library.j2:115
#: snikket_web/admin.py:154 snikket_web/templates/library.j2:116
msgid "Individual"
msgstr ""
msgstr "Indywidualne"
#: snikket_web/admin.py:155 snikket_web/templates/library.j2:113
#: snikket_web/admin.py:155 snikket_web/templates/library.j2:114
msgid "Group"
msgstr ""
msgstr "Grupowe"
#: snikket_web/admin.py:161
msgid "New invitation link"
@@ -79,27 +77,27 @@ msgstr "Nowy link z zaproszeniem"
msgid "Revoke"
msgstr "Unieważnij"
#: snikket_web/admin.py:279 snikket_web/admin.py:323
#: snikket_web/admin.py:283 snikket_web/admin.py:327
msgid "Name"
msgstr "Nazwa"
#: snikket_web/admin.py:284 snikket_web/templates/admin_circles.html:47
#: snikket_web/admin.py:288 snikket_web/templates/admin_circles.html:47
msgid "Create circle"
msgstr "Utwórz krąg"
#: snikket_web/admin.py:328
#: snikket_web/admin.py:332
msgid "Select user"
msgstr "Wybierz użytkownika"
#: snikket_web/admin.py:333
#: snikket_web/admin.py:337
msgid "Update circle"
msgstr "Zaktualizuj ustawienia kręgu"
#: snikket_web/admin.py:337
#: snikket_web/admin.py:341
msgid "Delete circle permanently"
msgstr "Usuń krąg bezpowrotnie"
#: snikket_web/admin.py:343
#: snikket_web/admin.py:347
msgid "Add user"
msgstr "Dodaj użytkownika"
@@ -107,38 +105,43 @@ msgstr "Dodaj użytkownika"
msgid "Main"
msgstr "Główny"
#: snikket_web/invite.py:86
#: snikket_web/invite.py:93
msgid "Username"
msgstr "Nazwa użytkownika"
#: snikket_web/invite.py:90 snikket_web/main.py:41
#: snikket_web/invite.py:97 snikket_web/invite.py:164 snikket_web/main.py:41
msgid "Password"
msgstr "Hasło"
#: snikket_web/invite.py:94
#: snikket_web/invite.py:101 snikket_web/invite.py:168
msgid "Confirm password"
msgstr "Potwierdź hasło"
#: snikket_web/invite.py:98
#: snikket_web/invite.py:105 snikket_web/invite.py:172
msgid "The passwords must match"
msgstr "Hasła muszą się zgadzać"
#: snikket_web/invite.py:103
#: snikket_web/invite.py:110
msgid "Create account"
msgstr "Utwórz konto"
#: snikket_web/invite.py:123
#: snikket_web/invite.py:137
msgid "That username is already taken"
msgstr "Ta nazwa użytkownika jest już zajęta"
#: snikket_web/invite.py:127
#: snikket_web/invite.py:141 snikket_web/invite.py:205
msgid "Registration was declined for unknown reasons"
msgstr "Z nieznanych przyczyn rejestracja została odrzucona"
#: snikket_web/invite.py:131
#: snikket_web/invite.py:145
msgid "The username is not valid"
msgstr "Ta nazwa użytkownika jest nieprawidłowa"
#: snikket_web/invite.py:177 snikket_web/templates/user_home.html:32
#: snikket_web/templates/user_passwd.html:32
msgid "Change password"
msgstr "Zmień hasło"
#: snikket_web/main.py:36
msgid "Address"
msgstr "Adres"
@@ -196,7 +199,7 @@ msgstr "Awatar"
msgid "Profile visibility"
msgstr "Widoczność profilu"
#: snikket_web/templates/user_home.html:7 snikket_web/user.py:68
#: snikket_web/user.py:68
msgid "Update profile"
msgstr "Zaktualizuj profil"
@@ -281,7 +284,7 @@ msgid "Admin area"
msgstr "Panel administracyjny"
#: snikket_web/templates/admin_circles.html:4
#: snikket_web/templates/admin_home.html:11
#: snikket_web/templates/admin_home.html:23
msgid "Manage circles"
msgstr "Zarządzaj kręgami"
@@ -323,10 +326,9 @@ msgid "Create invitation to circle %(circle_name)s"
msgstr "Utwórz zaproszenie do kręgu %(circle_name)s"
#: snikket_web/templates/admin_circles.html:28
#, fuzzy, python-format
#| msgid "Show details of circle %(circle_name)s"
#, python-format
msgid "Manage members of %(circle_name)s"
msgstr "Pokaż szczegóły kręgu %(circle_name)s"
msgstr "Zarządzaj członkami %(circle_name)s"
#: snikket_web/templates/admin_circles.html:31
#: snikket_web/templates/admin_edit_circle.html:8
@@ -395,7 +397,6 @@ msgid "Delete user %(user_name)s"
msgstr "Usuń użytkownika %(user_name)s"
#: snikket_web/templates/admin_delete_user.html:6
#: snikket_web/templates/admin_edit_user.html:28
msgid "Delete user"
msgstr "Usuń użytkownika"
@@ -423,78 +424,79 @@ msgstr ""
"cofnąć!</strong>"
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_edit_circle.html:43
#: snikket_web/templates/admin_edit_invite.html:45
#: snikket_web/templates/admin_edit_circle.html:44
#: snikket_web/templates/admin_edit_invite.html:49
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:13
#: snikket_web/templates/user_passwd.html:30
#: snikket_web/templates/user_profile.html:25
#: snikket_web/templates/user_profile.html:31
msgid "Back"
msgstr "Wstecz"
#: snikket_web/templates/admin_edit_circle.html:13
msgid "This circle cannot be modified"
msgstr "Ten krąg nie może być modyfikowany"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr "To twój główny krąg"
#: snikket_web/templates/admin_edit_circle.html:15
msgid "This circle is managed automatically and cannot be removed or renamed."
msgstr ""
"Ten krąg jest zarządzany automatycznie, dlatego nie można go usunąć lub "
"zmienić jego nazwy."
#: snikket_web/templates/admin_edit_circle.html:16
#: snikket_web/templates/admin_edit_circle.html:32
#: snikket_web/templates/admin_edit_circle.html:17
#: snikket_web/templates/admin_edit_circle.html:33
msgid "Group chat address"
msgstr "Adres czatu grupowego"
#: snikket_web/templates/admin_edit_circle.html:19
#: snikket_web/templates/admin_edit_circle.html:35
#: snikket_web/templates/admin_edit_circle.html:20
#: snikket_web/templates/admin_edit_circle.html:36
#: snikket_web/templates/invite_success.html:15
#: snikket_web/templates/user_home.html:21
msgid "Copy address"
msgstr "Skopiuj adres"
#: snikket_web/templates/admin_edit_circle.html:25
#: snikket_web/templates/admin_edit_circle.html:26
msgid "Circle information"
msgstr "Informacje o kręgu"
#: snikket_web/templates/admin_edit_circle.html:38
#: snikket_web/templates/admin_edit_circle.html:39
msgid "This circle has no group chat associated."
msgstr "Ten krąg nie jest powiązany z żadnym czatem grupowym."
#: snikket_web/templates/admin_edit_circle.html:47
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "Usuń krąg"
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:49
msgid "Deleting a circle does not delete any users in the circle."
msgstr "Usunięcie kręgu nie usuwa z serwera jego użytkowników."
msgstr "Usunięcie kręgu nie usunie z serwera jego użytkowników."
#: snikket_web/templates/admin_edit_circle.html:54
#: snikket_web/templates/admin_edit_circle.html:55
msgid "Circle members"
msgstr "Członkowie kręgu"
#: snikket_web/templates/admin_edit_circle.html:69
#: snikket_web/templates/admin_edit_circle.html:70
#, python-format
msgid "Remove user %(username)s from circle"
msgstr "Usuń użytkownika %(username)s z kręgu"
msgstr "Usuń z kręgu użytkownika %(username)s"
#: snikket_web/templates/admin_edit_circle.html:77
#: snikket_web/templates/admin_edit_circle.html:78
msgid "This circle currently has no members."
msgstr "Ten krąg nie ma obecnie członków."
#: snikket_web/templates/admin_edit_circle.html:79
#: snikket_web/templates/admin_edit_circle.html:80
msgid "Invite more members"
msgstr "Zaproś więcej użytkowników"
#: snikket_web/templates/admin_edit_circle.html:82
#: snikket_web/templates/admin_edit_circle.html:83
msgid "Add existing user"
msgstr "Dodaj istniejącego użytkownika"
#: snikket_web/templates/admin_edit_circle.html:93
msgid "No users left"
msgstr "Brak użytkowników do dodania"
#: snikket_web/templates/admin_edit_circle.html:94
msgid "All users added"
msgstr "Wszyscy użytkownicy dodani"
#: snikket_web/templates/admin_edit_circle.html:95
msgid "All users on this service are already in this circle."
msgstr "Wszyscy użytkownicy tego serwera są obecnie w tym kręgu."
@@ -513,19 +515,8 @@ msgstr "Ważne do"
msgid "Link"
msgstr "Link"
#: snikket_web/templates/admin_edit_invite.html:18
msgid ""
"This invitation link can be used arbitrarily often, until it expires, is "
"revoked or a service-wide user limit is reached."
msgstr ""
"Ten link z zaproszeniem może być wykorzystywany do momentu wygaśnięcia, "
"unieważnienia lub osiągnięcia limitu użytkowników serwera."
#: snikket_web/templates/admin_edit_invite.html:18
msgid "This invitation link can only be used once and is then depleted."
msgstr "Ten link z zaproszeniem jest jednorazowy, wygasa po użyciu."
#: snikket_web/templates/admin_edit_invite.html:22
#: snikket_web/templates/admin_home.html:19
msgid "Circles"
msgstr "Kręgi"
@@ -547,81 +538,73 @@ msgstr ""
"Użytkownik nie zostanie dodany do żadnego kręgu oraz nie będzie miał "
"kontaktów."
#: snikket_web/templates/admin_edit_invite.html:39
#: snikket_web/templates/admin_edit_invite.html:40
msgid "Contact"
msgstr "Kontakt"
#: snikket_web/templates/admin_edit_invite.html:41
#, python-format
msgid "The user will get added as contact of %(peer_jid)s."
msgstr "Użytkownik zostanie dodany jako kontakt %(peer_jid)s."
#: snikket_web/templates/admin_edit_invite.html:43
msgid "Created"
msgstr "Utworzono"
#: snikket_web/templates/admin_edit_user.html:3
#, python-format
msgid "Edit user %(user_name)s"
msgstr "Edytuj użytkownika %(user_name)s"
#: snikket_web/templates/admin_edit_user.html:5
msgid "User information"
msgstr "Informacje o użytkowniku"
#: snikket_web/templates/admin_edit_user.html:25
#: snikket_web/templates/admin_reset_user_password.html:8
msgid "Password reset"
msgstr "Resetowanie hasła"
#: snikket_web/templates/admin_edit_user.html:26
msgid ""
"If the user has forgotten their password, use the below button to create a "
"password reset link. The password reset link can be used once to change the "
"password of the account. Transmit the link to the user via a secure channel."
msgstr ""
"Jeśli użytkownik zapomni swojego hasła, za pomocą poniższego przycisku "
"wygenerujesz dla niego link do zresetowania hasła. Link może być "
"wykorzystany jeden raz do jego zmiany. Prześlij go do użytkownika za pomocą "
"bezpiecznej formy kontaktu."
#: snikket_web/templates/admin_home.html:3
msgid "Welcome to the administration dashboard!"
#: snikket_web/templates/admin_home.html:4
msgid "Welcome to the admin panel!"
msgstr "Witaj w panelu administracyjnym!"
#: snikket_web/templates/admin_home.html:4
#: snikket_web/templates/admin_home.html:5
#, python-format
msgid "At your service, %(user_name)s."
msgstr "Do usług, %(user_name)s."
#: snikket_web/templates/admin_home.html:7
#: snikket_web/templates/admin_home.html:9
msgid "Users"
msgstr "Użytkownicy"
#: snikket_web/templates/admin_home.html:11
msgid "Create password reset links or delete users."
msgstr "Twórz linki do resetowania haseł lub usuwaj użytkowników."
#: snikket_web/templates/admin_home.html:15
#: snikket_web/templates/admin_users.html:4
msgid "Manage users"
msgstr "Zarządzaj użytkownikami"
#: snikket_web/templates/admin_home.html:8
msgid "Modify administrative user information or delete users."
msgstr "Zmień informacje o użytkowniku lub usuń użytkowników."
#: snikket_web/templates/admin_home.html:12
#: snikket_web/templates/admin_home.html:21
msgid "Create and manage social circles represented on your service."
msgstr "Twórz i zarządzaj kręgami społecznościowymi na twoim serwerze."
#: snikket_web/templates/admin_home.html:15
#: snikket_web/templates/admin_home.html:27
msgid "Invitations"
msgstr "Zaproszenia"
#: snikket_web/templates/admin_home.html:29
msgid "Create, revoke or copy invitations."
msgstr "Utwórz, unieważnij lub kopiuj zaproszenia."
#: snikket_web/templates/admin_home.html:31
#: snikket_web/templates/admin_invites.html:8
msgid "Manage invitations"
msgstr "Zarządzaj zaproszeniami"
#: snikket_web/templates/admin_home.html:16
msgid "Create, revoke or view invitations."
msgstr "Utwórz, unieważnij lub przeglądaj zaproszenia."
#: snikket_web/templates/admin_home.html:19
msgid "Back to the main view"
msgstr "Powrót do strony głównej"
#: snikket_web/templates/admin_home.html:20
msgid "Go back to your users web portal page."
#: snikket_web/templates/admin_home.html:36
msgid "Go back to your user's web portal page."
msgstr "Wróć do swojej strony użytkownika."
#: snikket_web/templates/admin_home.html:38
msgid "Exit admin panel"
msgstr "Wyjdź z panelu administracyjnego"
#: snikket_web/templates/admin_invites.html:10
msgid "Pending invitations"
msgstr "Oczekujące zaproszenia"
#: snikket_web/templates/admin_invites.html:22
msgid "Type"
msgstr ""
msgstr "Typ"
#: snikket_web/templates/admin_invites.html:43
msgid "Show invite details"
@@ -639,6 +622,10 @@ msgstr "Usuń zaproszenie"
msgid "Currently, there are no pending invitations."
msgstr "Brak oczekujących zaproszeń."
#: snikket_web/templates/admin_reset_user_password.html:8
msgid "Password reset"
msgstr "Resetowanie hasła"
#: snikket_web/templates/admin_reset_user_password.html:12
#, python-format
msgid "Password reset link for %(user_name)s"
@@ -670,6 +657,10 @@ msgstr "Utwórz link resetowania hasła dla %(user_name)s"
msgid "Snikket Web Portal"
msgstr "Portal użytkownika Snikket"
#: snikket_web/templates/app.html:8
msgid "Log out"
msgstr "Wyloguj się"
#: snikket_web/templates/backend_error.html:3
#: snikket_web/templates/exception.html:3
#: snikket_web/templates/internal_error.html:3
@@ -695,13 +686,13 @@ msgstr "Wróć do strony głównej"
msgid "The web portal encountered an internal error."
msgstr "Portal internetowy napotkał błąd wewnętrzny."
#: snikket_web/templates/invite_invalid.html:4
#: snikket_web/templates/invite_invalid.html:5
#: snikket_web/templates/invite_view.html:12
#, python-format
msgid "Invite to %(site_name)s"
msgstr "Zaproś na %(site_name)s"
#: snikket_web/templates/invite_invalid.html:5
#: snikket_web/templates/invite_invalid.html:6
#: snikket_web/templates/invite_register.html:10
#: snikket_web/templates/invite_success.html:11
#: snikket_web/templates/invite_view.html:13
@@ -709,11 +700,11 @@ msgstr "Zaproś na %(site_name)s"
msgid "Powered by <img src=\"%(logo_url)s\" alt=\"Snikket\">"
msgstr "Obsługiwane przez <img alt=\"Snikket\" src=\"%(logo_url)s\">"
#: snikket_web/templates/invite_invalid.html:7
#: snikket_web/templates/invite_invalid.html:8
msgid "Invite expired"
msgstr "Zaproszenie wygasło"
#: snikket_web/templates/invite_invalid.html:8
#: snikket_web/templates/invite_invalid.html:9
msgid "Sorry, it looks like this invitation link has expired!"
msgstr "Przepraszamy, wygląda na to, że ten link z zaproszeniem wygasł!"
@@ -751,17 +742,18 @@ msgstr ""
"zaprowadzi cię tam poniższy przycisk:"
#: snikket_web/templates/invite_register.html:14
#: snikket_web/templates/invite_view.html:31
#: snikket_web/templates/invite_view.html:37
msgid "App already installed?"
msgstr "Aplikacja jest już zainstalowana?"
#: snikket_web/templates/invite_register.html:16
#: snikket_web/templates/invite_view.html:33
#: snikket_web/templates/invite_reset_view.html:21
#: snikket_web/templates/invite_view.html:39
msgid "Open the app"
msgstr "Otwórz aplikację"
#: snikket_web/templates/invite_register.html:18
#: snikket_web/templates/invite_view.html:35
#: snikket_web/templates/invite_view.html:41
msgid "This button works only if you have the app installed already!"
msgstr ""
"Ten przycisk zadziała wyłącznie, jeśli masz już zainstalowaną aplikację!"
@@ -789,6 +781,105 @@ msgstr ""
msgid "Enter a secure password that you do not use anywhere else."
msgstr "Wprowadź bezpieczne hasło, którego nie używasz w innym miejscu."
#: snikket_web/templates/invite_reset.html:9
#: snikket_web/templates/invite_reset_view.html:9
msgid "Reset your password | Snikket"
msgstr "Zresetuj swoje hasło | Snikket"
#: snikket_web/templates/invite_reset.html:15
msgid "Reset your password online"
msgstr "Zresetuj swoje hasło online"
#: snikket_web/templates/invite_reset.html:16
msgid ""
"To reset your password online, fill out the fields below and confirm using "
"the button."
msgstr ""
"Aby zresetować swoje hasło online, wypełnij poniższe pola i potwierdź za "
"pomocą przycisku."
#: snikket_web/templates/invite_reset_success.html:5
msgid "Password reset successful | Snikket"
msgstr "Zresetowanie hasła powiodło się | Snikket"
#: snikket_web/templates/invite_reset_success.html:8
msgid "Password reset successful"
msgstr "Zresetowanie hasła powiodło się"
#: snikket_web/templates/invite_reset_success.html:10
msgid "Your password has been changed"
msgstr "Twoje hasło zostało zmienione"
#: snikket_web/templates/invite_reset_success.html:11
msgid "You can now log in using your new password."
msgstr "Możesz się zalogować z wykorzystaniem twojego nowego hasła."
#: snikket_web/templates/invite_reset_success.html:12
#: snikket_web/templates/invite_success.html:18
msgid "You can now safely close this page."
msgstr "Możesz teraz bezpiecznie zamknąć tę stronę."
#: snikket_web/templates/invite_reset_view.html:14
msgid "Reset your password"
msgstr "Zresetuj swoje hasło"
#: snikket_web/templates/invite_reset_view.html:15
#, python-format
msgid ""
"This page allows you to reset the password of your account, <strong>"
"%(account_jid)s</strong>, once."
msgstr ""
"Ta strona pozwoli ci na jednorazowe zresetowanie hasła do twojego konta: "
"<strong>%(account_jid)s</strong>."
#: snikket_web/templates/invite_reset_view.html:17
msgid "Using the app"
msgstr "Używając aplikacji"
#: snikket_web/templates/invite_reset_view.html:18
msgid "To reset your password using the Snikket App, tap the button below."
msgstr ""
"Aby zresetować swoje hasło za pomocą aplikacji Snikket, wciśnij poniższy "
"przycisk."
#: snikket_web/templates/invite_reset_view.html:25
msgid ""
"Alternatively, you can scan the below code with the Snikket App using the "
"Scan button at the top."
msgstr ""
"Możesz również zeskanować poniższy kod w aplikacji Snikket, korzystając z "
"przycisku Skanowania, który znajduje się u góry."
#: snikket_web/templates/invite_reset_view.html:26
#: snikket_web/templates/invite_view.html:75
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 "
"recognises it."
msgstr ""
"Twój aparat włączy się. Skieruj go na kwadratowy kod poniżej, aż znajdzie "
"się on w podświetlonym kwadracie na twoim ekranie. Poczekaj, aż aplikacja go "
"odczyta."
#: snikket_web/templates/invite_reset_view.html:27
msgid "You will then be prompted to enter a new password for your account."
msgstr ""
"Zostaniesz wtedy poproszony o wprowadzenie nowego hasła dla twojego konta."
#: snikket_web/templates/invite_reset_view.html:29
#: snikket_web/templates/invite_view.html:43
msgid "Alternatives"
msgstr "Inne możliwości"
#: snikket_web/templates/invite_reset_view.html:30
#, python-format
msgid ""
"You can also <a href=\"%(reset_url)s\">reset your password online</a> if the "
"above button or scanning the QR code does not work for you."
msgstr ""
"Możesz również <a href=\"%(reset_url)s\">zresetować swoje hasło online</a>, "
"jeśli powyższy przycisk lub skanowanie kodu QR nie zadziała."
#: snikket_web/templates/invite_success.html:5
#, python-format
msgid "Successfully registered on %(site_name)s | Snikket"
@@ -806,6 +897,10 @@ msgid ""
msgstr ""
"Gratulacje! Pomyślnie zarejestrowałeś się na %(site_name)s jako %(jid)s."
#: snikket_web/templates/invite_success.html:13
msgid "Your address"
msgstr "Twój adres"
#: snikket_web/templates/invite_success.html:17
msgid ""
"You can now set up your legacy XMPP client with the above address and the "
@@ -814,10 +909,6 @@ msgstr ""
"Możesz teraz skonfigurować swojego starszego klienta XMPP za pomocą "
"powyższego adresu i hasła, które podałeś podczas rejestracji."
#: snikket_web/templates/invite_success.html:18
msgid "You can now safely close this page."
msgstr "Możesz teraz bezpiecznie zamknąć tę stronę."
#: snikket_web/templates/invite_view.html:6
#, python-format
msgid "Invite to %(site_name)s | Snikket"
@@ -829,7 +920,7 @@ msgid ""
"You have been invited to chat with %(inviter_name)s using Snikket, a secure, "
"privacy-friendly chat app on %(site_name)s."
msgstr ""
"Zostałeś zaproszony do czatu z %(inviter_name)s za pomocą Snikket, "
"Zostałeś zaproszony do czatu z %(inviter_name)s za pomocą Snikket - "
"bezpiecznej i przyjaznej dla prywatności aplikacji do rozmów na "
"%(site_name)s."
@@ -839,101 +930,124 @@ msgid ""
"You have been invited to chat on %(site_name)s using Snikket, a secure, "
"privacy-friendly chat app."
msgstr ""
"Zostałeś zaproszony do czatu na %(site_name)s za pomocą Snikket, bezpiecznej "
"i przyjaznej dla prywatności aplikacji do rozmów."
"Zostałeś zaproszony do czatu na %(site_name)s za pomocą Snikket - "
"bezpiecznej i przyjaznej dla prywatności aplikacji do rozmów."
#: snikket_web/templates/invite_view.html:19
msgid "Get started"
msgstr "Rozpocznij"
#: snikket_web/templates/invite_view.html:20
#: snikket_web/templates/invite_view.html:21
msgid "Install the Snikket App on your Android or iOS device."
msgstr ""
"Zainstaluj aplikację Snikket na swoim urządzeniu z systemem Android lub iOS."
#: snikket_web/templates/invite_view.html:23
#, python-format
msgid ""
"Install the Snikket App on your Android device (<a href=\"%(ios_info_url)s\" "
"rel=\"noopener noreferrer\" target=\"_blank\">iOS coming soon!</a>)."
msgstr ""
"Zainstaluj aplikację Snikket na swoim urządzeniu z Androidem (<a href=\""
"%(ios_info_url)s\" rel=\"noopener noreferrer\" target=\"_blank\">iOS już "
"niedługo!</a>)."
#: snikket_web/templates/invite_view.html:27
msgid "Get it on Google Play"
msgstr "Pobierz w Google Play"
#: snikket_web/templates/invite_view.html:24
#: snikket_web/templates/invite_view.html:29
msgid "Download on the App Store"
msgstr "Pobierz w App Store"
#: snikket_web/templates/invite_view.html:27
#: snikket_web/templates/invite_view.html:33
msgid "Not on mobile?"
msgstr "Nie korzystasz obecnie ze smartfona?"
#: snikket_web/templates/invite_view.html:30
#: snikket_web/templates/invite_view.html:36
msgid ""
"After installation the app should automatically open and prompt you to "
"create an account. If not, simply click the button below."
msgstr ""
"Po instalacji aplikacja powinna uruchomić się automatycznie i poprosić o "
"utworzenie konta. Jeśli nie, wciśnij poniższy przycisk."
#: snikket_web/templates/invite_view.html:37
msgid "Alternatives"
msgstr ""
#: snikket_web/templates/invite_view.html:38
#: snikket_web/templates/invite_view.html:44
#, python-format
msgid ""
"You can connect to Snikket using any XMPP-compatible software. If the button "
"above does not work with your app, you may need to <a href=\"%(register_url)s"
"\">register an account manually</a>."
msgstr ""
"Możesz połączyć się z serwerem Snikket, korzystając z dowolnego "
"oprogramowania kompatybilnego z XMPP. Jeśli powyższy przycisk nie działa z "
"twoją aplikacją, konieczne może być <a href=\"%(register_url)s\">ręczne "
"zarejestrowanie konta</a>."
#: snikket_web/templates/invite_view.html:44
#: snikket_web/templates/invite_view.html:50
msgid "Scan invite code"
msgstr "Zeskanuj kod zaproszenia"
#: snikket_web/templates/invite_view.html:47
#: snikket_web/templates/invite_view.html:76
#: snikket_web/templates/invite_view.html:53
#: snikket_web/templates/invite_view.html:82
msgid "Close"
msgstr "Zamknij"
#: snikket_web/templates/invite_view.html:50
#: snikket_web/templates/invite_view.html:56
msgid ""
"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."
msgstr ""
"Możesz przesłać to zaproszenie na swoje urządzenie mobilne, skanując "
"poniższy kod aparatem. Możesz również skorzystać ze skanera kodów QR lub "
"samej aplikacji Snikket."
#: snikket_web/templates/invite_view.html:55
#: snikket_web/templates/invite_view.html:61
msgid "Using a QR code scanner"
msgstr ""
msgstr "Używając skanera kodów QR"
#: snikket_web/templates/invite_view.html:57
#: snikket_web/templates/invite_view.html:63
msgid "Using the Snikket app"
msgstr ""
msgstr "Używając aplikacji Snikket"
#: snikket_web/templates/invite_view.html:62
#: snikket_web/templates/invite_view.html:68
msgid ""
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
msgstr ""
"Użyj skanera <em>kodów QR</em> na swoim urządzeniu mobilnym, by zeskanować "
"poniższy kod:"
#: snikket_web/templates/invite_view.html:68
#: snikket_web/templates/invite_view.html:74
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:69
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 "
"recognises it."
msgstr ""
"Zainstaluj aplikację Snikket na swoim urządzeniu mobilnym, otwórz ją, "
"następnie wciśnij przycisk \"Skanuj\" u góry."
#: snikket_web/templates/library.j2:18
msgid "Copy link"
msgstr "Skopiuj link"
#: snikket_web/templates/library.j2:80
#: snikket_web/templates/library.j2:81
msgid "Invalid input"
msgstr "Dane nieprawidłowe"
#: snikket_web/templates/library.j2:107
#: snikket_web/templates/library.j2:108
msgid "deleted"
msgstr "usunięty"
#: snikket_web/templates/library.j2:122
msgid "Can be used multiple times to create accounts on this Snikket service."
msgstr ""
"Może być wykorzystywany wielokrotnie, by utworzyć konto na tym serwerze "
"Snikket."
#: snikket_web/templates/library.j2:124
msgid "Can be used once to create an account on this Snikket service."
msgstr ""
"Może być wykorzystany jeden raz, by utworzyć konto na tym serwerze Snikket."
#: snikket_web/templates/login.html:5
msgid "Snikket Login"
msgstr "Snikket - Logowanie"
@@ -946,44 +1060,39 @@ msgstr "Wprowadź swój adres Snikket oraz hasło, aby zarządzać kontem."
msgid "Login failed"
msgstr "Logowanie nie powiodło się"
#: snikket_web/templates/user_home.html:3
#: snikket_web/templates/user_home.html:9
msgid "Welcome!"
msgstr "Witaj!"
#: snikket_web/templates/user_home.html:4
#: snikket_web/templates/user_home.html:10
#, python-format
msgid "Welcome home, %(user_name)s."
msgstr "Witaj w domu, %(user_name)s."
#: snikket_web/templates/user_home.html:8
msgid ""
"Change display name, set avatar and configure visibility of your personal "
"data to others."
msgstr ""
"Zmień wyświetlaną nazwę, ustaw awatar oraz skonfiguruj widoczność swoich "
"informacji dla innych."
#: snikket_web/templates/user_home.html:11
#: snikket_web/templates/user_passwd.html:32
msgid "Change password"
msgstr "Zmień hasło"
#: snikket_web/templates/user_home.html:15
msgid "Admin dashboard"
msgstr "Panel administracyjny"
#: snikket_web/templates/user_home.html:16
msgid "Manage users and invitations of this Snikket service."
msgstr "Zarządzaj użytkownikami oraz zaproszeniami na tym serwerze Snikket."
#: snikket_web/templates/user_home.html:14
msgid "Your account"
msgstr "Twoje konto"
#: snikket_web/templates/user_home.html:20
msgid "Log out"
msgstr "Wyloguj się"
msgid "Your XMPP address"
msgstr "Twój adres XMPP"
#: snikket_web/templates/user_home.html:21
msgid "Exit the Snikket Web Portal, without logging out your other devices."
#: snikket_web/templates/user_home.html:31
msgid "Edit profile"
msgstr "Edytuj profil"
#: snikket_web/templates/user_home.html:38
msgid "Your Snikket"
msgstr "Twój Snikket"
#: snikket_web/templates/user_home.html:40
msgid "Manage users, invitations and circles of your Snikket service."
msgstr ""
"Wyjdź z Portalu Użytkownika Snikket bez wylogowywania się z innych urządzeń."
"Zarządzaj użytkownikami, zaproszeniami oraz kręgami na tym serwerze Snikket."
#: snikket_web/templates/user_home.html:42
msgid "Admin panel"
msgstr "Panel administracyjny"
#: snikket_web/templates/user_logout.html:8
msgid "Sign out of the Snikket Web Portal"
@@ -1007,8 +1116,8 @@ msgid ""
"the new one. To reduce the chance of typos, we ask for your new password "
"twice."
msgstr ""
"Aby zmienić swoje hasło musisz podać również dotychczasowe. O podanie nowego "
"hasła prosimy podwójnie, by zminimalizować możliwość pomyłki."
"Aby zmienić swoje hasło, musisz podać również dotychczasowe. O podanie "
"nowego hasła prosimy podwójnie, by zminimalizować możliwość pomyłki."
#: snikket_web/templates/user_passwd.html:27
msgid ""
@@ -1017,15 +1126,19 @@ msgid ""
msgstr ""
"Po zmianie hasła na nowe, musisz je wprowadzić na każdym swoim urządzeniu."
#: snikket_web/templates/user_profile.html:8
#: snikket_web/templates/user_profile.html:7
msgid "Update your profile"
msgstr "Zaktualizuj swój profil"
#: snikket_web/templates/user_profile.html:9
msgid "Profile"
msgstr "Profil"
#: snikket_web/templates/user_profile.html:18
#: snikket_web/templates/user_profile.html:22
msgid "Visibility"
msgstr "Widoczność"
#: snikket_web/templates/user_profile.html:19
#: snikket_web/templates/user_profile.html:23
msgid ""
"This section allows you to control who can see your profile information, "
"like avatar and nickname."
@@ -1033,6 +1146,63 @@ msgstr ""
"Ta sekcja pozwoli ci na zarządzenie widocznością informacji o twoim profilu "
"przez innych, jak awatar lub pseudonim."
#~ msgid "Edit user %(user_name)s"
#~ msgstr "Edytuj użytkownika %(user_name)s"
#~ msgid "User information"
#~ msgstr "Informacje o użytkowniku"
#~ msgid ""
#~ "If the user has forgotten their password, use the below button to create "
#~ "a password reset link. The password reset link can be used once to change "
#~ "the password of the account. Transmit the link to the user via a secure "
#~ "channel."
#~ msgstr ""
#~ "Jeśli użytkownik zapomni swojego hasła, za pomocą poniższego przycisku "
#~ "wygenerujesz dla niego link do zresetowania hasła. Link może być "
#~ "wykorzystany jednorazowo do jego zmiany. Prześlij go do użytkownika za "
#~ "pomocą bezpiecznej formy kontaktu."
#~ msgid "<label for=\"link-field\">Link</label>"
#~ msgstr "<label for=\"link-field\">Link</label>"
#~ msgid "This circle cannot be modified"
#~ msgstr "Ten krąg nie może być modyfikowany"
#~ msgid "No users left"
#~ msgstr "Brak użytkowników do dodania"
#~ msgid ""
#~ "This invitation link can be used arbitrarily often, until it expires, is "
#~ "revoked or a service-wide user limit is reached."
#~ msgstr ""
#~ "Ten link z zaproszeniem może być wykorzystywany do momentu wygaśnięcia, "
#~ "unieważnienia lub osiągnięcia limitu użytkowników serwera."
#~ msgid "This invitation link can only be used once and is then depleted."
#~ msgstr "Ten link z zaproszeniem jest jednorazowy, wygasa po użyciu."
#~ msgid "Modify administrative user information or delete users."
#~ msgstr "Zmień informacje o użytkowniku lub usuń użytkowników."
#~ msgid "Back to the main view"
#~ msgstr "Powrót do strony głównej"
#~ msgid ""
#~ "Change display name, set avatar and configure visibility of your personal "
#~ "data to others."
#~ msgstr ""
#~ "Zmień wyświetlaną nazwę, ustaw awatar oraz skonfiguruj widoczność swoich "
#~ "danych dla innych."
#~ msgid "Admin dashboard"
#~ msgstr "Panel administracyjny"
#~ msgid "Exit the Snikket Web Portal, without logging out your other devices."
#~ msgstr ""
#~ "Wyjdź z Portalu Użytkownika Snikket bez wylogowywania się z innych "
#~ "urządzeń."
#~ msgid "Invite a group of people"
#~ msgstr "Zaproś grupę osób"

File diff suppressed because it is too large Load Diff