Compare commits

...

24 Commits

Author SHA1 Message Date
Matthew Wild
db363367da Support circles with multiple group chats, remove default group chat 2023-11-06 13:52:30 +00:00
Matthew Wild
7ce13b55ac Merge pull request #162 from snikket-im/feature/policies-and-contacts
Add policy URLs and contact addresses for instances in the relevant places
2023-10-25 16:19:44 +01:00
Matthew Wild
d6d4bb5afb Add policy URLs and contact addresses for instances in the relevant places 2023-10-25 16:18:12 +01:00
Kim Alvefur
da52771ebe Merge pull request #161 from Zash/fix-logout
Fix revokation of token on logout
2023-10-21 15:57:46 +02:00
Kim Alvefur
e39b6ca8bb Fix revokation of token on logout
In OAuth 2.0, you don't authenticate with the revocation endpoint using
the token you are revoking, but rather the OAuth client credentials.
2023-10-07 17:39:37 +02:00
Kim Alvefur
14368c5e9a Merge pull request #158 from Zash/prosody-split-user-roles
Update for role changes in Prosody
2023-10-07 14:17:58 +02:00
Kim Alvefur
2cdcf7f282 Update for role changes in Prosody
See https://hg.prosody.im/trunk/rev/082c7d856e61
2023-10-07 12:59:43 +02:00
Kim Alvefur
0f1e76e38c Merge pull request #157 from Zash/debian12
Switch base image to Debian 12
2023-10-07 12:58:58 +02:00
Kim Alvefur
ad9af20f12 Workaround for Flask context change 2023-10-04 23:27:05 +02:00
Kim Alvefur
9672cd6870 Install as many packages as possible from Debian
The only missing piece appears to be environ-config.

This **fails to start** with

```
ImportError: cannot import name '_app_ctx_stack' from 'quart' (/usr/lib/python3/dist-packages/quart/__init__.py)
```
2023-10-04 23:27:05 +02:00
Kim Alvefur
d3a6be7bec Switch base image to Debian 12 2023-08-07 08:47:55 +02:00
Kim Alvefur
7a4b56914c Switch to sassc for CSS building
Because https://github.com/Kronuz/pyScss/pull/426 is not yet in a
release, also just look at the diffstat!
2023-08-02 22:35:32 +02:00
Roberto Resoli
0f74b1b8f2 Translated using Weblate (Italian)
Currently translated at 91.8% (294 of 320 strings)

Translation: Snikket/Web Portal
Translate-URL: http://i18n.sotecware.net/projects/snikket/web-portal/it/
2023-07-13 11:17:54 +00:00
misiek
df78e8a8b0 Translated using Weblate (Polish)
Currently translated at 100.0% (320 of 320 strings)

Translation: Snikket/Web Portal
Translate-URL: http://i18n.sotecware.net/projects/snikket/web-portal/pl/
2023-04-04 14:11:31 +00:00
Kim Alvefur
77ccdd5eed Translated using Weblate (Swedish)
Currently translated at 100.0% (320 of 320 strings)

Translation: Snikket/Web Portal
Translate-URL: http://i18n.sotecware.net/projects/snikket/web-portal/sv/
2023-04-02 15:17:18 +00:00
uira
54b6cad7cd Translated using Weblate (Indonesian)
Currently translated at 100.0% (320 of 320 strings)

Translation: Snikket/Web Portal
Translate-URL: http://i18n.sotecware.net/projects/snikket/web-portal/id/
2023-04-02 15:17:15 +00:00
Jonas Schäfer
fbb618c178 Translated using Weblate (German)
Currently translated at 100.0% (320 of 320 strings)

Translation: Snikket/Web Portal
Translate-URL: http://i18n.sotecware.net/projects/snikket/web-portal/de/
2023-04-01 11:13:44 +00:00
Weblate
bd3d56851b Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Snikket/Web Portal
Translate-URL: http://i18n.sotecware.net/projects/snikket/web-portal/
2023-04-01 10:17:56 +00:00
Jonas Schäfer
c475b83c02 Merge pull request #154 from snikket-im/feature/protect-circle-deletion
Add confirmation step to circle deletion
2023-04-01 10:22:23 +02:00
Jonas Schäfer
d9b73055a8 Add confirmation step to circle deletion
Deleting a circle is highly destructive. It removes the group chat
alongside history, as well as the user list. It should definitely be
protected by a confirmation dialogue, I have no clue why it wasn't.

Fixes #153.
2023-04-01 10:08:52 +02:00
Matthew Wild
f37270594e Merge pull request #152 from snikket-im/fix/role-config
Follow new role scheme in Prosody
2023-03-29 20:16:36 +01:00
Jonas Schäfer
fcfcdbeb23 Follow new role scheme in Prosody
Prosody changed its role scheme to only support a single primary role
for each user. In addition, the names of the built-in roles have been
changed. We thus follow those changes to be compatible with the most
recent trunk.

One open question is whether we should switch admin -> operator here,
too (operator being a server-wide admin), but so far there's no need
to.
2023-03-29 18:42:53 +02:00
Jonas Schäfer
fd566b7f30 Merge pull request #151 from snikket-im/fix/user-listing-roles
Make AdminUserInfo compatible with new API
2023-03-28 22:23:06 +02:00
Jonas Schäfer
2762304ae8 Make AdminUserInfo compatible with new API
The mod_http_admin_api changed recently [1], so we need to follow
suit.

Fixes #149.

   [1]: https://hg.prosody.im/prosody-modules/rev/d68348323406
2023-03-28 22:21:07 +02:00
44 changed files with 1509 additions and 760 deletions

View File

@@ -1,28 +1,22 @@
FROM debian:bullseye-slim AS build
FROM debian:bookworm-slim AS build
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;
python3 python3-mypy python3-dotenv python3-toml python3-babel python3-distutils \
sassc make;
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
WORKDIR /opt/snikket-web-portal
RUN set -eu; \
pip3 install -r requirements.txt; \
pip3 install -r build-requirements.txt; \
make;
RUN make
FROM debian:bullseye-slim
FROM debian:bookworm-slim
ARG BUILD_SERIES=dev
ARG BUILD_ID=0
@@ -33,19 +27,19 @@ ENV SNIKKET_WEB_PYENV=/etc/snikket-web-portal/env.py
ENV SNIKKET_WEB_PROSODY_ENDPOINT=http://127.0.0.1:5280/
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
WORKDIR /opt/snikket-web-portal
RUN set -eu; \
export DEBIAN_FRONTEND=noninteractive ; \
apt-get update ; \
apt-get install -y --no-install-recommends \
python3 python3-pip python3-setuptools python3-wheel build-essential libpython3-dev netcat; \
pip3 install -r requirements.txt; \
apt-get remove -y --autoremove build-essential libpython3-dev; \
netcat-traditional python3 python3-setuptools python3-pip \
python3-aiohttp python3-email-validator python3-flask-babel \
python3-flaskext.wtf python3-hsluv python3-hypercorn \
python3-quart python3-typing-extensions python3-wtforms ; \
pip3 install --break-system-packages environ-config ; \
apt-get remove -y --purge python3-pip python3-setuptools; \
apt-get clean ; rm -rf /var/lib/apt/lists; \
pip3 install hypercorn; \
rm -rf /root/.cache;
HEALTHCHECK CMD nc -zv ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE:-127.0.0.1} ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT:-5765}

View File

@@ -6,7 +6,7 @@ translation_basepath = snikket_web/translations
pot_file = $(translation_basepath)/messages.pot
PYTHON3 ?= python3
SCSSC ?= $(PYTHON3) -m scss --load-path snikket_web/scss/
SCSSC ?= sassc --load-path snikket_web/scss/
all: build_css compile_translations
@@ -14,7 +14,7 @@ build_css: $(generated_css_files)
$(generated_css_files): snikket_web/static/css/%.css: snikket_web/scss/%.scss $(scss_files) $(scss_includes)
mkdir -p snikket_web/static/css/
$(SCSSC) -o "$@" "$<"
$(SCSSC) "$<" "$@"
clean:
rm -f $(generated_css_files)

View File

@@ -1,4 +1,3 @@
pyscss~=1.3
mypy
python-dotenv~=0.15
types-toml

View File

@@ -5,6 +5,11 @@ if [ -n "${SNIKKET_SITE_NAME:-}" ]; then
export SNIKKET_WEB_SITE_NAME="$SNIKKET_SITE_NAME"
fi
export SNIKKET_WEB_TOS_URI="${SNIKKET_TOS_URI}"
export SNIKKET_WEB_PRIVACY_URI="${SNIKKET_PRIVACY_URI}"
export SNIKKET_WEB_ABUSE_EMAIL="${SNIKKET_ABUSE_EMAIL}"
export SNIKKET_WEB_SECURITY_EMAIL="${SNIKKET_SECURITY_EMAIL}"
export SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE="${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE-127.0.0.1}"
export SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT="${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT-5765}"

View File

@@ -170,6 +170,10 @@ class AppConfig:
# tools may also very well override it.
max_avatar_size = environ.var(1024*1024, converter=int)
show_metrics = environ.bool_var(True)
tos_uri = environ.var("")
privacy_uri = environ.var("")
abuse_email = environ.var("")
security_email = environ.var("")
_UPPER_CASE = "".join(map(chr, range(ord("A"), ord("Z")+1)))
@@ -202,6 +206,10 @@ def create_app() -> quart.Quart:
app.config["APPLE_STORE_URL"] = config.apple_store_url
app.config["MAX_AVATAR_SIZE"] = config.max_avatar_size
app.config["SHOW_METRICS"] = config.show_metrics
app.config["TOS_URI"] = config.tos_uri
app.config["PRIVACY_URI"] = config.privacy_uri
app.config["ABUSE_EMAIL"] = config.abuse_email
app.config["SECURITY_EMAIL"] = config.security_email
app.context_processor(proc)
app.register_error_handler(

View File

@@ -77,7 +77,7 @@ class EditUserForm(BaseForm):
_l("Access Level"),
choices=[
("prosody:restricted", _("Limited")),
("prosody:normal", _l("Normal user")),
("prosody:registered", _l("Normal user")),
("prosody:admin", _l("Administrator")),
],
)
@@ -116,7 +116,7 @@ async def edit_user(localpart: str) -> typing.Union[werkzeug.Response, str]:
await client.update_user(
localpart,
display_name=form.display_name.data,
roles=[form.role.data],
role=form.role.data,
)
await flash(
@@ -131,7 +131,7 @@ async def edit_user(localpart: str) -> typing.Union[werkzeug.Response, str]:
if target_user_info.roles:
form.role.data = target_user_info.roles[0]
else:
form.role.data = "prosody:normal"
form.role.data = "prosody:registered"
return await render_template(
"admin_edit_user.html",
@@ -452,16 +452,14 @@ class EditCircleForm(BaseForm):
_l("Update circle")
)
action_delete = wtforms.SubmitField(
_l("Delete circle permanently")
)
action_remove_user = wtforms.StringField()
action_add_user = wtforms.SubmitField(
_l("Add user")
)
action_remove_group_chat = wtforms.StringField()
@bp.route("/circle/<id_>", methods=["GET", "POST"])
@client.require_admin_session()
@@ -515,13 +513,6 @@ async def edit_circle(id_: str) -> typing.Union[str, werkzeug.Response]:
_("Circle data updated"),
"success",
)
elif form.action_delete.data:
await client.delete_group(id_)
await flash(
_("Circle deleted"),
"success",
)
return redirect(url_for(".circles"))
elif form.action_add_user.data:
if form.user_to_add.data in valid_users:
await client.add_group_member(
@@ -541,6 +532,15 @@ async def edit_circle(id_: str) -> typing.Union[str, werkzeug.Response]:
_("User removed from circle"),
"success",
)
elif form.action_remove_group_chat.data:
await client.remove_group_chat(
id_,
form.action_remove_group_chat.data,
)
await flash(
_("Chat removed from circle"),
"success",
)
return redirect(url_for(".edit_circle", id_=id_))
@@ -548,11 +548,103 @@ async def edit_circle(id_: str) -> typing.Union[str, werkzeug.Response]:
"admin_edit_circle.html",
target_circle=circle,
form=form,
circle_chats=circle.chats,
circle_members=circle_members,
invite_form=invite_form,
)
class DeleteCircleForm(BaseForm):
action_delete = wtforms.SubmitField(
_l("Delete circle permanently")
)
@bp.route("/circle/<id_>/delete", methods=["GET", "POST"])
@client.require_admin_session()
async def delete_circle(id_: str) -> typing.Union[str, werkzeug.Response]:
async with client.authenticated_session() as session:
try:
circle = await client.get_group_by_id(
id_,
session=session,
)
except aiohttp.ClientResponseError as exc:
if exc.status == 404:
await flash(
_("No such circle exists"),
"alert",
)
return redirect(url_for(".circles"))
raise
form = DeleteCircleForm()
if form.validate_on_submit():
if form.action_delete.data:
await client.delete_group(id_)
await flash(
_("Circle deleted"),
"success",
)
return redirect(url_for(".circles"))
return await render_template(
"admin_delete_circle.html",
target_circle=circle,
form=form,
)
class AddCircleChatForm(BaseForm):
name = wtforms.StringField(
_l("Group chat name"),
validators=[wtforms.validators.InputRequired()],
)
action_save = wtforms.SubmitField(
_l("Create group chat")
)
@bp.route("/circle/<id_>/add_chat", methods=["GET", "POST"])
@client.require_admin_session()
async def edit_circle_add_chat(
id_: str
) -> typing.Union[str, werkzeug.Response]:
async with client.authenticated_session() as session:
try:
circle = await client.get_group_by_id(
id_,
session=session,
)
except aiohttp.ClientResponseError as exc:
if exc.status == 404:
await flash(
_("No such circle exists"),
"alert",
)
return redirect(url_for(".circles"))
raise
form = AddCircleChatForm()
if form.validate_on_submit():
if form.action_save.data:
await client.add_group_chat(id_, form.name.data)
await flash(
_("New group chat added to circle"),
"success",
)
return redirect(url_for(".edit_circle", id_=id_))
return await render_template(
"admin_create_circle_chat.html",
target_circle=circle,
group_chat_form=form,
)
_CPU_EPOCH = time.process_time()
_MONOTONIC_EPOCH = time.monotonic()

View File

@@ -173,6 +173,42 @@ async def avatar(from_: str, code: str) -> quart.Response:
return response
@bp.route("/terms")
async def terms() -> Response:
if not current_app.config["TOS_URI"]:
return Response("", 404)
return Response("", status=303, headers={
"Location": current_app.config["TOS_URI"],
})
@bp.route("/privacy")
async def privacy() -> Response:
if not current_app.config["PRIVACY_URI"]:
return Response("", 404)
return Response("", status=303, headers={
"Location": current_app.config["PRIVACY_URI"],
})
# This is linked from the iOS app and about page
@bp.route("/policies/")
async def policies() -> str:
return await render_template(
"policies.html",
)
@bp.route("/.well-known/security.txt")
async def securitytxt() -> Response:
return Response(
await render_template("security.txt"),
mimetype="text/plain;charset=UTF-8",
)
@bp.route("/_health")
async def health() -> Response:
return Response("STATUS OK", content_type="text/plain")

View File

@@ -16,18 +16,20 @@ import aiohttp
import xml.etree.ElementTree as ET
from quart import (
current_app, _app_ctx_stack, session as http_session, abort, redirect,
current_app, session as http_session, abort, redirect,
url_for,
)
import quart
from flask import g as _app_ctx_stack
import werkzeug.exceptions
from . import xmpputil
from .xmpputil import split_jid
SCOPE_DEFAULT = "prosody:user"
SCOPE_DEFAULT = "prosody:registered"
SCOPE_ADMIN = "prosody:admin"
@@ -61,12 +63,18 @@ class AdminUserInfo:
cls,
data: typing.Mapping[str, typing.Any],
) -> "AdminUserInfo":
try:
roles: typing.Optional[typing.List[str]] = [data["role"]]
assert roles is not None # make mypy happy
roles.extend(data.get("secondary_roles", []))
except KeyError:
roles = data.get("roles")
return cls(
localpart=data["username"],
display_name=data.get("display_name") or None,
email=data.get("email") or None,
phone=data.get("phone") or None,
roles=data.get("roles"),
roles=roles,
)
@@ -109,12 +117,30 @@ class AdminInviteInfo:
)
@dataclasses.dataclass(frozen=True)
class AdminGroupChatInfo:
id_: str
jid: str
name: str
@classmethod
def from_api_response(
cls,
data: typing.Mapping[str, typing.Any],
) -> "AdminGroupChatInfo":
return cls(
id_=data["id"],
jid=data["jid"],
name=data["name"],
)
@dataclasses.dataclass(frozen=True)
class AdminGroupInfo:
id_: str
name: str
muc_jid: typing.Optional[str]
members: typing.Collection[str]
chats: typing.Collection[AdminGroupChatInfo]
@classmethod
def from_api_response(
@@ -124,8 +150,11 @@ class AdminGroupInfo:
return cls(
id_=data["id"],
name=data["name"],
muc_jid=data.get("muc_jid") or None,
members=data.get("members", []),
chats=[
AdminGroupChatInfo.from_api_response(x)
for x in data.get("chats", [])
]
)
@@ -160,7 +189,7 @@ class HTTPSessionManager:
})
async def teardown(self, exc: typing.Optional[BaseException]) -> None:
app_ctx = _app_ctx_stack.top
app_ctx = _app_ctx_stack
try:
session = getattr(app_ctx, self._app_context_attribute)
except AttributeError:
@@ -177,7 +206,7 @@ class HTTPSessionManager:
await session.__aexit__(exc_type, exc, traceback)
async def __aenter__(self) -> aiohttp.ClientSession:
app_ctx = _app_ctx_stack.top
app_ctx = _app_ctx_stack
try:
return getattr(app_ctx, self._app_context_attribute)
except AttributeError:
@@ -879,7 +908,7 @@ class ProsodyClient:
localpart: str,
*,
display_name: typing.Optional[str],
roles: typing.Optional[typing.Collection[str]],
role: typing.Optional[str],
session: aiohttp.ClientSession,
) -> None:
payload: typing.Dict[str, typing.Any] = {
@@ -887,8 +916,8 @@ class ProsodyClient:
}
if display_name is not None:
payload["display_name"] = display_name
if roles is not None:
payload["roles"] = list(roles)
if role is not None:
payload["role"] = role
async with session.put(
self._admin_v1_endpoint("/users/{}".format(localpart)),
@@ -1024,7 +1053,7 @@ class ProsodyClient:
self,
name: str,
*,
create_muc: bool = True,
create_muc: bool = False,
session: aiohttp.ClientSession,
) -> AdminGroupInfo:
payload = {
@@ -1099,6 +1128,27 @@ class ProsodyClient:
) as resp:
self._raise_error_from_response(resp)
@autosession
async def add_group_chat(
self,
id_: str,
name: str,
*,
session: aiohttp.ClientSession,
) -> None:
payload: typing.Dict[str, typing.Any] = {
"name": name,
}
async with session.post(
self._admin_v1_endpoint(
"/groups/{}/chats".format(id_)
),
json=payload,
) as resp:
self._raise_error_from_response(resp)
@autosession
async def remove_group_member(
self,
@@ -1114,6 +1164,21 @@ class ProsodyClient:
) as resp:
self._raise_error_from_response(resp)
@autosession
async def remove_group_chat(
self,
group_id: str,
chat_id: str,
*,
session: aiohttp.ClientSession,
) -> None:
async with session.delete(
self._admin_v1_endpoint(
"/groups/{}/chats/{}".format(group_id, chat_id)
),
) as resp:
self._raise_error_from_response(resp)
@autosession
async def delete_group(
self,
@@ -1154,7 +1219,6 @@ class ProsodyClient:
self._raise_error_from_response(resp)
return True
@autosession
async def revoke_token(
self,
*,
@@ -1168,7 +1232,8 @@ class ProsodyClient:
async def logout(self) -> None:
try:
await self.revoke_token()
async with self._plain_session as session:
await self.revoke_token(session=session)
except aiohttp.ClientError:
self.logger.warn("failed to revoke token!",
exc_info=True)

View File

@@ -275,22 +275,22 @@ div.form.layout-expanded {
}
@each $type in $text-entry-inputs {
input[type=$type] {
input[type=#{$type}] {
width: 100%;
border: none;
border-bottom: $w-s4 solid $primary-500;
margin-bottom: -$w-s4;
}
input[type=$type].has-error {
input[type=#{$type}].has-error {
border-right: $w-s4 solid $alert-500;
}
input[type=$type]:hover {
input[type=#{$type}]:hover {
border-bottom-color: $primary-700;
}
input[type=$type]:focus {
input[type=#{$type}]:focus {
border-bottom-color: $primary-800;
}
}
@@ -646,69 +646,6 @@ input[type="submit"], button, .button {
/* button, .button {
margin: 0 $w-s2;
}
button.lv-primary, .button.lv-primary {
background-color: $gray-500;
color: $gray-900;
border-radius: $w-s4;
border: $w-s4 solid $gray-400;
@each $type, $values in $colours {
&.c-#{$type} {
border-color: nth($values, 4);
background-color: nth($values, 5);
color: nth($values, 9);
}
&.c-#{$type}:hover {
background-color: nth($values, 4);
}
}
}
button.lv-secondary, .button.lv-secondary {
background-color: $gray-700;
color: $gray-100;
border-radius: $w-s4;
@each $type, $values in $colours {
&.c-#{$type} {
background-color: nth($values, 7);
color: nth($values, 1);
}
}
}
button.lv-tertiary, .button.lv-tertiary {
background-color: inherit;
color: $gray-300;
border-radius: $w-s4;
text-decoration: underline;
@each $type, $values in $colours {
&.c-#{$type} {
color: nth($values, 3);
}
}
}
*/
/*
button.lv-secondary.c-#{$type}, .button.lv-secondary.c-#{$type} {
background-color: nth($values, 7);
color: nth($values, 1);
}
button.lv-tertiary.c-#{$type}, .button.lv-tertiary.c-#{$type} {
color: nth($values, 3);
text-decoration: underline;
background-color: transparent;
}
}*/
/* boxes */
.box {
@@ -1121,7 +1058,7 @@ pre.guru-meditation {
}
@each $type in $text-entry-inputs {
input[type=$type] {
input[type=#{$type}] {
background-color: black;
}

View File

@@ -6,16 +6,20 @@
{% block body %}
<main>
<div class="box el-2">
<h1>{% trans %}About Snikket{% endtrans %}</h1>
<p>{% trans snikket_url="https://snikket.org" %}To learn more about Snikket, visit the <a href="{{ snikket_url}}">Snikket website</a>.{% endtrans %}</p>
<h2>{% trans %}About this Service{% endtrans %}</h2>
<p>{% trans site_name=config["SITE_NAME"] %}This is the Snikket service <em>{{ site_name }}</em>.{% endtrans %}</p>
<p>{% trans site_name=config["SITE_NAME"] %}This is the Snikket service <em>{{ site_name }}</em>, running open-source software from the Snikket project.{% endtrans %}</p>
<p>{% trans snikket_url="https://snikket.org" %}To learn more about Snikket, visit the <a href="{{ snikket_url}}">Snikket website</a>.{% endtrans %}</p>
<p><a href="/policies/">{% trans %}View service policies{% endtrans %}</a>
<h3>{% trans %}Licenses{% endtrans %}</h3>
<p>{% trans agpl_url="https://www.gnu.org/licenses/agpl.html" %}The web portal software is licensed under the terms of the <a href="{{ agpl_url }}">Affero GNU General Public License, version 3.0 or later</a>. The full terms of the license can be reviewed using the aforementioned link.{% endtrans %}</p>
<p>{% trans source_url="https://github.com/snikket-im/snikket-web-portal/" %}The source code of the web portal can be downloaded and viewed in <a href="{{ source_url }}">its GitHub repository</a>.{% endtrans %}</p>
<p>{% trans source_url="https://material.io/resources/icons/", apache20_url="https://www.apache.org/licenses/LICENSE-2.0.txt" %}The icons used in the web portal are <a href="{{ source_url }}">Googles Material Icons</a>, made available by Google under the terms of the <a href="{{ apache20_url }}">Apache 2.0 License</a>.{% endtrans %}</p>
<h3>{% trans %}Trademarks{% endtrans %}</h3>
<p>{% trans trademarks_url="https://snikket.org/about/trademarks/" %}“Snikket” and the parrot logo are trademarks of Snikket Community Interest Company. For more information about the trademarks, visit the <a href="{{ trademarks_url }}">Snikket Trademarks information page</a>.{% endtrans %}
<h3>{% trans %}Software Versions{% endtrans %}</h3>
<pre>Domain: {{ config["SNIKKET_DOMAIN"] }}
Web Portal{% if version %} ({{ version }}){% endif %}
@@ -27,6 +31,7 @@ Web Portal{% if version %} ({{ version }}){% endif %}
{% for name, version in extra_versions.items() %}
{{ name }} ({{ version }}){% endfor %}
{%- endif -%}</pre>
<p>
{%- call standard_button("back", url_for("index"), class="primary") -%}
{% trans %}Back to the main page{% endtrans %}

View File

@@ -3,7 +3,7 @@
{% block content %}
<h1>{% trans %}Manage circles{% endtrans %}</h1>
<p>{% trans %}<em>Circles</em> aim to help people who are in the same social circle find each other on your service.{% endtrans %}</p>
<p>{% trans %}Users who are in the same circle will see each other in their contact list. In addition, each circle has a group chat where the circle members are included.{% endtrans %}</p>
<p>{% trans %}Users who are in the same circle will see each other in their contact list. In addition, each circle may have group chats where the circle members are included.{% endtrans %}</p>
{%- if circles -%}
<form method="POST" action="{{ url_for(".create_invite") }}">
{{- invite_form.csrf_token -}}

View File

@@ -0,0 +1,5 @@
{% extends "admin_app.html" %}
{% block content %}
<h1>{{ target_circle.name }}</h1>
{%- include "admin_create_circle_group_chat_form.html" -%}
{% endblock %}

View File

@@ -0,0 +1,15 @@
{% from "library.j2" import form_button, render_errors %}
<form method="POST" action="{{ url_for(".edit_circle_add_chat", id_=target_circle.id_) }}">
{{- group_chat_form.csrf_token -}}
<div class="form layout-expanded">
<h2 class="form-title">{% trans %}Create new circle group chat{% endtrans %}</h2>
<p class="form-descr weak">{% trans %}Add a chat to your circle so its members can hold group discussions.{% endtrans %}</p>
<p class="form-descr weak"><strong>{% trans %}Tip:{% endtrans %}</strong> {% trans %}This is only for creating group chats that automatically include <em>all</em> members of the circle. If you want a normal group chat, create it in the Snikket app instead.{% endtrans %}</p>
<div class="f-ebox">
{{ group_chat_form.name.label }}
{{ group_chat_form.name }}
</div>
<div class="f-bbox">
{%- call form_button("add", group_chat_form.action_save, class="primary") %}{% endcall -%}
</div>
</div></form>

View File

@@ -0,0 +1,21 @@
{% extends "admin_app.html" %}
{% from "library.j2" import box, form_button, standard_button %}
{% block content %}
<h1>{% trans circle_name=target_circle.name %}Delete circle {{ circle_name }}{% endtrans %}</h1>
<div class="form layout-expanded"><form method="POST">
<h2 class="form-title">{% trans %}Delete circle{% endtrans %}</h2>
{{ form.csrf_token }}
<p class="form-descr">{% trans %}Are you sure you want to delete the following circle?{% endtrans %}</p>
<dl>
<dt>{% trans %}Name{% endtrans %}</dt>
<dd>{{ target_circle.name }}</dd>
</dl>
{% call box("alert", _("Danger")) %}
<p>{% trans %}The circle and the corresponding chat will be deleted, permanently and immediately upon pushing the below button. <strong>There is no way back!</strong>{% endtrans %}</p>
{% endcall %}
<div class="f-bbox">
{%- call standard_button("back", url_for(".edit_circle", id_=target_circle.id_), class="tertiary") %}{% trans %}Back{% endtrans %}{% endcall -%}
{%- call form_button("delete", form.action_delete, class="primary danger") %}{% endcall -%}
</div>
</form></div>
{% endblock %}

View File

@@ -13,13 +13,6 @@
<div class="box hint form layout-expanded">
<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>
<div><input type="text" readonly="readonly" id="circle-muc-jid" value="{{ target_circle.muc_jid }}"></div>
{%- call clipboard_button(target_circle.muc_jid, show_label=True) -%}
{%- trans -%}Copy address{%- endtrans -%}
{%- endcall -%}
{%- endif -%}
</div>
{%- else -%}
<div class="form layout-expanded">
@@ -28,17 +21,6 @@
{{ form.name.label }}
{{ form.name }}
</div>
<div class="f-ebox">
{%- if target_circle.muc_jid -%}
<label for="circle-muc-jid">{% trans %}Group chat address{% endtrans %}</label>
<input type="text" readonly="readonly" id="circle-muc-jid" value="{{ target_circle.muc_jid }}">
{%- call clipboard_button(target_circle.muc_jid, show_label=True) -%}
{%- trans -%}Copy address{%- endtrans -%}
{%- endcall -%}
{%- else -%}
<p>{% trans %}This circle has no group chat associated.{% endtrans %}<p>
{%- endif -%}
</div>
<div class="f-bbox">
{%- call standard_button("back", url_for(".circles"), class="tertiary") -%}
{% trans %}Return to circle list{% endtrans %}
@@ -48,11 +30,43 @@
<h3 class="form-title">{% trans %}Delete circle{% endtrans %}</h3>
<p class="form-desc">{% trans %}Deleting a circle does not delete any users in the circle.{% endtrans %}</p>
<div class="f-bbox">
{%- call form_button("delete", form.action_delete, class="secondary danger") %}{% endcall -%}
{%- call standard_button("delete", url_for(".delete_circle", id_=target_circle.id_), class="secondary danger") %}{% trans %}Delete circle{% endtrans %}{% endcall -%}
</div>
</div>
{%- endif -%}
<h2 id="chats">{% trans %}Group chats{% endtrans %}</h2>
<p>{% trans %}These group chats will be available to all members of the circle.{% endtrans %}</p>
{%- if circle_chats -%}
<div class="el-2 elevated"><table>
<thead>
<th>{% trans %}Name{% endtrans %}</th>
<th>{% trans %}Actions{% endtrans %}</th>
</thead>
<tbody>
{%- for chat in circle_chats -%}
<tr>
<td class="collapsible">{% call value_or_hint(chat.name) %}{% endcall %}</td>
<td class="nowrap">
{%- call custom_form_button("delete", form.action_remove_group_chat.name, chat.id_, class="primary danger", slim=True) -%}
{% trans name=chat.name %}Delete group chat '{{ name }}'{% endtrans %}
{%- endcall -%}
</td>
</tr>
{%- endfor -%}
</tbody>
</table></div>
{%- else -%}
<p>{% trans %}This circle currently has no group chats.{% endtrans %}</p>
{%- endif -%}
{%- call standard_button("add", url_for(".edit_circle_add_chat", id_=target_circle.id_), class="secondary") -%}
{% trans %}Add group chat{% endtrans %}
{%- endcall -%}
<h2 id="members">{% trans %}Circle members{% endtrans %}</h2>
<p>{% trans %}All members of the circle will see each other in their contact list.{% endtrans %}</p>
{%- if circle_members -%}
<div class="el-2 elevated"><table>
<thead>

View File

@@ -3,7 +3,7 @@
{% macro access_level_description(role, caller=None) %}
{%- if role == "prosody:restricted" -%}
{% trans %}Limited users can interact with users on the same Snikket service and be members of circles.{% endtrans %}
{%- elif role == "prosody:normal" -%}
{%- elif role == "prosody:registered" -%}
{% trans %}Like limited users and can also interact with users on other Snikket services.{% endtrans %}
{%- elif role == "prosody:admin" -%}
{% trans %}Like normal users and can access the admin panel in the web portal.{% endtrans %}

View File

@@ -17,6 +17,13 @@
{%- 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 -%}
{%- if config["TOS_URI"] and config["PRIVACY_URI"] -%}
<p>
{% trans site_name=config["SITE_NAME"], tos_uri=config["TOS_URI"], privacy_uri=config["PRIVACY_URI"] %}By continuing, you agree to the <a href="{{tos_uri}}">Terms of Service</a> and <a href="{{privacy_uri}}">Privacy Policy</a>.{% 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>

View File

@@ -0,0 +1,39 @@
{% extends "base.html" %}
{% from "library.j2" import standard_button %}
{% block head_lead %}
<title>{% trans %}Policies{% endtrans %} - {{ config["SITE_NAME"] }}</title>
{% endblock %}
{% block body %}
<main>
<div class="box el-2">
<h1>{{ config["SITE_NAME"] }}</h1>
<h2>{% trans %}Policies{% endtrans %}</h2>
{% if config["TOS_URI"] or config["PRIVACY_URI"] -%}
<p>{% trans %}Use of this service is subject to the following policies:{% endtrans %}</p>
<ul>
{%- if config["TOS_URI"] %}
<li><a href="{{ config["TOS_URI"] }}">{% trans %}Terms of Service{% endtrans %}</a></li>
{%- endif %}
{%- if config["PRIVACY_URI"] %}
<li><a href="{{ config["PRIVACY_URI"] }}">{% trans %}Privacy Policy{% endtrans %}</a></li>
{%- endif %}
</ul>
{%- else -%}
<p>{% trans %}Please contact the administrator of this instance if you have questions about policies.{% endtrans %}</p>
{% endif -%}
<p>{% trans url="https://snikket.org/app/privacy/" %}Use of the Snikket apps is subject to the <a href="{{url}}">Snikket Apps Privacy Policy</a>.{% endtrans %}</p>
{%- if config["ABUSE_EMAIL"] %}
<p>{% trans email=config["ABUSE_EMAIL"], domain=config["SNIKKET_DOMAIN"] %}To report policy violations or other abuse from this service, please send an email to {{email}}. Specify the domain name of this instance ({{domain}}) and include details of the incident(s).{% endtrans %}</p>
{%- endif %}
<p>
{%- call standard_button("back", url_for("index"), class="primary") -%}
{% trans %}Back to the main page{% endtrans %}
{%- endcall -%}
</p>
</div>
</main>
{% endblock %}

View File

@@ -0,0 +1,16 @@
# {{ config["SNIKKET_DOMAIN"] }} is running open-source software
# from the Snikket project: https://snikket.org/
{% if config["SECURITY_EMAIL"] -%}
# Security issues related to this service should be addressed to the
# following security contact:
Contact: mailto:{{ config["SECURITY_EMAIL"] }}
{% else -%}
# This service does not have a public security contact. You might find
# more information about the service at the following link:
Contact: https://{{ config["SNIKKET_DOMAIN"] }}/policies/
{%- endif %}
# Please report software defects to the project developers, per the
# instructions at the following link:
Contact: https://snikket.org/security/

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-07 22:31+0200\n"
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
"PO-Revision-Date: 2022-05-30 14:01+0000\n"
"Last-Translator: Daniel Holmgaard <fovatis@tutanota.com>\n"
"Language-Team: Danish <http://i18n.sotecware.net/projects/snikket/web-portal/"
@@ -145,6 +145,7 @@ msgid "Invitation revoked"
msgstr "Invitation tilbagekaldt"
#: snikket_web/admin.py:394 snikket_web/admin.py:442
#: snikket_web/templates/admin_delete_circle.html:10
msgid "Name"
msgstr "Navn"
@@ -164,51 +165,51 @@ msgstr "Vælg bruger"
msgid "Update circle"
msgstr "Opdater cirkel"
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Slet cirkel permanent"
#: snikket_web/admin.py:462
#: snikket_web/admin.py:458
msgid "Add user"
msgstr "Tilføj bruger"
#: snikket_web/admin.py:478
#: snikket_web/admin.py:474 snikket_web/admin.py:563
msgid "No such circle exists"
msgstr "Denne cirkel findes ikke"
#: snikket_web/admin.py:515
#: snikket_web/admin.py:511
msgid "Circle data updated"
msgstr "Cirkel-data opdateret"
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "Cirkel slettet"
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Bruger tilføjet til cirkel"
#: snikket_web/admin.py:541
#: snikket_web/admin.py:530
msgid "User removed from circle"
msgstr "Bruger fjernet fra cirkel"
#: snikket_web/admin.py:610
#: snikket_web/admin.py:547
msgid "Delete circle permanently"
msgstr "Slet cirkel permanent"
#: snikket_web/admin.py:574
msgid "Circle deleted"
msgstr "Cirkel slettet"
#: snikket_web/admin.py:640
msgid "Message contents"
msgstr "Meddelelsens indhold"
#: snikket_web/admin.py:616
#: snikket_web/admin.py:646
msgid "Only send to online users"
msgstr "Send kun til online brugere"
#: snikket_web/admin.py:620
#: snikket_web/admin.py:650
msgid "Post to all users"
msgstr "Send til alle brugere"
#: snikket_web/admin.py:624
#: snikket_web/admin.py:654
msgid "Send preview to yourself"
msgstr "Send forhåndsvisning til dig selv"
#: snikket_web/admin.py:646
#: snikket_web/admin.py:676
msgid "Announcement sent!"
msgstr "Bekendgørelse sendt!"
@@ -585,6 +586,53 @@ msgstr "Rå fejlretningsdump"
msgid "Copy complete output"
msgstr "Kopier komplet output"
#: snikket_web/templates/admin_delete_circle.html:4
#, fuzzy, python-format
#| msgid "Edit circle %(circle_name)s"
msgid "Delete circle %(circle_name)s"
msgstr "Rediger cirkel %(circle_name)s"
#: snikket_web/templates/admin_delete_circle.html:6
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:51
msgid "Delete circle"
msgstr "Slet cirkel"
#: snikket_web/templates/admin_delete_circle.html:8
#, fuzzy
#| msgid "Are you sure you want to delete the following user?"
msgid "Are you sure you want to delete the following circle?"
msgstr "Er du sikker på, at du vil slette følgende bruger?"
#: snikket_web/templates/admin_delete_circle.html:13
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Fare"
#: snikket_web/templates/admin_delete_circle.html:14
#, fuzzy
#| msgid ""
#| "The user and their data will be deleted irrevocably, permanently and "
#| "immediately upon pushing the below button. <strong>There is no way back!</"
#| "strong>"
msgid ""
"The circle and the corresponding chat will be deleted, permanently and "
"immediately upon pushing the below button. <strong>There is no way back!</"
"strong>"
msgstr ""
"Brugeren og deres data slettes uigenkaldeligt, permanent og straks efter "
"tryk på nedenstående knap. <strong>Der er ingen vej tilbage!</strong>"
#: snikket_web/templates/admin_delete_circle.html:17
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Tilbage"
#: snikket_web/templates/admin_delete_user.html:4
#, python-format
msgid "Delete user %(user_name)s"
@@ -599,10 +647,6 @@ msgstr "Slet bruger"
msgid "Are you sure you want to delete the following user?"
msgstr "Er du sikker på, at du vil slette følgende bruger?"
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Fare"
#: snikket_web/templates/admin_delete_user.html:16
msgid ""
"The user and their data will be deleted irrevocably, permanently and "
@@ -612,15 +656,6 @@ msgstr ""
"Brugeren og deres data slettes uigenkaldeligt, permanent og straks efter "
"tryk på nedenstående knap. <strong>Der er ingen vej tilbage!</strong>"
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Tilbage"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr "Dette er din hovedcirkel"
@@ -653,10 +688,6 @@ msgstr "Denne cirkel er ikke tilknyttet nogen gruppechat."
msgid "Return to circle list"
msgstr "Retur til cirkeliste"
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "Slet cirkel"
#: snikket_web/templates/admin_edit_circle.html:49
msgid "Deleting a circle does not delete any users in the circle."
msgstr "Sletning af en cirkel vil ikke slette brugere i cirklen."

View File

@@ -6,9 +6,9 @@
msgid ""
msgstr ""
"Project-Id-Version: SnikketWeb 0.1.0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-07 22:31+0200\n"
"PO-Revision-Date: 2022-01-18 14:59+0000\n"
"Report-Msgid-Bugs-To: translations@snikket.org\n"
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
"PO-Revision-Date: 2023-04-01 11:13+0000\n"
"Last-Translator: Jonas Schäfer <jonas@zombofant.net>\n"
"Language-Team: German <http://i18n.sotecware.net/projects/snikket/web-portal/"
"de/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.8.1\n"
"X-Generator: Weblate 4.14.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
@@ -145,6 +145,7 @@ msgid "Invitation revoked"
msgstr "Einladung gelöscht"
#: snikket_web/admin.py:394 snikket_web/admin.py:442
#: snikket_web/templates/admin_delete_circle.html:10
msgid "Name"
msgstr "Name"
@@ -164,51 +165,51 @@ msgstr "Benutzer auswählen"
msgid "Update circle"
msgstr "Gemeinschaft ändern"
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Gemeinschaft endgültig löschen"
#: snikket_web/admin.py:462
#: snikket_web/admin.py:458
msgid "Add user"
msgstr "Benutzer hinzufügen"
#: snikket_web/admin.py:478
#: snikket_web/admin.py:474 snikket_web/admin.py:563
msgid "No such circle exists"
msgstr "Diese Gemeinschaft existiert nicht"
#: snikket_web/admin.py:515
#: snikket_web/admin.py:511
msgid "Circle data updated"
msgstr "Gemeinschaftsdaten aktualisiert"
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "Gemeinschaft gelöscht"
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Benutzer zur Gemeinschaft hinzugefügt"
#: snikket_web/admin.py:541
#: snikket_web/admin.py:530
msgid "User removed from circle"
msgstr "Benutzer aus der Gemeinschaft entfernt"
#: snikket_web/admin.py:610
#: snikket_web/admin.py:547
msgid "Delete circle permanently"
msgstr "Gemeinschaft endgültig löschen"
#: snikket_web/admin.py:574
msgid "Circle deleted"
msgstr "Gemeinschaft gelöscht"
#: snikket_web/admin.py:640
msgid "Message contents"
msgstr "Nachrichteninhalt"
#: snikket_web/admin.py:616
#: snikket_web/admin.py:646
msgid "Only send to online users"
msgstr "Nur an verbundene Benutzer senden"
#: snikket_web/admin.py:620
#: snikket_web/admin.py:650
msgid "Post to all users"
msgstr "An alle Benutzer senden"
#: snikket_web/admin.py:624
#: snikket_web/admin.py:654
msgid "Send preview to yourself"
msgstr "Vorschau an dich selbst senden"
#: snikket_web/admin.py:646
#: snikket_web/admin.py:676
msgid "Announcement sent!"
msgstr "Ankündigung verschickt!"
@@ -585,6 +586,46 @@ msgstr "Rohe Debug-Ausgabe"
msgid "Copy complete output"
msgstr "Komplette Ausgabe kopieren"
#: snikket_web/templates/admin_delete_circle.html:4
#, python-format
msgid "Delete circle %(circle_name)s"
msgstr "Gemeinschaft %(circle_name)s löschen"
#: snikket_web/templates/admin_delete_circle.html:6
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:51
msgid "Delete circle"
msgstr "Gemeinschaft löschen"
#: snikket_web/templates/admin_delete_circle.html:8
msgid "Are you sure you want to delete the following circle?"
msgstr "Bist du sicher dass du die folgende Gemeinschaft löschen willst?"
#: snikket_web/templates/admin_delete_circle.html:13
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Gefahr"
#: snikket_web/templates/admin_delete_circle.html:14
msgid ""
"The circle and the corresponding chat will be deleted, permanently and "
"immediately upon pushing the below button. <strong>There is no way back!</"
"strong>"
msgstr ""
"Die Gemeinschaft und die zugehörigen Daten werden beim Betätigen des Buttons "
"unwiderruflich, permanent und sofortig gelöscht. <strong>Es gibt keinen Weg "
"zurück!</strong>"
#: snikket_web/templates/admin_delete_circle.html:17
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Zurück"
#: snikket_web/templates/admin_delete_user.html:4
#, python-format
msgid "Delete user %(user_name)s"
@@ -599,10 +640,6 @@ msgstr "Benutzer löschen"
msgid "Are you sure you want to delete the following user?"
msgstr "Bist du sicher dass du den folgenden Benutzer löschen willst?"
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Gefahr"
#: snikket_web/templates/admin_delete_user.html:16
msgid ""
"The user and their data will be deleted irrevocably, permanently and "
@@ -613,15 +650,6 @@ msgstr ""
"Buttons unwiderruflich, permanent und sofortig gelöscht. <strong>Es gibt "
"keinen Weg zurück!</strong>"
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Zurück"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr "Dies ist die Hauptgemeinschaft"
@@ -656,10 +684,6 @@ msgstr "Diese Gemeinschaft hat keinen zugehörigen Gruppenchat."
msgid "Return to circle list"
msgstr "Zurück zur Gemeinschaftsliste"
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "Gemeinschaft löschen"
#: snikket_web/templates/admin_edit_circle.html:49
msgid "Deleting a circle does not delete any users in the circle."
msgstr ""

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-07 22:31+0200\n"
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
"PO-Revision-Date: 2021-06-19 15:01+0000\n"
"Last-Translator: Jonas Schäfer <jonas@zombofant.net>\n"
"Language-Team: English <https://i18n.sotecware.net/projects/snikket/web-"
@@ -167,6 +167,7 @@ msgid "Invitation revoked"
msgstr "Invitation type"
#: snikket_web/admin.py:394 snikket_web/admin.py:442
#: snikket_web/templates/admin_delete_circle.html:10
msgid "Name"
msgstr "Name"
@@ -188,21 +189,17 @@ msgstr "Select user"
msgid "Update circle"
msgstr "Update circle"
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Delete circle permanently"
#: snikket_web/admin.py:462
#: snikket_web/admin.py:458
msgid "Add user"
msgstr "Add user"
#: snikket_web/admin.py:478
#: snikket_web/admin.py:474 snikket_web/admin.py:563
#, fuzzy
#| msgid "No circles"
msgid "No such circle exists"
msgstr "No circles"
#: snikket_web/admin.py:515
#: snikket_web/admin.py:511
#, fuzzy
#| msgid "Circle name"
msgid "Circle data updated"
@@ -210,39 +207,43 @@ msgstr "Circle name"
#: snikket_web/admin.py:521
#, fuzzy
#| msgid "deleted"
msgid "Circle deleted"
msgstr "deleted"
#: snikket_web/admin.py:532
#, fuzzy
#| msgid "Invite to circle"
msgid "User added to circle"
msgstr "Invite to circle"
#: snikket_web/admin.py:541
#: snikket_web/admin.py:530
#, fuzzy
#| msgid "Remove user %(username)s from circle"
msgid "User removed from circle"
msgstr "Remove user %(username)s from circle"
#: snikket_web/admin.py:610
#: snikket_web/admin.py:547
msgid "Delete circle permanently"
msgstr "Delete circle permanently"
#: snikket_web/admin.py:574
#, fuzzy
#| msgid "deleted"
msgid "Circle deleted"
msgstr "deleted"
#: snikket_web/admin.py:640
msgid "Message contents"
msgstr ""
#: snikket_web/admin.py:616
#: snikket_web/admin.py:646
msgid "Only send to online users"
msgstr ""
#: snikket_web/admin.py:620
#: snikket_web/admin.py:650
msgid "Post to all users"
msgstr ""
#: snikket_web/admin.py:624
#: snikket_web/admin.py:654
msgid "Send preview to yourself"
msgstr ""
#: snikket_web/admin.py:646
#: snikket_web/admin.py:676
msgid "Announcement sent!"
msgstr ""
@@ -625,6 +626,54 @@ msgstr "Raw debug dump"
msgid "Copy complete output"
msgstr "Copy complete output"
#: snikket_web/templates/admin_delete_circle.html:4
#, fuzzy, python-format
#| msgid "Edit circle %(circle_name)s"
msgid "Delete circle %(circle_name)s"
msgstr "Edit circle %(circle_name)s"
#: snikket_web/templates/admin_delete_circle.html:6
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:51
msgid "Delete circle"
msgstr "Delete circle"
#: snikket_web/templates/admin_delete_circle.html:8
#, fuzzy
#| msgid "Are you sure you want to delete the following user?"
msgid "Are you sure you want to delete the following circle?"
msgstr "Are you sure you want to delete the following user?"
#: snikket_web/templates/admin_delete_circle.html:13
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Danger"
#: snikket_web/templates/admin_delete_circle.html:14
#, fuzzy
#| msgid ""
#| "The user and their data will be deleted irrevocably, permanently and "
#| "immediately upon pushing the below button. <strong>There is no way back!</"
#| "strong>"
msgid ""
"The circle and the corresponding chat will be deleted, permanently and "
"immediately upon pushing the below button. <strong>There is no way back!</"
"strong>"
msgstr ""
"The user and their data will be deleted irrevocably, permanently and "
"immediately upon pushing the below button. <strong>There is no way back!</"
"strong>"
#: snikket_web/templates/admin_delete_circle.html:17
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Back"
#: snikket_web/templates/admin_delete_user.html:4
#, python-format
msgid "Delete user %(user_name)s"
@@ -639,10 +688,6 @@ msgstr "Delete user"
msgid "Are you sure you want to delete the following user?"
msgstr "Are you sure you want to delete the following user?"
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Danger"
#: snikket_web/templates/admin_delete_user.html:16
msgid ""
"The user and their data will be deleted irrevocably, permanently and "
@@ -653,15 +698,6 @@ msgstr ""
"immediately upon pushing the below button. <strong>There is no way back!</"
"strong>"
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Back"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr "This is your main circle"
@@ -694,10 +730,6 @@ msgstr "This circle has no group chat associated."
msgid "Return to circle list"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "Delete circle"
#: 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."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-07 22:31+0200\n"
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
"PO-Revision-Date: 2021-06-19 15:01+0000\n"
"Last-Translator: Jonas Schäfer <jonas@zombofant.net>\n"
"Language-Team: English (United Kingdom) <https://i18n.sotecware.net/projects/"
@@ -167,6 +167,7 @@ msgid "Invitation revoked"
msgstr "Invitation type"
#: snikket_web/admin.py:394 snikket_web/admin.py:442
#: snikket_web/templates/admin_delete_circle.html:10
msgid "Name"
msgstr "Name"
@@ -190,21 +191,17 @@ msgstr "Select user"
msgid "Update circle"
msgstr "Create circle"
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Delete circle permanently"
#: snikket_web/admin.py:462
#: snikket_web/admin.py:458
msgid "Add user"
msgstr "Add user"
#: snikket_web/admin.py:478
#: snikket_web/admin.py:474 snikket_web/admin.py:563
#, fuzzy
#| msgid "No circles"
msgid "No such circle exists"
msgstr "No circles"
#: snikket_web/admin.py:515
#: snikket_web/admin.py:511
#, fuzzy
#| msgid "Circle name"
msgid "Circle data updated"
@@ -212,39 +209,43 @@ msgstr "Circle name"
#: snikket_web/admin.py:521
#, fuzzy
#| msgid "deleted"
msgid "Circle deleted"
msgstr "deleted"
#: snikket_web/admin.py:532
#, fuzzy
#| msgid "Invite to circle"
msgid "User added to circle"
msgstr "Invite to circle"
#: snikket_web/admin.py:541
#: snikket_web/admin.py:530
#, fuzzy
#| msgid "Remove user %(username)s from circle"
msgid "User removed from circle"
msgstr "Remove user %(username)s from circle"
#: snikket_web/admin.py:610
#: snikket_web/admin.py:547
msgid "Delete circle permanently"
msgstr "Delete circle permanently"
#: snikket_web/admin.py:574
#, fuzzy
#| msgid "deleted"
msgid "Circle deleted"
msgstr "deleted"
#: snikket_web/admin.py:640
msgid "Message contents"
msgstr ""
#: snikket_web/admin.py:616
#: snikket_web/admin.py:646
msgid "Only send to online users"
msgstr ""
#: snikket_web/admin.py:620
#: snikket_web/admin.py:650
msgid "Post to all users"
msgstr ""
#: snikket_web/admin.py:624
#: snikket_web/admin.py:654
msgid "Send preview to yourself"
msgstr ""
#: snikket_web/admin.py:646
#: snikket_web/admin.py:676
msgid "Announcement sent!"
msgstr ""
@@ -625,6 +626,46 @@ msgstr "Raw debug dump"
msgid "Copy complete output"
msgstr "Copy complete output"
#: snikket_web/templates/admin_delete_circle.html:4
#, fuzzy, python-format
#| msgid "Edit circle %(circle_name)s"
msgid "Delete circle %(circle_name)s"
msgstr "Edit circle %(circle_name)s"
#: snikket_web/templates/admin_delete_circle.html:6
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:51
msgid "Delete circle"
msgstr "Delete circle"
#: snikket_web/templates/admin_delete_circle.html:8
#, fuzzy
#| msgid "Are you sure you want to delete the following user?"
msgid "Are you sure you want to delete the following circle?"
msgstr "Are you sure you want to delete the following user?"
#: snikket_web/templates/admin_delete_circle.html:13
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Danger"
#: snikket_web/templates/admin_delete_circle.html:14
msgid ""
"The circle and the corresponding chat will be deleted, permanently and "
"immediately upon pushing the below button. <strong>There is no way back!</"
"strong>"
msgstr ""
#: snikket_web/templates/admin_delete_circle.html:17
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Back"
#: snikket_web/templates/admin_delete_user.html:4
#, python-format
msgid "Delete user %(user_name)s"
@@ -639,10 +680,6 @@ msgstr "Delete user"
msgid "Are you sure you want to delete the following user?"
msgstr "Are you sure you want to delete the following user?"
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Danger"
#: snikket_web/templates/admin_delete_user.html:16
msgid ""
"The user and their data will be deleted irrevocably, permanently and "
@@ -650,15 +687,6 @@ msgid ""
"strong>"
msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Back"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr ""
@@ -695,10 +723,6 @@ msgstr ""
msgid "Return to circle list"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "Delete circle"
#: 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."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-07 22:31+0200\n"
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
"PO-Revision-Date: 2021-03-31 13:00+0000\n"
"Last-Translator: Tilman Jiménez <tilman.jimenez@tu-dortmund.de>\n"
"Language-Team: Spanish (Mexico) <https://i18n.sotecware.net/projects/snikket/"
@@ -157,6 +157,7 @@ msgid "Invitation revoked"
msgstr "Tipo de invitación"
#: snikket_web/admin.py:394 snikket_web/admin.py:442
#: snikket_web/templates/admin_delete_circle.html:10
msgid "Name"
msgstr "Nombre"
@@ -178,21 +179,17 @@ msgstr "Seleccionar usuario"
msgid "Update circle"
msgstr "Actualizar círculo"
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Eliminar círculo permanentemente"
#: snikket_web/admin.py:462
#: snikket_web/admin.py:458
msgid "Add user"
msgstr "Añadir usuario"
#: snikket_web/admin.py:478
#: snikket_web/admin.py:474 snikket_web/admin.py:563
#, fuzzy
#| msgid "No circles"
msgid "No such circle exists"
msgstr "No hay círculos"
#: snikket_web/admin.py:515
#: snikket_web/admin.py:511
#, fuzzy
#| msgid "Circle name"
msgid "Circle data updated"
@@ -200,37 +197,41 @@ msgstr "Nombre del círculo"
#: snikket_web/admin.py:521
#, fuzzy
#| msgid "Circle members"
msgid "Circle deleted"
msgstr "Miembros del círculo"
#: snikket_web/admin.py:532
#, fuzzy
#| msgid "Invite to circle"
msgid "User added to circle"
msgstr "Invitar al círculo"
#: snikket_web/admin.py:541
#: snikket_web/admin.py:530
msgid "User removed from circle"
msgstr ""
#: snikket_web/admin.py:610
#: snikket_web/admin.py:547
msgid "Delete circle permanently"
msgstr "Eliminar círculo permanentemente"
#: snikket_web/admin.py:574
#, fuzzy
#| msgid "Circle members"
msgid "Circle deleted"
msgstr "Miembros del círculo"
#: snikket_web/admin.py:640
msgid "Message contents"
msgstr ""
#: snikket_web/admin.py:616
#: snikket_web/admin.py:646
msgid "Only send to online users"
msgstr ""
#: snikket_web/admin.py:620
#: snikket_web/admin.py:650
msgid "Post to all users"
msgstr ""
#: snikket_web/admin.py:624
#: snikket_web/admin.py:654
msgid "Send preview to yourself"
msgstr ""
#: snikket_web/admin.py:646
#: snikket_web/admin.py:676
msgid "Announcement sent!"
msgstr ""
@@ -604,6 +605,54 @@ msgstr ""
msgid "Copy complete output"
msgstr "Copiar el todo el output"
#: snikket_web/templates/admin_delete_circle.html:4
#, fuzzy, python-format
#| msgid "Edit circle %(circle_name)s"
msgid "Delete circle %(circle_name)s"
msgstr "Editar el círculo %(circle_name)s"
#: snikket_web/templates/admin_delete_circle.html:6
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:51
msgid "Delete circle"
msgstr "Eliminar círculo"
#: snikket_web/templates/admin_delete_circle.html:8
#, fuzzy
#| msgid "Are you sure you want to delete the following user?"
msgid "Are you sure you want to delete the following circle?"
msgstr "¿Seguro que quieres eliminar al siguiente usuario?"
#: snikket_web/templates/admin_delete_circle.html:13
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Peligro"
#: snikket_web/templates/admin_delete_circle.html:14
#, fuzzy
#| msgid ""
#| "The user and their data will be deleted irrevocably, permanently and "
#| "immediately upon pushing the below button. <strong>There is no way back!</"
#| "strong>"
msgid ""
"The circle and the corresponding chat will be deleted, permanently and "
"immediately upon pushing the below button. <strong>There is no way back!</"
"strong>"
msgstr ""
"Este usuario y sus datos va a ser eliminados de manera irreversible, "
"permanente e inmediatamente al presionar el botón. <strong>¡No hay forma de "
"deshacer esto!</strong>"
#: snikket_web/templates/admin_delete_circle.html:17
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Regresar"
#: snikket_web/templates/admin_delete_user.html:4
#, python-format
msgid "Delete user %(user_name)s"
@@ -618,10 +667,6 @@ msgstr "Eliminar usuario"
msgid "Are you sure you want to delete the following user?"
msgstr "¿Seguro que quieres eliminar al siguiente usuario?"
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Peligro"
#: snikket_web/templates/admin_delete_user.html:16
msgid ""
"The user and their data will be deleted irrevocably, permanently and "
@@ -632,15 +677,6 @@ msgstr ""
"permanente e inmediatamente al presionar el botón. <strong>¡No hay forma de "
"deshacer esto!</strong>"
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Regresar"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr "Este es el círculo principal"
@@ -675,10 +711,6 @@ msgstr "Este círculo no está asociado con una conversación de grupo."
msgid "Return to circle list"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "Eliminar círculo"
#: snikket_web/templates/admin_edit_circle.html:49
msgid "Deleting a circle does not delete any users in the circle."
msgstr "Eliminar un círculo no elimina a los usuarios que le pertenecen."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-07 22:31+0200\n"
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
"PO-Revision-Date: 2022-04-11 13:00+0000\n"
"Last-Translator: David Baraniak <admin@chipmnk.dev>\n"
"Language-Team: French <http://i18n.sotecware.net/projects/snikket/web-portal/"
@@ -145,6 +145,7 @@ msgid "Invitation revoked"
msgstr "Invitation révoquée"
#: snikket_web/admin.py:394 snikket_web/admin.py:442
#: snikket_web/templates/admin_delete_circle.html:10
msgid "Name"
msgstr "Nom"
@@ -164,51 +165,51 @@ msgstr "Sélectionner un utilisateur"
msgid "Update circle"
msgstr "Mettre à jour le cercle"
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Supprimer le cercle définitivement"
#: snikket_web/admin.py:462
#: snikket_web/admin.py:458
msgid "Add user"
msgstr "Ajouter un utilisateur"
#: snikket_web/admin.py:478
#: snikket_web/admin.py:474 snikket_web/admin.py:563
msgid "No such circle exists"
msgstr "Ce cercle nexiste pas"
#: snikket_web/admin.py:515
#: snikket_web/admin.py:511
msgid "Circle data updated"
msgstr "Données du cercle mises à jour"
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "Cercle supprimé"
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Utilisateur ajouté à ce cercle"
#: snikket_web/admin.py:541
#: snikket_web/admin.py:530
msgid "User removed from circle"
msgstr "Utilisateur retiré du cercle"
#: snikket_web/admin.py:610
#: snikket_web/admin.py:547
msgid "Delete circle permanently"
msgstr "Supprimer le cercle définitivement"
#: snikket_web/admin.py:574
msgid "Circle deleted"
msgstr "Cercle supprimé"
#: snikket_web/admin.py:640
msgid "Message contents"
msgstr "Contenu du message"
#: snikket_web/admin.py:616
#: snikket_web/admin.py:646
msgid "Only send to online users"
msgstr "Envoyer uniquement aux utilisateurs connectés"
#: snikket_web/admin.py:620
#: snikket_web/admin.py:650
msgid "Post to all users"
msgstr "Envoyer aux utilisateurs"
#: snikket_web/admin.py:624
#: snikket_web/admin.py:654
msgid "Send preview to yourself"
msgstr "Envoyer une prévisualisation à vous-mêmes"
#: snikket_web/admin.py:646
#: snikket_web/admin.py:676
msgid "Announcement sent!"
msgstr "Annonce envoyée!"
@@ -586,6 +587,54 @@ msgstr "Journal de débogage brut"
msgid "Copy complete output"
msgstr "Copier le journal entier"
#: snikket_web/templates/admin_delete_circle.html:4
#, fuzzy, python-format
#| msgid "Edit circle %(circle_name)s"
msgid "Delete circle %(circle_name)s"
msgstr "Éditer le cercle %(circle_name)s"
#: snikket_web/templates/admin_delete_circle.html:6
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:51
msgid "Delete circle"
msgstr "Supprimer le cercle"
#: snikket_web/templates/admin_delete_circle.html:8
#, fuzzy
#| msgid "Are you sure you want to delete the following user?"
msgid "Are you sure you want to delete the following circle?"
msgstr "Êtes-vous certain(e) de vouloir désinscrire lutilisateur suivant?"
#: snikket_web/templates/admin_delete_circle.html:13
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Danger"
#: snikket_web/templates/admin_delete_circle.html:14
#, fuzzy
#| msgid ""
#| "The user and their data will be deleted irrevocably, permanently and "
#| "immediately upon pushing the below button. <strong>There is no way back!</"
#| "strong>"
msgid ""
"The circle and the corresponding chat will be deleted, permanently and "
"immediately upon pushing the below button. <strong>There is no way back!</"
"strong>"
msgstr ""
"Lutilisateur et ses données vont être irrévocablement supprimées, "
"immédiatement après avoir pressé le bouton ci-dessous. <strong>Il est "
"impossible de revenir en arrière!</strong>"
#: snikket_web/templates/admin_delete_circle.html:17
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Retour"
#: snikket_web/templates/admin_delete_user.html:4
#, python-format
msgid "Delete user %(user_name)s"
@@ -600,10 +649,6 @@ msgstr "Désinscrire un utilisateur"
msgid "Are you sure you want to delete the following user?"
msgstr "Êtes-vous certain(e) de vouloir désinscrire lutilisateur suivant?"
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Danger"
#: snikket_web/templates/admin_delete_user.html:16
msgid ""
"The user and their data will be deleted irrevocably, permanently and "
@@ -614,15 +659,6 @@ msgstr ""
"immédiatement après avoir pressé le bouton ci-dessous. <strong>Il est "
"impossible de revenir en arrière!</strong>"
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Retour"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr "Ceci est votre cercle principal"
@@ -656,10 +692,6 @@ msgstr "Ce cercle na pas de conversation de groupe associée."
msgid "Return to circle list"
msgstr "Revenir à la liste des cercles"
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "Supprimer le cercle"
#: snikket_web/templates/admin_edit_circle.html:49
msgid "Deleting a circle does not delete any users in the circle."
msgstr "Supprimer un cercle ne supprime aucun utilisateur dans le cercle."

View File

@@ -6,18 +6,18 @@
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-07 22:31+0200\n"
"PO-Revision-Date: 2022-01-18 14:59+0000\n"
"Report-Msgid-Bugs-To: translations@snikket.org\n"
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
"PO-Revision-Date: 2023-04-02 15:17+0000\n"
"Last-Translator: uira <inboxriau@andriana.id>\n"
"Language-Team: Indonesian <http://i18n.sotecware.net/projects/snikket/web-"
"portal/id/>\n"
"Language-Team: Indonesian <http://i18n.sotecware.net/projects/snikket/"
"web-portal/id/>\n"
"Language: id\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.8.1\n"
"X-Generator: Weblate 4.14.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
@@ -145,6 +145,7 @@ msgid "Invitation revoked"
msgstr "Undangan dibatalkan"
#: snikket_web/admin.py:394 snikket_web/admin.py:442
#: snikket_web/templates/admin_delete_circle.html:10
msgid "Name"
msgstr "Nama"
@@ -164,51 +165,51 @@ msgstr "Pilih pengguna"
msgid "Update circle"
msgstr "Memperbarui kelompok"
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Hapus kelompok secara permanen"
#: snikket_web/admin.py:462
#: snikket_web/admin.py:458
msgid "Add user"
msgstr "Tambah pengguna"
#: snikket_web/admin.py:478
#: snikket_web/admin.py:474 snikket_web/admin.py:563
msgid "No such circle exists"
msgstr "Kelompok tersebut tidak ada"
#: snikket_web/admin.py:515
#: snikket_web/admin.py:511
msgid "Circle data updated"
msgstr "Data kelompok diperbarui"
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "Kelompok dihapus"
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Pengguna ditambahkan ke kelompok"
#: snikket_web/admin.py:541
#: snikket_web/admin.py:530
msgid "User removed from circle"
msgstr "Pengguna dihapus dari kelompok"
#: snikket_web/admin.py:610
#: snikket_web/admin.py:547
msgid "Delete circle permanently"
msgstr "Hapus kelompok secara permanen"
#: snikket_web/admin.py:574
msgid "Circle deleted"
msgstr "Kelompok dihapus"
#: snikket_web/admin.py:640
msgid "Message contents"
msgstr "Isi pesan"
#: snikket_web/admin.py:616
#: snikket_web/admin.py:646
msgid "Only send to online users"
msgstr "Hanya kirim ke pengguna online"
#: snikket_web/admin.py:620
#: snikket_web/admin.py:650
msgid "Post to all users"
msgstr "Kirim ke semua pengguna"
#: snikket_web/admin.py:624
#: snikket_web/admin.py:654
msgid "Send preview to yourself"
msgstr "Kirim pratinjau ke diri sendiri"
#: snikket_web/admin.py:646
#: snikket_web/admin.py:676
msgid "Announcement sent!"
msgstr "Pengumuman terkirim!"
@@ -587,6 +588,46 @@ msgstr "Kumpulan data debug mentah"
msgid "Copy complete output"
msgstr "Salin keluaran lengkap"
#: snikket_web/templates/admin_delete_circle.html:4
#, python-format
msgid "Delete circle %(circle_name)s"
msgstr "Hapus kelompok %(circle_name)s"
#: snikket_web/templates/admin_delete_circle.html:6
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:51
msgid "Delete circle"
msgstr "Hapus kelompok"
#: snikket_web/templates/admin_delete_circle.html:8
msgid "Are you sure you want to delete the following circle?"
msgstr "Apakah anda yakin mau menghapus circle tersebut?"
#: snikket_web/templates/admin_delete_circle.html:13
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Berbahaya"
#: snikket_web/templates/admin_delete_circle.html:14
msgid ""
"The circle and the corresponding chat will be deleted, permanently and "
"immediately upon pushing the below button. <strong>There is no way back!</"
"strong>"
msgstr ""
"Circle dan datanya akan dihapus secara permanen, tidak bisa dibatalkan, "
"segera setelah menekan tombol di bawah. <strong>Tidak ada jalan "
"kembali!</strong>"
#: snikket_web/templates/admin_delete_circle.html:17
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Kembali"
#: snikket_web/templates/admin_delete_user.html:4
#, python-format
msgid "Delete user %(user_name)s"
@@ -601,10 +642,6 @@ msgstr "Hapus pengguna"
msgid "Are you sure you want to delete the following user?"
msgstr "Apakah anda yakin mau menghapus pengguna tersebut?"
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Berbahaya"
#: snikket_web/templates/admin_delete_user.html:16
msgid ""
"The user and their data will be deleted irrevocably, permanently and "
@@ -615,15 +652,6 @@ msgstr ""
"segera setelah menekan tombol di bawah. <strong>Tidak ada jalan kembali!</"
"strong>"
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Kembali"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr "Ini kelompok utama anda"
@@ -657,10 +685,6 @@ msgstr "Kelompok ini tidak memiliki percakapan grup."
msgid "Return to circle list"
msgstr "Kembali ke daftar circle"
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "Hapus kelompok"
#: snikket_web/templates/admin_edit_circle.html:49
msgid "Deleting a circle does not delete any users in the circle."
msgstr ""

View File

@@ -6,18 +6,18 @@
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-07 22:31+0200\n"
"PO-Revision-Date: 2021-05-19 15:12+0000\n"
"Report-Msgid-Bugs-To: translations@snikket.org\n"
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
"PO-Revision-Date: 2023-07-13 11:17+0000\n"
"Last-Translator: Roberto Resoli <roberto@resolutions.it>\n"
"Language-Team: Italian <https://i18n.sotecware.net/projects/snikket/web-"
"portal/it/>\n"
"Language-Team: Italian <http://i18n.sotecware.net/projects/snikket/"
"web-portal/it/>\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.5.1\n"
"X-Generator: Weblate 4.14.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
@@ -145,6 +145,7 @@ msgid "Invitation revoked"
msgstr "Invito revocato"
#: snikket_web/admin.py:394 snikket_web/admin.py:442
#: snikket_web/templates/admin_delete_circle.html:10
msgid "Name"
msgstr "Nome"
@@ -164,53 +165,53 @@ msgstr "Seleziona utente"
msgid "Update circle"
msgstr "Modifica cerchia"
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Elimina cerchia definitivamente"
#: snikket_web/admin.py:462
#: snikket_web/admin.py:458
msgid "Add user"
msgstr "Aggiungi utente"
#: snikket_web/admin.py:478
#: snikket_web/admin.py:474 snikket_web/admin.py:563
msgid "No such circle exists"
msgstr "Questa cerchia non esiste"
#: snikket_web/admin.py:515
#: snikket_web/admin.py:511
msgid "Circle data updated"
msgstr "Dati della cerchia aggiornati"
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "Cerchia eliminata"
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Utente aggiunto alla cerchia"
#: snikket_web/admin.py:541
#: snikket_web/admin.py:530
msgid "User removed from circle"
msgstr "Utente rimosso dalla cerchia"
#: snikket_web/admin.py:610
#: snikket_web/admin.py:547
msgid "Delete circle permanently"
msgstr "Elimina cerchia definitivamente"
#: snikket_web/admin.py:574
msgid "Circle deleted"
msgstr "Cerchia eliminata"
#: snikket_web/admin.py:640
msgid "Message contents"
msgstr ""
#: snikket_web/admin.py:616
msgid "Only send to online users"
msgstr ""
#: snikket_web/admin.py:620
msgid "Post to all users"
msgstr ""
#: snikket_web/admin.py:624
msgid "Send preview to yourself"
msgstr ""
msgstr "Contenuto dei messaggi"
#: snikket_web/admin.py:646
msgid "Only send to online users"
msgstr "Inviare solo agli utenti online"
#: snikket_web/admin.py:650
msgid "Post to all users"
msgstr "Inviare a tutti gli utenti"
#: snikket_web/admin.py:654
msgid "Send preview to yourself"
msgstr "Inviare una anteprima a te stesso"
#: snikket_web/admin.py:676
msgid "Announcement sent!"
msgstr ""
msgstr "Annuncio inviato!"
#: snikket_web/infra.py:53
msgid "Main"
@@ -221,6 +222,8 @@ msgid ""
"The account data you tried to import is too large to upload. Please contact "
"your Snikket operator."
msgstr ""
"I dati dell'utenza che hai provato ad importare sono troppo grandi per "
"essere caricati. Contatta il tuo operatore Snikket."
#: snikket_web/invite.py:114
msgid "Username"
@@ -261,11 +264,11 @@ msgstr "Cambia password"
#: snikket_web/invite.py:246
msgid "Account data file"
msgstr ""
msgstr "File con i dati dell'utenza"
#: snikket_web/invite.py:250
msgid "Import data"
msgstr ""
msgstr "Importa i dati"
#: snikket_web/invite.py:271
#, python-format
@@ -273,6 +276,9 @@ msgid ""
"The account data you tried to import is in an unknown format. Please upload "
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
msgstr ""
"I dati dell'utenza che stai cercando di importare sono in un formato "
"sconosciuto. Per favore, carica un file XML in formato XEP-0227 (formato "
"fornito: %(mimetype)s)."
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
#: snikket_web/user.py:178
@@ -341,11 +347,11 @@ msgstr "Modifica profilo"
#: snikket_web/user.py:82
msgid "Account data"
msgstr ""
msgstr "Dati dell'utenza"
#: snikket_web/user.py:86
msgid "Upload"
msgstr ""
msgstr "Caricare"
#: snikket_web/user.py:111
msgid "Incorrect password."
@@ -369,11 +375,11 @@ msgstr "Profilo aggiornato"
#: snikket_web/user.py:184
msgid "Export"
msgstr ""
msgstr "Esportare"
#: snikket_web/user.py:202
msgid "You currently have no account data to export."
msgstr ""
msgstr "Al momento non hai dati utente da esportare."
#: snikket_web/templates/_footer.html:4
#, python-format
@@ -582,6 +588,46 @@ msgstr "Dati diagnostici grezzi"
msgid "Copy complete output"
msgstr "Copia l'intero output"
#: snikket_web/templates/admin_delete_circle.html:4
#, python-format
msgid "Delete circle %(circle_name)s"
msgstr "Elimina la cerchia %(circle_name)s"
#: snikket_web/templates/admin_delete_circle.html:6
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:51
msgid "Delete circle"
msgstr "Elimina cerchia"
#: snikket_web/templates/admin_delete_circle.html:8
msgid "Are you sure you want to delete the following circle?"
msgstr "Vuoi veramente eliminare la seguente cerchia?"
#: snikket_web/templates/admin_delete_circle.html:13
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Pericolo"
#: snikket_web/templates/admin_delete_circle.html:14
msgid ""
"The circle and the corresponding chat will be deleted, permanently and "
"immediately upon pushing the below button. <strong>There is no way back!</"
"strong>"
msgstr ""
"La cerchia e la relativa chat verranno eliminate in modo permanente ed "
"irreversibile non appena verrà premuto il pulsante sottostante. <strong>Non "
"sarà possibile tornare indietro!</strong>"
#: snikket_web/templates/admin_delete_circle.html:17
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Indietro"
#: snikket_web/templates/admin_delete_user.html:4
#, python-format
msgid "Delete user %(user_name)s"
@@ -596,10 +642,6 @@ msgstr "Elimina utente"
msgid "Are you sure you want to delete the following user?"
msgstr "Sei sicura/o di volere eliminare il seguente utente?"
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Pericolo"
#: snikket_web/templates/admin_delete_user.html:16
msgid ""
"The user and their data will be deleted irrevocably, permanently and "
@@ -610,15 +652,6 @@ msgstr ""
"irreversibile non appena verrà premuto il pulsante sottostante. <strong>Non "
"sarà possibile tornare sui propri passi!</strong>"
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Indietro"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr "Questa è la vostra cerchia principale"
@@ -653,10 +686,6 @@ msgstr "Questa cerchia non è collegata ad una chat di gruppo."
msgid "Return to circle list"
msgstr "Ritorna alle lista delle cerchie"
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "Elimina cerchia"
#: snikket_web/templates/admin_edit_circle.html:49
msgid "Deleting a circle does not delete any users in the circle."
msgstr "Eliminare una cerchia non elimina nessuno dei suoi utenti."
@@ -667,7 +696,7 @@ msgstr "Membri della cerchia"
#: snikket_web/templates/admin_edit_circle.html:71
msgid "The user has been deleted from the server."
msgstr ""
msgstr "L'utenza è stata eliminata dal server."
#: snikket_web/templates/admin_edit_circle.html:71
#: snikket_web/templates/library.j2:108
@@ -881,11 +910,12 @@ msgstr "Gestisci inviti"
#: snikket_web/templates/admin_home.html:35
msgid "System health"
msgstr ""
msgstr "Stato di salute del sistema"
#: snikket_web/templates/admin_home.html:38
msgid "View the server status or send a broadcast message to all users."
msgstr ""
"Veder e lo stato del server e trasmettere un messaggio a tutti gli utenti."
#: snikket_web/templates/admin_home.html:40
msgid "Send a broadcast message to all users."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-07 22:31+0200\n"
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
"PO-Revision-Date: 2021-01-28 17:55+0000\n"
"Last-Translator: pep <pep@bouah.net>\n"
"Language-Team: Japanese <https://i18n.sotecware.net/projects/snikket/web-"
@@ -165,6 +165,7 @@ msgid "Invitation revoked"
msgstr "紹介の種類"
#: snikket_web/admin.py:394 snikket_web/admin.py:442
#: snikket_web/templates/admin_delete_circle.html:10
msgid "Name"
msgstr "名"
@@ -186,21 +187,17 @@ msgstr "ユーザー選択"
msgid "Update circle"
msgstr "サークルを更新"
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "サークルを削除"
#: snikket_web/admin.py:462
#: snikket_web/admin.py:458
msgid "Add user"
msgstr "ユーザーを追加する"
#: snikket_web/admin.py:478
#: snikket_web/admin.py:474 snikket_web/admin.py:563
#, fuzzy
#| msgid "No circles"
msgid "No such circle exists"
msgstr "なし"
#: snikket_web/admin.py:515
#: snikket_web/admin.py:511
#, fuzzy
#| msgid "Circle name"
msgid "Circle data updated"
@@ -208,39 +205,43 @@ msgstr "サークル名"
#: snikket_web/admin.py:521
#, fuzzy
#| msgid "Circle members"
msgid "Circle deleted"
msgstr "サークル会員"
#: snikket_web/admin.py:532
#, fuzzy
#| msgid "Invite to circle"
msgid "User added to circle"
msgstr "サークルに紹介する"
#: snikket_web/admin.py:541
#: snikket_web/admin.py:530
#, fuzzy
#| msgid "Remove user %(username)s from circle"
msgid "User removed from circle"
msgstr "%(username)s をサークルから外す"
#: snikket_web/admin.py:610
#: snikket_web/admin.py:547
msgid "Delete circle permanently"
msgstr "サークルを削除"
#: snikket_web/admin.py:574
#, fuzzy
#| msgid "Circle members"
msgid "Circle deleted"
msgstr "サークル会員"
#: snikket_web/admin.py:640
msgid "Message contents"
msgstr ""
#: snikket_web/admin.py:616
#: snikket_web/admin.py:646
msgid "Only send to online users"
msgstr ""
#: snikket_web/admin.py:620
#: snikket_web/admin.py:650
msgid "Post to all users"
msgstr ""
#: snikket_web/admin.py:624
#: snikket_web/admin.py:654
msgid "Send preview to yourself"
msgstr ""
#: snikket_web/admin.py:646
#: snikket_web/admin.py:676
msgid "Announcement sent!"
msgstr ""
@@ -605,6 +606,53 @@ msgstr ""
msgid "Copy complete output"
msgstr ""
#: snikket_web/templates/admin_delete_circle.html:4
#, fuzzy, python-format
#| msgid "Edit circle %(circle_name)s"
msgid "Delete circle %(circle_name)s"
msgstr "%(circle_name)s を管理"
#: snikket_web/templates/admin_delete_circle.html:6
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:51
msgid "Delete circle"
msgstr "サークル削除"
#: snikket_web/templates/admin_delete_circle.html:8
#, fuzzy
#| msgid "Are you sure you want to delete the following user?"
msgid "Are you sure you want to delete the following circle?"
msgstr "本当にこのユーザーを削除していいですか?"
#: snikket_web/templates/admin_delete_circle.html:13
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "警告"
#: snikket_web/templates/admin_delete_circle.html:14
#, fuzzy
#| msgid ""
#| "The user and their data will be deleted irrevocably, permanently and "
#| "immediately upon pushing the below button. <strong>There is no way back!</"
#| "strong>"
msgid ""
"The circle and the corresponding chat will be deleted, permanently and "
"immediately upon pushing the below button. <strong>There is no way back!</"
"strong>"
msgstr ""
"ユーザーとそのユーザーのデータが削除されます。<strong>戻ることができません</"
"strong>"
#: snikket_web/templates/admin_delete_circle.html:17
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "戻る"
#: snikket_web/templates/admin_delete_user.html:4
#, python-format
msgid "Delete user %(user_name)s"
@@ -619,10 +667,6 @@ msgstr "ユーザー削除"
msgid "Are you sure you want to delete the following user?"
msgstr "本当にこのユーザーを削除していいですか?"
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "警告"
#: snikket_web/templates/admin_delete_user.html:16
msgid ""
"The user and their data will be deleted irrevocably, permanently and "
@@ -632,15 +676,6 @@ msgstr ""
"ユーザーとそのユーザーのデータが削除されます。<strong>戻ることができません</"
"strong>"
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "戻る"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr ""
@@ -673,10 +708,6 @@ msgstr ""
msgid "Return to circle list"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "サークル削除"
#: snikket_web/templates/admin_edit_circle.html:49
msgid "Deleting a circle does not delete any users in the circle."
msgstr "サークルを削除しても会員は削除されまんせん。"

View File

@@ -8,23 +8,23 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-03-28 19:16+0200\n"
"POT-Creation-Date: 2023-11-06 13:46+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.12.1\n"
"Generated-By: Babel 2.13.1\n"
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
#: snikket_web/templates/admin_edit_circle.html:59
#: snikket_web/templates/admin_edit_circle.html:73
#: snikket_web/templates/admin_users.html:8
msgid "Login name"
msgstr ""
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
#: snikket_web/templates/admin_edit_circle.html:60
#: snikket_web/templates/admin_edit_circle.html:74
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
msgid "Display name"
msgstr ""
@@ -142,6 +142,8 @@ msgid "Invitation revoked"
msgstr ""
#: snikket_web/admin.py:394 snikket_web/admin.py:442
#: snikket_web/templates/admin_delete_circle.html:10
#: snikket_web/templates/admin_edit_circle.html:44
msgid "Name"
msgstr ""
@@ -161,51 +163,67 @@ msgstr ""
msgid "Update circle"
msgstr ""
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr ""
#: snikket_web/admin.py:462
#: snikket_web/admin.py:458
msgid "Add user"
msgstr ""
#: snikket_web/admin.py:478
#: snikket_web/admin.py:476 snikket_web/admin.py:575 snikket_web/admin.py:623
msgid "No such circle exists"
msgstr ""
#: snikket_web/admin.py:515
#: snikket_web/admin.py:513
msgid "Circle data updated"
msgstr ""
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr ""
#: snikket_web/admin.py:532
#: snikket_web/admin.py:523
msgid "User added to circle"
msgstr ""
#: snikket_web/admin.py:541
#: snikket_web/admin.py:532
msgid "User removed from circle"
msgstr ""
#: snikket_web/admin.py:610
#: snikket_web/admin.py:541
msgid "Chat removed from circle"
msgstr ""
#: snikket_web/admin.py:559
msgid "Delete circle permanently"
msgstr ""
#: snikket_web/admin.py:586
msgid "Circle deleted"
msgstr ""
#: snikket_web/admin.py:600
msgid "Group chat name"
msgstr ""
#: snikket_web/admin.py:605
msgid "Create group chat"
msgstr ""
#: snikket_web/admin.py:635
msgid "New group chat added to circle"
msgstr ""
#: snikket_web/admin.py:702
msgid "Message contents"
msgstr ""
#: snikket_web/admin.py:616
#: snikket_web/admin.py:708
msgid "Only send to online users"
msgstr ""
#: snikket_web/admin.py:620
#: snikket_web/admin.py:712
msgid "Post to all users"
msgstr ""
#: snikket_web/admin.py:624
#: snikket_web/admin.py:716
msgid "Send preview to yourself"
msgstr ""
#: snikket_web/admin.py:646
#: snikket_web/admin.py:738
msgid "Announcement sent!"
msgstr ""
@@ -381,31 +399,37 @@ msgid ""
"Interest Company."
msgstr ""
#: snikket_web/templates/about.html:4 snikket_web/templates/about.html:9
#: snikket_web/templates/about.html:4
msgid "About Snikket"
msgstr ""
#: snikket_web/templates/about.html:9
msgid "About this Service"
msgstr ""
#: snikket_web/templates/about.html:10
#, python-format
msgid ""
"This is the Snikket service <em>%(site_name)s</em>, running open-source "
"software from the Snikket project."
msgstr ""
#: snikket_web/templates/about.html:11
#, python-format
msgid ""
"To learn more about Snikket, visit the <a "
"href=\"%(snikket_url)s\">Snikket website</a>."
msgstr ""
#: snikket_web/templates/about.html:11
msgid "About this Service"
msgstr ""
#: snikket_web/templates/about.html:12
#, python-format
msgid "This is the Snikket service <em>%(site_name)s</em>."
msgstr ""
#: snikket_web/templates/about.html:13
msgid "View service policies"
msgstr ""
#: snikket_web/templates/about.html:15
msgid "Licenses"
msgstr ""
#: snikket_web/templates/about.html:14
#: snikket_web/templates/about.html:16
#, python-format
msgid ""
"The web portal software is licensed under the terms of the <a "
@@ -414,14 +438,14 @@ msgid ""
"aforementioned link."
msgstr ""
#: snikket_web/templates/about.html:15
#: snikket_web/templates/about.html:17
#, python-format
msgid ""
"The source code of the web portal can be downloaded and viewed in <a "
"href=\"%(source_url)s\">its GitHub repository</a>."
msgstr ""
#: snikket_web/templates/about.html:16
#: snikket_web/templates/about.html:18
#, python-format
msgid ""
"The icons used in the web portal are <a href=\"%(source_url)s\">Googles "
@@ -429,11 +453,11 @@ msgid ""
"href=\"%(apache20_url)s\">Apache 2.0 License</a>."
msgstr ""
#: snikket_web/templates/about.html:17
#: snikket_web/templates/about.html:20
msgid "Trademarks"
msgstr ""
#: snikket_web/templates/about.html:18
#: snikket_web/templates/about.html:21
#, python-format
msgid ""
"“Snikket” and the parrot logo are trademarks of Snikket Community "
@@ -441,11 +465,11 @@ msgid ""
" href=\"%(trademarks_url)s\">Snikket Trademarks information page</a>."
msgstr ""
#: snikket_web/templates/about.html:19
#: snikket_web/templates/about.html:23
msgid "Software Versions"
msgstr ""
#: snikket_web/templates/about.html:32
#: snikket_web/templates/about.html:37 snikket_web/templates/policies.html:34
msgid "Back to the main page"
msgstr ""
@@ -467,8 +491,8 @@ msgstr ""
#: snikket_web/templates/admin_circles.html:6
msgid ""
"Users who are in the same circle will see each other in their contact "
"list. In addition, each circle has a group chat where the circle members "
"are included."
"list. In addition, each circle may have group chats where the circle "
"members are included."
msgstr ""
#: snikket_web/templates/admin_circles.html:13
@@ -480,7 +504,8 @@ msgid "Members"
msgstr ""
#: snikket_web/templates/admin_circles.html:15
#: snikket_web/templates/admin_edit_circle.html:61
#: snikket_web/templates/admin_edit_circle.html:45
#: snikket_web/templates/admin_edit_circle.html:75
#: snikket_web/templates/admin_invites.html:24
#: snikket_web/templates/admin_users.html:10
msgid "Actions"
@@ -516,6 +541,25 @@ msgstr ""
msgid "New circle"
msgstr ""
#: snikket_web/templates/admin_create_circle_group_chat_form.html:5
msgid "Create new circle group chat"
msgstr ""
#: snikket_web/templates/admin_create_circle_group_chat_form.html:6
msgid "Add a chat to your circle so its members can hold group discussions."
msgstr ""
#: snikket_web/templates/admin_create_circle_group_chat_form.html:7
msgid "Tip:"
msgstr ""
#: snikket_web/templates/admin_create_circle_group_chat_form.html:7
msgid ""
"This is only for creating group chats that automatically include "
"<em>all</em> members of the circle. If you want a normal group chat, "
"create it in the Snikket app instead."
msgstr ""
#: snikket_web/templates/admin_create_invite.html:3
msgid "Create invitation"
msgstr ""
@@ -552,6 +596,43 @@ msgstr ""
msgid "Copy complete output"
msgstr ""
#: snikket_web/templates/admin_delete_circle.html:4
#, python-format
msgid "Delete circle %(circle_name)s"
msgstr ""
#: snikket_web/templates/admin_delete_circle.html:6
#: snikket_web/templates/admin_edit_circle.html:30
#: snikket_web/templates/admin_edit_circle.html:33
msgid "Delete circle"
msgstr ""
#: snikket_web/templates/admin_delete_circle.html:8
msgid "Are you sure you want to delete the following circle?"
msgstr ""
#: snikket_web/templates/admin_delete_circle.html:13
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr ""
#: snikket_web/templates/admin_delete_circle.html:14
msgid ""
"The circle and the corresponding chat will be deleted, permanently and "
"immediately upon pushing the below button. <strong>There is no way "
"back!</strong>"
msgstr ""
#: snikket_web/templates/admin_delete_circle.html:17
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr ""
#: snikket_web/templates/admin_delete_user.html:4
#, python-format
msgid "Delete user %(user_name)s"
@@ -566,10 +647,6 @@ msgstr ""
msgid "Are you sure you want to delete the following user?"
msgstr ""
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr ""
#: snikket_web/templates/admin_delete_user.html:16
msgid ""
"The user and their data will be deleted irrevocably, permanently and "
@@ -577,15 +654,6 @@ msgid ""
"back!</strong>"
msgstr ""
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr ""
@@ -594,73 +662,78 @@ msgstr ""
msgid "This circle is managed automatically and cannot be removed or renamed."
msgstr ""
#: 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: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:26
#: snikket_web/templates/admin_edit_circle.html:19
msgid "Circle information"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:39
msgid "This circle has no group chat associated."
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:44
#: snikket_web/templates/admin_edit_circle.html:26
msgid "Return to circle list"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:49
#: snikket_web/templates/admin_edit_circle.html:31
msgid "Deleting a circle does not delete any users in the circle."
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:55
#: snikket_web/templates/admin_edit_circle.html:38
msgid "Group chats"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:39
msgid "These group chats will be available to all members of the circle."
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:53
#, python-format
msgid "Delete group chat '%(name)s'"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:61
msgid "This circle currently has no group chats."
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:64
msgid "Add group chat"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:67
msgid "Circle members"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:71
#: snikket_web/templates/admin_edit_circle.html:68
msgid "All members of the circle will see each other in their contact list."
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:85
msgid "The user has been deleted from the server."
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:71
#: snikket_web/templates/admin_edit_circle.html:85
#: snikket_web/templates/library.j2:108
msgid "deleted"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:77
#: snikket_web/templates/admin_edit_circle.html:91
#, python-format
msgid "Remove user %(username)s from circle"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:85
#: snikket_web/templates/admin_edit_circle.html:99
msgid "This circle currently has no members."
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:87
#: snikket_web/templates/admin_edit_circle.html:101
msgid "Invite more members"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:90
#: snikket_web/templates/admin_edit_circle.html:104
msgid "Add existing user"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:101
#: snikket_web/templates/admin_edit_circle.html:115
msgid "All users added"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:102
#: snikket_web/templates/admin_edit_circle.html:116
msgid "All users on this service are already in this circle."
msgstr ""
@@ -1072,20 +1145,20 @@ msgid ""
msgstr ""
#: snikket_web/templates/invite_register.html:14
#: snikket_web/templates/invite_view.html:39
#: snikket_web/templates/invite_view.html:46
msgid "App already installed?"
msgstr ""
#: snikket_web/templates/invite_register.html:16
#: snikket_web/templates/invite_reset_view.html:21
#: snikket_web/templates/invite_view.html:41
#: snikket_web/templates/invite_view.html:84
#: snikket_web/templates/invite_view.html:112
#: snikket_web/templates/invite_view.html:48
#: snikket_web/templates/invite_view.html:91
#: snikket_web/templates/invite_view.html:119
msgid "Open the app"
msgstr ""
#: snikket_web/templates/invite_register.html:18
#: snikket_web/templates/invite_view.html:43
#: snikket_web/templates/invite_view.html:50
msgid "This button works only if you have the app installed already!"
msgstr ""
@@ -1181,7 +1254,7 @@ 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:45
#: snikket_web/templates/invite_view.html:52
msgid "Alternatives"
msgstr ""
@@ -1211,6 +1284,11 @@ msgstr ""
msgid "Your address"
msgstr ""
#: snikket_web/templates/invite_success.html:15
#: snikket_web/templates/user_home.html:21
msgid "Copy 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"
@@ -1267,15 +1345,22 @@ msgid ""
"privacy-friendly chat app."
msgstr ""
#: snikket_web/templates/invite_view.html:20
#: snikket_web/templates/invite_view.html:23
#, python-format
msgid ""
"By continuing, you agree to the <a href=\"%(tos_uri)s\">Terms of "
"Service</a> and <a href=\"%(privacy_uri)s\">Privacy Policy</a>."
msgstr ""
#: snikket_web/templates/invite_view.html:27
msgid "Get started"
msgstr ""
#: snikket_web/templates/invite_view.html:22
#: snikket_web/templates/invite_view.html:29
msgid "Install the Snikket App on your Android or iOS device."
msgstr ""
#: snikket_web/templates/invite_view.html:24
#: snikket_web/templates/invite_view.html:31
#, python-format
msgid ""
"Install the Snikket App on your Android device (<a "
@@ -1283,30 +1368,30 @@ msgid ""
"target=\"_blank\">iOS coming soon!</a>)."
msgstr ""
#: snikket_web/templates/invite_view.html:28
#: snikket_web/templates/invite_view.html:35
msgid "Get it on Google Play"
msgstr ""
#: snikket_web/templates/invite_view.html:30
#: snikket_web/templates/invite_view.html:80
#: snikket_web/templates/invite_view.html:37
#: snikket_web/templates/invite_view.html:87
msgid "Download on the App Store"
msgstr ""
#: snikket_web/templates/invite_view.html:32
#: snikket_web/templates/invite_view.html:39
msgid "Get it on F-Droid"
msgstr ""
#: snikket_web/templates/invite_view.html:35
#: snikket_web/templates/invite_view.html:42
msgid "Send to mobile device"
msgstr ""
#: snikket_web/templates/invite_view.html:38
#: snikket_web/templates/invite_view.html:45
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:46
#: snikket_web/templates/invite_view.html:53
#, python-format
msgid ""
"You can connect to Snikket using any XMPP-compatible software. If the "
@@ -1314,59 +1399,59 @@ msgid ""
"href=\"%(register_url)s\">register an account manually</a>."
msgstr ""
#: snikket_web/templates/invite_view.html:52
#: snikket_web/templates/invite_view.html:59
msgid "Scan invite code"
msgstr ""
#: snikket_web/templates/invite_view.html:55
#: snikket_web/templates/invite_view.html:62
#: snikket_web/templates/invite_view.html:74
#: snikket_web/templates/invite_view.html:90
#: snikket_web/templates/invite_view.html:102
#: snikket_web/templates/invite_view.html:118
#: snikket_web/templates/invite_view.html:69
#: snikket_web/templates/invite_view.html:81
#: snikket_web/templates/invite_view.html:97
#: snikket_web/templates/invite_view.html:109
#: snikket_web/templates/invite_view.html:125
msgid "Close"
msgstr ""
#: snikket_web/templates/invite_view.html:58
#: snikket_web/templates/invite_view.html:65
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:71
#: snikket_web/templates/invite_view.html:78
msgid "Install on iOS"
msgstr ""
#: snikket_web/templates/invite_view.html:77
#: snikket_web/templates/invite_view.html:84
msgid ""
"After downloading Snikket from the App Store, you have to return to this "
"invite link and tap on \"Open the app\" to proceed."
msgstr ""
#: snikket_web/templates/invite_view.html:79
#: snikket_web/templates/invite_view.html:86
msgid "First download Snikket from the App Store using the button below:"
msgstr ""
#: snikket_web/templates/invite_view.html:81
#: snikket_web/templates/invite_view.html:109
#: snikket_web/templates/invite_view.html:88
#: snikket_web/templates/invite_view.html:116
msgid ""
"After the installation is complete, you can return to this page and tap "
"the \"Open the app\" button to continue with the setup:"
msgstr ""
#: snikket_web/templates/invite_view.html:99
#: snikket_web/templates/invite_view.html:108
#: snikket_web/templates/invite_view.html:106
#: snikket_web/templates/invite_view.html:115
msgid "Install via F-Droid"
msgstr ""
#: snikket_web/templates/invite_view.html:105
#: snikket_web/templates/invite_view.html:112
msgid ""
"After installing Snikket via F-Droid, you have to return to this invite "
"link and tap on \"Open the app\" to proceed."
msgstr ""
#: snikket_web/templates/invite_view.html:107
#: snikket_web/templates/invite_view.html:114
msgid "First install Snikket from F-Droid using the button below:"
msgstr ""
@@ -1405,6 +1490,43 @@ msgid ""
"<em>@%(snikket_domain)s</em>. Your password was not sent."
msgstr ""
#: snikket_web/templates/policies.html:4 snikket_web/templates/policies.html:10
msgid "Policies"
msgstr ""
#: snikket_web/templates/policies.html:13
msgid "Use of this service is subject to the following policies:"
msgstr ""
#: snikket_web/templates/policies.html:16
msgid "Terms of Service"
msgstr ""
#: snikket_web/templates/policies.html:19
msgid "Privacy Policy"
msgstr ""
#: snikket_web/templates/policies.html:23
msgid ""
"Please contact the administrator of this instance if you have questions "
"about policies."
msgstr ""
#: snikket_web/templates/policies.html:26
#, python-format
msgid ""
"Use of the Snikket apps is subject to the <a href=\"%(url)s\">Snikket "
"Apps Privacy Policy</a>."
msgstr ""
#: snikket_web/templates/policies.html:29
#, python-format
msgid ""
"To report policy violations or other abuse from this service, please send"
" an email to %(email)s. Specify the domain name of this instance "
"(%(domain)s) and include details of the incident(s)."
msgstr ""
#: snikket_web/templates/unauth.html:16
msgid "Operation successful"
msgstr ""

View File

@@ -6,9 +6,9 @@
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-07 22:31+0200\n"
"PO-Revision-Date: 2022-01-21 15:00+0000\n"
"Report-Msgid-Bugs-To: translations@snikket.org\n"
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
"PO-Revision-Date: 2023-04-04 14:11+0000\n"
"Last-Translator: misiek <migelazur@mailbox.org>\n"
"Language-Team: Polish <http://i18n.sotecware.net/projects/snikket/web-portal/"
"pl/>\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.8.1\n"
"X-Generator: Weblate 4.14.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
@@ -146,6 +146,7 @@ msgid "Invitation revoked"
msgstr "Unieważniono zaproszenie"
#: snikket_web/admin.py:394 snikket_web/admin.py:442
#: snikket_web/templates/admin_delete_circle.html:10
msgid "Name"
msgstr "Nazwa"
@@ -165,51 +166,51 @@ msgstr "Wybierz użytkownika"
msgid "Update circle"
msgstr "Zaktualizuj ustawienia kręgu"
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Usuń krąg bezpowrotnie"
#: snikket_web/admin.py:462
#: snikket_web/admin.py:458
msgid "Add user"
msgstr "Dodaj użytkownika"
#: snikket_web/admin.py:478
#: snikket_web/admin.py:474 snikket_web/admin.py:563
msgid "No such circle exists"
msgstr "Taki krąg nie istnieje"
#: snikket_web/admin.py:515
#: snikket_web/admin.py:511
msgid "Circle data updated"
msgstr "Zaktualizowano dane kręgu"
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "Krąg został usunięty"
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Dodano użytkownika do kręgu"
#: snikket_web/admin.py:541
#: snikket_web/admin.py:530
msgid "User removed from circle"
msgstr "Usunięto użytkownika z kręgu"
#: snikket_web/admin.py:610
#: snikket_web/admin.py:547
msgid "Delete circle permanently"
msgstr "Usuń krąg bezpowrotnie"
#: snikket_web/admin.py:574
msgid "Circle deleted"
msgstr "Krąg został usunięty"
#: snikket_web/admin.py:640
msgid "Message contents"
msgstr "Treść wiadomości"
#: snikket_web/admin.py:616
#: snikket_web/admin.py:646
msgid "Only send to online users"
msgstr "Wyślij jedynie do użytkowników online"
#: snikket_web/admin.py:620
#: snikket_web/admin.py:650
msgid "Post to all users"
msgstr "Wyślij do wszystkich użytkowników"
#: snikket_web/admin.py:624
#: snikket_web/admin.py:654
msgid "Send preview to yourself"
msgstr "Prześlij do siebie podgląd wiadomości"
#: snikket_web/admin.py:646
#: snikket_web/admin.py:676
msgid "Announcement sent!"
msgstr "Komunikat wysłany!"
@@ -587,6 +588,45 @@ msgstr "Surowy zrzut debugowania"
msgid "Copy complete output"
msgstr "Skopiuj całą zawartość"
#: snikket_web/templates/admin_delete_circle.html:4
#, python-format
msgid "Delete circle %(circle_name)s"
msgstr "Usuń krąg %(circle_name)s"
#: snikket_web/templates/admin_delete_circle.html:6
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:51
msgid "Delete circle"
msgstr "Usuń krąg"
#: snikket_web/templates/admin_delete_circle.html:8
msgid "Are you sure you want to delete the following circle?"
msgstr "Czy na pewno chcesz usunąć ten krąg?"
#: snikket_web/templates/admin_delete_circle.html:13
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Uwaga"
#: snikket_web/templates/admin_delete_circle.html:14
msgid ""
"The circle and the corresponding chat will be deleted, permanently and "
"immediately upon pushing the below button. <strong>There is no way back!</"
"strong>"
msgstr ""
"Krąg oraz jego dane zostaną trwale i natychmiastowo usunięte po naciśnięciu "
"poniższego przycisku. <strong>Nie będzie można tego cofnąć!</strong>"
#: snikket_web/templates/admin_delete_circle.html:17
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Wstecz"
#: snikket_web/templates/admin_delete_user.html:4
#, python-format
msgid "Delete user %(user_name)s"
@@ -601,10 +641,6 @@ msgstr "Usuń użytkownika"
msgid "Are you sure you want to delete the following user?"
msgstr "Czy na pewno chcesz usunąć tego użytkownika?"
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Uwaga"
#: snikket_web/templates/admin_delete_user.html:16
msgid ""
"The user and their data will be deleted irrevocably, permanently and "
@@ -615,15 +651,6 @@ msgstr ""
"usunięte po naciśnięciu poniższego przycisku. <strong>Nie będzie można tego "
"cofnąć!</strong>"
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Wstecz"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr "To twój główny krąg"
@@ -658,10 +685,6 @@ msgstr "Ten krąg nie jest powiązany z żadnym czatem grupowym."
msgid "Return to circle list"
msgstr "Wróć do listy kręgów"
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "Usuń krąg"
#: 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 usunie z serwera jego użytkowników."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-07 22:31+0200\n"
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
"PO-Revision-Date: 2021-03-12 23:04+0000\n"
"Last-Translator: GodGoldfish <godgoldfish@pm.me>\n"
"Language-Team: Russian <https://i18n.sotecware.net/projects/snikket/web-"
@@ -156,6 +156,7 @@ msgid "Invitation revoked"
msgstr "Вид приглашения"
#: snikket_web/admin.py:394 snikket_web/admin.py:442
#: snikket_web/templates/admin_delete_circle.html:10
msgid "Name"
msgstr "Имя"
@@ -175,51 +176,51 @@ msgstr "Выврать пользователя"
msgid "Update circle"
msgstr "Обновить крук"
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Удалить круг навсегда"
#: snikket_web/admin.py:462
#: snikket_web/admin.py:458
msgid "Add user"
msgstr "Добавить пользователя"
#: snikket_web/admin.py:478
#: snikket_web/admin.py:474 snikket_web/admin.py:563
msgid "No such circle exists"
msgstr "Нет кругов"
#: snikket_web/admin.py:515
#: snikket_web/admin.py:511
msgid "Circle data updated"
msgstr "Имя круга"
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "удалённый"
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Пригласить в круг"
#: snikket_web/admin.py:541
#: snikket_web/admin.py:530
msgid "User removed from circle"
msgstr "Удалить пользователя %(username)s из круга"
#: snikket_web/admin.py:610
#: snikket_web/admin.py:547
msgid "Delete circle permanently"
msgstr "Удалить круг навсегда"
#: snikket_web/admin.py:574
msgid "Circle deleted"
msgstr "удалённый"
#: snikket_web/admin.py:640
msgid "Message contents"
msgstr ""
#: snikket_web/admin.py:616
#: snikket_web/admin.py:646
msgid "Only send to online users"
msgstr ""
#: snikket_web/admin.py:620
#: snikket_web/admin.py:650
msgid "Post to all users"
msgstr ""
#: snikket_web/admin.py:624
#: snikket_web/admin.py:654
msgid "Send preview to yourself"
msgstr ""
#: snikket_web/admin.py:646
#: snikket_web/admin.py:676
msgid "Announcement sent!"
msgstr ""
@@ -605,6 +606,53 @@ msgstr "Исходная отладка переполнения"
msgid "Copy complete output"
msgstr "Копировать полный вывод"
#: snikket_web/templates/admin_delete_circle.html:4
#, fuzzy, python-format
#| msgid "Edit circle %(circle_name)s"
msgid "Delete circle %(circle_name)s"
msgstr "Редактировать круг %(circle_name)s"
#: snikket_web/templates/admin_delete_circle.html:6
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:51
msgid "Delete circle"
msgstr "Удалить круг"
#: snikket_web/templates/admin_delete_circle.html:8
#, fuzzy
#| msgid "Are you sure you want to delete the following user?"
msgid "Are you sure you want to delete the following circle?"
msgstr "Вы уверены, что хотите удалить следующего пользователя?"
#: snikket_web/templates/admin_delete_circle.html:13
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Опасность"
#: snikket_web/templates/admin_delete_circle.html:14
#, fuzzy
#| msgid ""
#| "The user and their data will be deleted irrevocably, permanently and "
#| "immediately upon pushing the below button. <strong>There is no way back!</"
#| "strong>"
msgid ""
"The circle and the corresponding chat will be deleted, permanently and "
"immediately upon pushing the below button. <strong>There is no way back!</"
"strong>"
msgstr ""
"Пользователь и его данные будут удалены безвозвратно, навсегда и сразу же "
"после нажатия нижней кнопки. <strong>Назад дороги нет!</strong>"
#: snikket_web/templates/admin_delete_circle.html:17
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Вернуть"
#: snikket_web/templates/admin_delete_user.html:4
#, python-format
msgid "Delete user %(user_name)s"
@@ -619,10 +667,6 @@ msgstr "Удалить пользователя"
msgid "Are you sure you want to delete the following user?"
msgstr "Вы уверены, что хотите удалить следующего пользователя?"
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Опасность"
#: snikket_web/templates/admin_delete_user.html:16
msgid ""
"The user and their data will be deleted irrevocably, permanently and "
@@ -632,15 +676,6 @@ msgstr ""
"Пользователь и его данные будут удалены безвозвратно, навсегда и сразу же "
"после нажатия нижней кнопки. <strong>Назад дороги нет!</strong>"
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Вернуть"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr "Это ваш основной круг"
@@ -674,10 +709,6 @@ msgstr "С этим кругом не связан ни один группов
msgid "Return to circle list"
msgstr ""
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "Удалить круг"
#: snikket_web/templates/admin_edit_circle.html:49
msgid "Deleting a circle does not delete any users in the circle."
msgstr "Удаление круга не приводит к удалению пользователей из круга."

View File

@@ -6,18 +6,18 @@
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-07 22:31+0200\n"
"PO-Revision-Date: 2022-01-18 09:21+0000\n"
"Report-Msgid-Bugs-To: translations@snikket.org\n"
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
"PO-Revision-Date: 2023-04-02 15:17+0000\n"
"Last-Translator: Kim Alvefur <zash@zash.se>\n"
"Language-Team: Swedish <http://i18n.sotecware.net/projects/snikket/web-"
"portal/sv/>\n"
"Language-Team: Swedish <http://i18n.sotecware.net/projects/snikket/"
"web-portal/sv/>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.8.1\n"
"X-Generator: Weblate 4.14.1\n"
"Generated-By: Babel 2.9.0\n"
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
@@ -145,6 +145,7 @@ msgid "Invitation revoked"
msgstr "Inbjudan återkallad"
#: snikket_web/admin.py:394 snikket_web/admin.py:442
#: snikket_web/templates/admin_delete_circle.html:10
msgid "Name"
msgstr "Namn"
@@ -164,51 +165,51 @@ msgstr "Välj användare"
msgid "Update circle"
msgstr "Uppdatera krets"
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "Radera krets permanent"
#: snikket_web/admin.py:462
#: snikket_web/admin.py:458
msgid "Add user"
msgstr "Lägg till användare"
#: snikket_web/admin.py:478
#: snikket_web/admin.py:474 snikket_web/admin.py:563
msgid "No such circle exists"
msgstr "Kretsen finns inte"
#: snikket_web/admin.py:515
#: snikket_web/admin.py:511
msgid "Circle data updated"
msgstr "Kretsen uppdaterades"
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "Krets raderad"
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "Användare tillagd i krets"
#: snikket_web/admin.py:541
#: snikket_web/admin.py:530
msgid "User removed from circle"
msgstr "Användaren %(username)s borttagen från krets"
#: snikket_web/admin.py:610
#: snikket_web/admin.py:547
msgid "Delete circle permanently"
msgstr "Radera krets permanent"
#: snikket_web/admin.py:574
msgid "Circle deleted"
msgstr "Krets raderad"
#: snikket_web/admin.py:640
msgid "Message contents"
msgstr "Meddelandeinnehåll"
#: snikket_web/admin.py:616
#: snikket_web/admin.py:646
msgid "Only send to online users"
msgstr "Skicka bara till användare som är online"
#: snikket_web/admin.py:620
#: snikket_web/admin.py:650
msgid "Post to all users"
msgstr "Skicka till alla användare"
#: snikket_web/admin.py:624
#: snikket_web/admin.py:654
msgid "Send preview to yourself"
msgstr "Skicka förhandsvisning till dig själv"
#: snikket_web/admin.py:646
#: snikket_web/admin.py:676
msgid "Announcement sent!"
msgstr "Tillkännagivande skickat!"
@@ -584,6 +585,46 @@ msgstr "Felsökningsdata"
msgid "Copy complete output"
msgstr "Kopiera allt"
#: snikket_web/templates/admin_delete_circle.html:4
#, python-format
msgid "Delete circle %(circle_name)s"
msgstr "Radera krets %(circle_name)s"
#: snikket_web/templates/admin_delete_circle.html:6
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:51
msgid "Delete circle"
msgstr "Radera krets"
#: snikket_web/templates/admin_delete_circle.html:8
msgid "Are you sure you want to delete the following circle?"
msgstr "Är du säker på att du vill radera denna krets?"
#: snikket_web/templates/admin_delete_circle.html:13
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Fara"
#: snikket_web/templates/admin_delete_circle.html:14
msgid ""
"The circle and the corresponding chat will be deleted, permanently and "
"immediately upon pushing the below button. <strong>There is no way back!</"
"strong>"
msgstr ""
"Om du trycker på knappen nedanför kommer kretsen och dess data raderas "
"direkt, permanent och skoningslöst. <strong>Därefter finns ingen "
"återvändo!</strong>"
#: snikket_web/templates/admin_delete_circle.html:17
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Tillbaka"
#: snikket_web/templates/admin_delete_user.html:4
#, python-format
msgid "Delete user %(user_name)s"
@@ -598,10 +639,6 @@ msgstr "Radera användare"
msgid "Are you sure you want to delete the following user?"
msgstr "Är du säker på att du vill radera denna användare?"
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "Fara"
#: snikket_web/templates/admin_delete_user.html:16
msgid ""
"The user and their data will be deleted irrevocably, permanently and "
@@ -612,15 +649,6 @@ msgstr ""
"direkt, permanent och skoningslöst. <strong>Därefter finns ingen återvändo!</"
"strong>"
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "Tillbaka"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr "Detta är din primära krets"
@@ -653,10 +681,6 @@ msgstr "Denna krets har ingen tillhörande gruppchatt."
msgid "Return to circle list"
msgstr "Tillbaka till cirkellistan"
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "Radera krets"
#: snikket_web/templates/admin_edit_circle.html:49
msgid "Deleting a circle does not delete any users in the circle."
msgstr "Användare i en krets raderas inte när kretsen raderas."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-06-07 22:31+0200\n"
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
"PO-Revision-Date: 2022-05-20 00:01+0000\n"
"Last-Translator: Zack Zhou <lnx@outlook.com>\n"
"Language-Team: Chinese (Simplified) <http://i18n.sotecware.net/projects/"
@@ -145,6 +145,7 @@ msgid "Invitation revoked"
msgstr "邀请已撤销"
#: snikket_web/admin.py:394 snikket_web/admin.py:442
#: snikket_web/templates/admin_delete_circle.html:10
msgid "Name"
msgstr "名称"
@@ -164,51 +165,51 @@ msgstr "选择用户"
msgid "Update circle"
msgstr "更新圈子"
#: snikket_web/admin.py:456
msgid "Delete circle permanently"
msgstr "永久删除圈子"
#: snikket_web/admin.py:462
#: snikket_web/admin.py:458
msgid "Add user"
msgstr "增加用户"
#: snikket_web/admin.py:478
#: snikket_web/admin.py:474 snikket_web/admin.py:563
msgid "No such circle exists"
msgstr "圈子不存在"
#: snikket_web/admin.py:515
#: snikket_web/admin.py:511
msgid "Circle data updated"
msgstr "圈子数据已更新"
#: snikket_web/admin.py:521
msgid "Circle deleted"
msgstr "圈子已删除"
#: snikket_web/admin.py:532
msgid "User added to circle"
msgstr "用户已添加到圈子"
#: snikket_web/admin.py:541
#: snikket_web/admin.py:530
msgid "User removed from circle"
msgstr "用户已从圈子移除"
#: snikket_web/admin.py:610
#: snikket_web/admin.py:547
msgid "Delete circle permanently"
msgstr "永久删除圈子"
#: snikket_web/admin.py:574
msgid "Circle deleted"
msgstr "圈子已删除"
#: snikket_web/admin.py:640
msgid "Message contents"
msgstr "消息内容"
#: snikket_web/admin.py:616
#: snikket_web/admin.py:646
msgid "Only send to online users"
msgstr "仅发送给在线用户"
#: snikket_web/admin.py:620
#: snikket_web/admin.py:650
msgid "Post to all users"
msgstr "发送给所有用户"
#: snikket_web/admin.py:624
#: snikket_web/admin.py:654
msgid "Send preview to yourself"
msgstr "发送预览"
#: snikket_web/admin.py:646
#: snikket_web/admin.py:676
msgid "Announcement sent!"
msgstr "公告已发送!"
@@ -566,6 +567,53 @@ msgstr "原始调试信息"
msgid "Copy complete output"
msgstr "复制"
#: snikket_web/templates/admin_delete_circle.html:4
#, fuzzy, python-format
#| msgid "Edit circle %(circle_name)s"
msgid "Delete circle %(circle_name)s"
msgstr "修改 %(circle_name)s 圈子信息"
#: snikket_web/templates/admin_delete_circle.html:6
#: snikket_web/templates/admin_edit_circle.html:48
#: snikket_web/templates/admin_edit_circle.html:51
msgid "Delete circle"
msgstr "删除圈子"
#: snikket_web/templates/admin_delete_circle.html:8
#, fuzzy
#| msgid "Are you sure you want to delete the following user?"
msgid "Are you sure you want to delete the following circle?"
msgstr "你确定要删除以下用户吗?"
#: snikket_web/templates/admin_delete_circle.html:13
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "危险"
#: snikket_web/templates/admin_delete_circle.html:14
#, fuzzy
#| msgid ""
#| "The user and their data will be deleted irrevocably, permanently and "
#| "immediately upon pushing the below button. <strong>There is no way back!</"
#| "strong>"
msgid ""
"The circle and the corresponding chat will be deleted, permanently and "
"immediately upon pushing the below button. <strong>There is no way back!</"
"strong>"
msgstr ""
"当你按下按钮的时候,此用户的相关数据将被立刻永久删除,此操作无法撤销。"
"<strong>没有后悔药!</strong>"
#: snikket_web/templates/admin_delete_circle.html:17
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "返回"
#: snikket_web/templates/admin_delete_user.html:4
#, python-format
msgid "Delete user %(user_name)s"
@@ -580,10 +628,6 @@ msgstr "删除用户"
msgid "Are you sure you want to delete the following user?"
msgstr "你确定要删除以下用户吗?"
#: snikket_web/templates/admin_delete_user.html:15
msgid "Danger"
msgstr "危险"
#: snikket_web/templates/admin_delete_user.html:16
msgid ""
"The user and their data will be deleted irrevocably, permanently and "
@@ -593,15 +637,6 @@ msgstr ""
"当你按下按钮的时候,此用户的相关数据将被立刻永久删除,此操作无法撤销。"
"<strong>没有后悔药!</strong>"
#: snikket_web/templates/admin_delete_user.html:19
#: snikket_web/templates/admin_reset_user_password.html:25
#: snikket_web/templates/user_logout.html:10
#: snikket_web/templates/user_manage_data.html:14
#: snikket_web/templates/user_passwd.html:27
#: snikket_web/templates/user_profile.html:32
msgid "Back"
msgstr "返回"
#: snikket_web/templates/admin_edit_circle.html:14
msgid "This is your main circle"
msgstr "这是你的主圈子"
@@ -634,10 +669,6 @@ msgstr "此圈子没有群聊。"
msgid "Return to circle list"
msgstr "返回圈子列表"
#: snikket_web/templates/admin_edit_circle.html:48
msgid "Delete circle"
msgstr "删除圈子"
#: snikket_web/templates/admin_edit_circle.html:49
msgid "Deleting a circle does not delete any users in the circle."
msgstr "删除圈子不会删除其中的用户账户。"