You've already forked snikket-web-portal
Compare commits
51 Commits
auto-versi
...
feature/ac
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
958b3365f7 | ||
|
|
05caf38d37 | ||
|
|
390ecded42 | ||
|
|
f6395d4d9c | ||
|
|
32179c72cd | ||
|
|
3cb8185b1a | ||
|
|
481379d03f | ||
|
|
275b302531 | ||
|
|
e18f727db0 | ||
|
|
f7429413cd | ||
|
|
aed9ad1cde | ||
|
|
b545c137b1 | ||
|
|
47642dc384 | ||
|
|
5d7183a0b8 | ||
|
|
c1cf6ab1e5 | ||
|
|
aee53a2e1a | ||
|
|
3a81a0140b | ||
|
|
5b4d4ddd36 | ||
|
|
28ff19c19c | ||
|
|
8e3837f704 | ||
|
|
98e7de3166 | ||
|
|
61c71b2145 | ||
|
|
6b35e9a259 | ||
|
|
58c2112fec | ||
|
|
c856afee82 | ||
|
|
c8356a8e9e | ||
|
|
0eb464f428 | ||
|
|
2a6ef3c8f1 | ||
|
|
b5d148458a | ||
|
|
261758b07a | ||
|
|
ff99c9488a | ||
|
|
fe78631039 | ||
|
|
12ddd288bf | ||
|
|
633fb0d084 | ||
|
|
f9690063bc | ||
|
|
65ed50acd3 | ||
|
|
aa04320d70 | ||
|
|
818d50a1bb | ||
|
|
c7ba7985ea | ||
|
|
223d127364 | ||
|
|
3a2c4543c4 | ||
|
|
c307f057b9 | ||
|
|
243d5ba236 | ||
|
|
3d62efccfc | ||
|
|
9d26e39025 | ||
|
|
874f0447ba | ||
|
|
0f2127a672 | ||
|
|
20d84e7dd1 | ||
|
|
a02e66023c | ||
|
|
e7db9cc772 | ||
|
|
e91fb45374 |
1
.github/workflows/main.yaml
vendored
1
.github/workflows/main.yaml
vendored
@@ -27,6 +27,7 @@ jobs:
|
||||
set -euo pipefail
|
||||
pip install mypy
|
||||
pip install -r requirements.txt
|
||||
pip install -r build-requirements.txt
|
||||
- name: Typecheck
|
||||
run: |
|
||||
python -m mypy --config mypy.ini -p snikket_web
|
||||
|
||||
55
Dockerfile
55
Dockerfile
@@ -1,7 +1,13 @@
|
||||
FROM debian:buster-slim
|
||||
FROM debian:bullseye-slim AS build
|
||||
|
||||
ARG BUILD_SERIES=dev
|
||||
ARG BUILD_ID=0
|
||||
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 \
|
||||
netcat;
|
||||
|
||||
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
|
||||
COPY build-requirements.txt /opt/snikket-web-portal/build-requirements.txt
|
||||
@@ -11,32 +17,41 @@ COPY babel.cfg /opt/snikket-web-portal/babel.cfg
|
||||
|
||||
WORKDIR /opt/snikket-web-portal
|
||||
|
||||
RUN set -eu; \
|
||||
export DEBIAN_FRONTEND=noninteractive ; \
|
||||
apt-get update ; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
python3 python3-pip python3-setuptools python3-wheel \
|
||||
libpython3-dev \
|
||||
make build-essential \
|
||||
netcat \
|
||||
; \
|
||||
pip3 install -r requirements.txt; \
|
||||
RUN pip3 install -r requirements.txt; \
|
||||
pip3 install -r build-requirements.txt; \
|
||||
make; \
|
||||
pip3 uninstall -yr build-requirements.txt; \
|
||||
apt-get remove -y build-essential make libpython3-dev; \
|
||||
apt-get autoremove -y; \
|
||||
pip3 install hypercorn; \
|
||||
rm -rf /root/.cache; \
|
||||
apt-get clean ; rm -rf /var/lib/apt/lists
|
||||
make;
|
||||
|
||||
|
||||
FROM debian:bullseye-slim
|
||||
|
||||
ARG BUILD_SERIES=dev
|
||||
ARG BUILD_ID=0
|
||||
|
||||
COPY docker/env.py /etc/snikket-web-portal/env.py
|
||||
|
||||
ENV SNIKKET_WEB_PYENV=/etc/snikket-web-portal/env.py
|
||||
|
||||
ENV SNIKKET_WEB_PROSODY_ENDPOINT=http://127.0.0.1:5280/
|
||||
|
||||
HEALTHCHECK CMD nc -zv ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE:-127.0.0.1} ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT:-5765}
|
||||
|
||||
RUN set -eu; \
|
||||
export DEBIAN_FRONTEND=noninteractive ; \
|
||||
apt-get update ; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
python3 python3-pip python3-setuptools python3-wheel; \
|
||||
apt-get clean ; rm -rf /var/lib/apt/lists; \
|
||||
pip3 install hypercorn; \
|
||||
rm -rf /root/.cache;
|
||||
|
||||
WORKDIR /opt/snikket-web-portal
|
||||
|
||||
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
|
||||
RUN pip3 install -r requirements.txt; rm -rf /root/.cache;
|
||||
|
||||
COPY --from=build /opt/snikket-web-portal/snikket_web/ /opt/snikket-web-portal/snikket_web
|
||||
COPY babel.cfg /opt/snikket-web-portal/babel.cfg
|
||||
|
||||
RUN echo "$BUILD_SERIES $BUILD_ID" > /opt/snikket-web-portal/.app_version
|
||||
|
||||
ADD docker/entrypoint.sh /entrypoint.sh
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
pyscss~=1.3
|
||||
mypy
|
||||
python-dotenv~=0.15
|
||||
types-toml
|
||||
|
||||
@@ -5,4 +5,5 @@ hsluv~=0.0.2
|
||||
flask-babel~=1.0
|
||||
email-validator~=1.1
|
||||
environ-config~=20.0
|
||||
wtforms~=2.3
|
||||
typing-extensions
|
||||
|
||||
@@ -154,7 +154,9 @@ class AppConfig:
|
||||
"pl",
|
||||
"sv",
|
||||
], converter=autosplit)
|
||||
apple_store_url = environ.var("")
|
||||
apple_store_url = environ.var(
|
||||
"https://apps.apple.com/us/app/snikket/id1545164189",
|
||||
)
|
||||
# Default limit of 1 MiB is what was discovered to be the effective limit
|
||||
# in #67, hence we set that here for now.
|
||||
# Future versions may change this default, and the standard deployment
|
||||
@@ -173,7 +175,7 @@ def create_app() -> quart.Quart:
|
||||
pass
|
||||
else:
|
||||
import runpy
|
||||
init_vars = runpy.run_path(env_init) # type:ignore
|
||||
init_vars = runpy.run_path(env_init)
|
||||
for name, value in init_vars.items():
|
||||
if not name:
|
||||
continue
|
||||
|
||||
@@ -63,9 +63,6 @@ async def users() -> str:
|
||||
)
|
||||
|
||||
|
||||
_LIMITED_ROLE_NAME = _("Limited")
|
||||
|
||||
|
||||
class EditUserForm(BaseForm):
|
||||
localpart = wtforms.StringField(
|
||||
_l("Login name"),
|
||||
@@ -78,9 +75,7 @@ class EditUserForm(BaseForm):
|
||||
role = wtforms.RadioField(
|
||||
_l("Access Level"),
|
||||
choices=[
|
||||
# NOTE: enable this only after something has been done which
|
||||
# actually enforces the described restrictions :).
|
||||
# ("prosody:restricted", _LIMITED_ROLE_NAME),
|
||||
("prosody:restricted", _("Limited")),
|
||||
("prosody:normal", _l("Normal user")),
|
||||
("prosody:admin", _l("Administrator")),
|
||||
],
|
||||
@@ -485,21 +480,21 @@ async def edit_circle(id_: str) -> typing.Union[str, quart.Response]:
|
||||
return redirect(url_for(".circles"))
|
||||
raise
|
||||
|
||||
users = sorted(
|
||||
await client.list_users(),
|
||||
key=lambda x: x.localpart
|
||||
)
|
||||
users = {
|
||||
user.localpart: user
|
||||
for user in await client.list_users()
|
||||
}
|
||||
circle_members = [
|
||||
user for user in users
|
||||
if user.localpart in circle.members
|
||||
(localpart, users.get(localpart))
|
||||
for localpart in sorted(circle.members)
|
||||
]
|
||||
|
||||
form = EditCircleForm()
|
||||
form.user_to_add.choices = [
|
||||
(user.localpart, user.localpart)
|
||||
for user in users
|
||||
if user.localpart not in circle.members
|
||||
]
|
||||
form.user_to_add.choices = sorted(
|
||||
(localpart, localpart)
|
||||
for localpart in users.keys()
|
||||
if localpart not in circle.members
|
||||
)
|
||||
valid_users = [x[0] for x in form.user_to_add.choices]
|
||||
|
||||
invite_form = InvitePost()
|
||||
|
||||
@@ -10,13 +10,14 @@ from quart import (
|
||||
current_app,
|
||||
render_template,
|
||||
redirect,
|
||||
request,
|
||||
url_for,
|
||||
session as http_session,
|
||||
)
|
||||
|
||||
import wtforms
|
||||
|
||||
from flask_babel import lazy_gettext as _l
|
||||
from flask_babel import lazy_gettext as _l, gettext
|
||||
|
||||
from .infra import client, selected_locale, BaseForm
|
||||
|
||||
@@ -26,6 +27,11 @@ bp = Blueprint("invite", __name__)
|
||||
|
||||
INVITE_SESSION_JID = "invite-session-jid"
|
||||
|
||||
MAX_IMPORT_DATA_SIZE = 5*1024*1024 # 5MB
|
||||
SUPPORTED_IMPORT_TYPES = ["application/xml", "text/xml"]
|
||||
|
||||
EIMPORTTOOBIG = _l("The account data you tried to import is too large to"
|
||||
"upload. Please contact your Snikket operator.")
|
||||
|
||||
# https://play.google.com/store/apps/details?id=org.snikket.android&referrer={uri|urlescape}&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1
|
||||
|
||||
@@ -163,6 +169,7 @@ async def register(id_: str) -> typing.Union[str, quart.Response]:
|
||||
raise
|
||||
else:
|
||||
http_session[INVITE_SESSION_JID] = jid
|
||||
await client.login(jid, form.password.data)
|
||||
return redirect(url_for(".success"))
|
||||
|
||||
return await render_template(
|
||||
@@ -232,11 +239,55 @@ async def reset(id_: str) -> typing.Union[str, quart.Response]:
|
||||
)
|
||||
|
||||
|
||||
class DataImportForm(BaseForm):
|
||||
account_data_file = wtforms.FileField(
|
||||
_l("Account data file")
|
||||
)
|
||||
|
||||
action_import = wtforms.SubmitField(
|
||||
_l("Import data")
|
||||
)
|
||||
|
||||
|
||||
@bp.route("/success", methods=["GET", "POST"])
|
||||
@client.require_session()
|
||||
async def success() -> str:
|
||||
form = DataImportForm()
|
||||
if form.validate_on_submit():
|
||||
ok = True
|
||||
file_info = (await request.files).get(form.account_data_file.name)
|
||||
if file_info is not None:
|
||||
mimetype = file_info.mimetype
|
||||
data = file_info.stream.read()
|
||||
if len(data) > MAX_IMPORT_DATA_SIZE:
|
||||
form.account_data_file.errors.append(EIMPORTTOOBIG)
|
||||
ok = False
|
||||
elif mimetype not in SUPPORTED_IMPORT_TYPES:
|
||||
form.account_data_file.errors.append(
|
||||
# not breaking the line here to avoid extract
|
||||
# translations failing (defensive)
|
||||
gettext("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).", mimetype=mimetype), # noqa:E501
|
||||
)
|
||||
ok = False
|
||||
elif len(data) > 0:
|
||||
await client.import_account_data(data)
|
||||
|
||||
if ok:
|
||||
# Re-render success page, this time with no import option
|
||||
return await render_template(
|
||||
"invite_success.html",
|
||||
jid=http_session.get(INVITE_SESSION_JID, ""),
|
||||
migration_success=True,
|
||||
)
|
||||
|
||||
return await render_template(
|
||||
"invite_success.html",
|
||||
jid=http_session.get(INVITE_SESSION_JID, ""),
|
||||
migration_success=False,
|
||||
form=form,
|
||||
max_import_size=MAX_IMPORT_DATA_SIZE,
|
||||
import_too_big_warning_header=_l("Error"),
|
||||
import_too_big_warning=EIMPORTTOOBIG,
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -296,6 +296,9 @@ class ProsodyClient:
|
||||
def _public_v1_endpoint(self, subpath: str) -> str:
|
||||
return "{}/register_api{}".format(self._endpoint_base, subpath)
|
||||
|
||||
def _xep227_endpoint(self, subpath: str) -> str:
|
||||
return "{}/xep227{}".format(self._endpoint_base, subpath)
|
||||
|
||||
async def _oauth2_bearer_token(self,
|
||||
session: aiohttp.ClientSession,
|
||||
jid: str,
|
||||
@@ -1121,6 +1124,34 @@ class ProsodyClient:
|
||||
) as resp:
|
||||
self._raise_error_from_response(resp)
|
||||
|
||||
@autosession
|
||||
async def export_account_data(
|
||||
self,
|
||||
*,
|
||||
session: aiohttp.ClientSession,
|
||||
) -> typing.Optional[str]:
|
||||
async with session.get(
|
||||
self._xep227_endpoint("/export?stores=roster,vcard,pep,pep_data"), # noqa:E501
|
||||
) as resp:
|
||||
self._raise_error_from_response(resp)
|
||||
if resp.status == 204:
|
||||
return None
|
||||
return await resp.text()
|
||||
|
||||
@autosession
|
||||
async def import_account_data(
|
||||
self,
|
||||
user_xml: str,
|
||||
*,
|
||||
session: aiohttp.ClientSession,
|
||||
) -> bool:
|
||||
async with session.put(
|
||||
self._xep227_endpoint("/import?stores=roster,vcard,pep,pep_data"), # noqa:E501
|
||||
data=user_xml,
|
||||
) as resp:
|
||||
self._raise_error_from_response(resp)
|
||||
return True
|
||||
|
||||
@autosession
|
||||
async def revoke_token(
|
||||
self,
|
||||
|
||||
@@ -42,6 +42,11 @@ licensed under the terms of the Apache 2.0 License -->
|
||||
<g fill="none"><path d="M0 0h24v24H0V0z" /><path d="M0 0h24v24H0V0z" opacity=".87" /></g>
|
||||
<path d="M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM9 8V6c0-1.66 1.34-3 3-3s3 1.34 3 3v2H9z" />
|
||||
</symbol>
|
||||
<!-- from: communication/import_export/materialiconsround/24px.svg -->
|
||||
<symbol id="icon-import_export" viewBox="0 0 24 24">
|
||||
<path d="M0 0h24v24H0V0z" fill="none" />
|
||||
<path d="M8.65 3.35L5.86 6.14c-.32.31-.1.85.35.85H8V13c0 .55.45 1 1 1s1-.45 1-1V6.99h1.79c.45 0 .67-.54.35-.85L9.35 3.35c-.19-.19-.51-.19-.7 0zM16 17.01V11c0-.55-.45-1-1-1s-1 .45-1 1v6.01h-1.79c-.45 0-.67.54-.35.85l2.79 2.78c.2.19.51.19.71 0l2.79-2.78c.32-.31.09-.85-.35-.85H16z" />
|
||||
</symbol>
|
||||
<!-- from: communication/qr_code/materialiconsround/24px.svg -->
|
||||
<symbol id="icon-qrcode" viewBox="0 0 24 24">
|
||||
<g><rect fill="none" height="24" width="24" /><rect fill="none" height="24" width="24" /></g>
|
||||
@@ -88,6 +93,21 @@ licensed under the terms of the Apache 2.0 License -->
|
||||
<path d="M0 0h24v24H0V0z" fill="none" />
|
||||
<path d="M3.4 20.4l17.45-7.48c.81-.35.81-1.49 0-1.84L3.4 3.6c-.66-.29-1.39.2-1.39.91L2 9.12c0 .5.37.93.87.99L17 12 2.87 13.88c-.5.07-.87.5-.87 1l.01 4.61c0 .71.73 1.2 1.39.91z" />
|
||||
</symbol>
|
||||
<!-- from: file/file_download/materialicons/24px.svg -->
|
||||
<symbol id="icon-download" viewBox="0 0 24 24">
|
||||
<path d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z" />
|
||||
</symbol>
|
||||
<!-- from: file/file_upload/materialicons/24px.svg -->
|
||||
<symbol id="icon-upload" viewBox="0 0 24 24">
|
||||
<path d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5z" />
|
||||
</symbol>
|
||||
<!-- from: file/folder/materialiconsround/24px.svg -->
|
||||
<symbol id="icon-folder" viewBox="0 0 24 24">
|
||||
<path d="M0 0h24v24H0V0z" fill="none" />
|
||||
<path d="M10.59 4.59C10.21 4.21 9.7 4 9.17 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-1.41-1.41z" />
|
||||
</symbol>
|
||||
<!-- from: navigation/arrow_back/materialiconsround/24px.svg -->
|
||||
<symbol id="icon-back" viewBox="0 0 24 24">
|
||||
<path d="M0 0h24v24H0V0z" fill="none" />
|
||||
|
||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 18 KiB |
@@ -1,5 +1,5 @@
|
||||
{% extends "admin_app.html" %}
|
||||
{% from "library.j2" import form_button, standard_button, value_or_hint, custom_form_button, clipboard_button %}
|
||||
{% from "library.j2" import form_button, standard_button, value_or_hint, custom_form_button, clipboard_button, icon %}
|
||||
{% block head_lead %}
|
||||
{{ super() }}
|
||||
{% include "copy-snippet.html" %}
|
||||
@@ -56,14 +56,21 @@
|
||||
{%- if circle_members -%}
|
||||
<div class="el-2 elevated"><table>
|
||||
<thead>
|
||||
<th>Login name</th>
|
||||
<th class="collapsible">Display name</th>
|
||||
<th>Actions</th>
|
||||
<th>{% trans %}Login name{% endtrans %}</th>
|
||||
<th class="collapsible">{% trans %}Display name{% endtrans %}</th>
|
||||
<th>{% trans %}Actions{% endtrans %}</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{%- for member in circle_members -%}
|
||||
{%- for localpart, member in circle_members -%}
|
||||
<tr>
|
||||
<td>{{ member.localpart }}</td>
|
||||
<td>
|
||||
{%- if member -%}
|
||||
{{ localpart }}
|
||||
{%- else -%}
|
||||
{{ localpart }}
|
||||
<span class="with-tooltip above" data-tooltip="{% trans %}The user has been deleted from the server.{% endtrans %}"><em> ({% trans %}deleted{% endtrans %})</em></span>
|
||||
{%- endif -%}
|
||||
</td>
|
||||
<td class="collapsible">{% call value_or_hint(member.display_name) %}{% endcall %}</td>
|
||||
<td class="nowrap">
|
||||
{%- call custom_form_button("remove_user", form.action_remove_user.name, member.localpart, class="primary danger", slim=True) -%}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{% extends "invite.html" %}
|
||||
{% set body_id = "invite" %}
|
||||
{% from "library.j2" import form_button, clipboard_button %}
|
||||
{% from "library.j2" import form_button, clipboard_button, render_errors %}
|
||||
{% block head_lead %}
|
||||
<title>{% trans site_name=config["SITE_NAME"] %}Successfully registered on {{ site_name }} | Snikket{% endtrans %}</title>
|
||||
{%- include "copy-snippet.html" -%}
|
||||
@@ -15,6 +15,47 @@
|
||||
{% trans %}Copy address{% endtrans %}
|
||||
{%- endcall -%}
|
||||
<p>{% trans %}You can now set up your legacy XMPP client with the above address and the password you chose during registration.{% endtrans %}</p>
|
||||
<p>{% trans %}You can now safely close this page.{% endtrans %}</p>
|
||||
<p>{% trans login_url=url_for('main.login') %}You can now safely close this page, or log in to the web portal to <a href="{{ login_url }}">manage your account</a>.{% endtrans %}</p>
|
||||
|
||||
{% if migration_success %}
|
||||
<h2>{% trans %}Import successful{% endtrans %}</h2>
|
||||
<p>{% trans %}Congratulations! Your account data has been successfully imported.{% endtrans %}</p>
|
||||
{% endif %}
|
||||
|
||||
{% if form %}
|
||||
<h2>{% trans %}Moving to Snikket?{% endtrans %}</h2>
|
||||
<p>{% trans %}If you are moving from a different Snikket instance or another XMPP-compatible service, you may optionally import the data (contacts, profile information, etc.) from your previous account. When you have exported the data from your previous account, upload it using the form below.{% endtrans %}</p>
|
||||
|
||||
<div class="form layout-expanded"><form method="POST" enctype="multipart/form-data">
|
||||
<h3 class="form-title">{% trans %}Upload account data{% endtrans %}</h3>
|
||||
{{ form.csrf_token }}
|
||||
{% call render_errors(form) %}{% endcall %}
|
||||
<div class="f-ebox">
|
||||
{{ form.account_data_file.label }}
|
||||
{{ form.account_data_file(accept="application/xml",
|
||||
data_maxsize=max_import_size,
|
||||
data_warning_header=import_too_big_warning_header,
|
||||
data_maxsize_warning=import_too_big_warning) }}
|
||||
</div>
|
||||
<div class="f-bbox">
|
||||
{%- call form_button("upload", form.action_import, class="secondary") %}{% endcall -%}
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
document.getElementById("{{ form.account_data_file.id }}").onchange = function() {
|
||||
var maxsize_s = this.dataset.maxsize;
|
||||
var maxsize = parseInt(maxsize_s);
|
||||
if (this.files[0].size > maxsize) {
|
||||
var warning_header = this.dataset.warningHeader;
|
||||
var warning_text = this.dataset.maxsizeWarning;
|
||||
this.setCustomValidity(warning_text);
|
||||
this.reportValidity();
|
||||
this.value = null;
|
||||
} else {
|
||||
this.setCustomValidity("");
|
||||
}
|
||||
};
|
||||
</script>
|
||||
</form></div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
{#- -#}
|
||||
<div id="qr-info-url" class="tab-pane active">
|
||||
<p>{% trans %}Use a <em>QR code</em> scanner on your mobile device to scan the code below:{% endtrans %}</p>
|
||||
<div id="qr-invite-page" data-qrdata="{{ url_for(".view", id_=invite_id, _external=True) }}" class="qr"></div>
|
||||
<div id="qr-invite-page" data-qrdata="{{ url_for(".view", id_=invite_id, _external=True, _scheme="https") }}" class="qr"></div>
|
||||
</div>
|
||||
{#- -#}
|
||||
<div id="qr-info-uri" class="tab-pane">
|
||||
@@ -127,7 +127,7 @@
|
||||
<p>{% trans %}After installing Snikket via F-Droid, you have to return to this invite link and tap on "Open the app" to proceed.{% endtrans %}</p>
|
||||
<ol>
|
||||
<li><p>{% trans %}First install Snikket from F-Droid using the button below:{% endtrans %}</p>
|
||||
<p><a href="{{ f_droid_url }}" class="popover" data-popover-id="fdroid-popover"><img alt='{% trans %}Install via F-Droid{% endtrans %}' src='{{ url_for('static', filename='img/f-droid-badge.png') }}' class="fdroid"/></a></p></li>
|
||||
<p><a href="{{ f_droid_url }}"><img alt='{% trans %}Install via F-Droid{% endtrans %}' src='{{ url_for('static', filename='img/f-droid-badge.png') }}' class="fdroid"/></a></p></li>
|
||||
<li><p>{% trans %}After the installation is complete, you can return to this page and tap the "Open the app" button to continue with the setup:{% endtrans %}</p>
|
||||
<p>
|
||||
{%- call standard_button("exit_to_app", invite.xmpp_uri, class="primary") -%}
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
<div>
|
||||
<div>{% call standard_button("edit", url_for(".profile"), class="primary") %}{% trans %}Edit profile{% endtrans %}{% endcall %}</div>
|
||||
<div>{% call standard_button("passwd", url_for(".change_pw"), class="secondary") %}{% trans %}Change password{% endtrans %}{% endcall %}</div>
|
||||
<div>{% call standard_button("folder", url_for(".manage_data"), class="secondary") %}{% trans %}Manage your data{% endtrans %}{% endcall %}</div>
|
||||
</div>
|
||||
{#- -#}
|
||||
</li>
|
||||
|
||||
22
snikket_web/templates/user_manage_data.html
Normal file
22
snikket_web/templates/user_manage_data.html
Normal file
@@ -0,0 +1,22 @@
|
||||
{% extends "app.html" %}
|
||||
{% from "library.j2" import standard_button, form_button, render_errors, avatar with context %}
|
||||
{% block content %}
|
||||
<h1>{% trans %}Manage your data{% endtrans %}</h1>
|
||||
<nav class="welcome">
|
||||
<ul>
|
||||
<li>
|
||||
<h2>{% trans %}Export account{% endtrans %}</h2>
|
||||
<p>{% trans %}Download your account data as a file for backup purposes or to move your account to another service.{% endtrans %}</p>
|
||||
|
||||
{% call render_errors(form) %}{% endcall %}
|
||||
|
||||
<div class="f-bbox">
|
||||
<form method="POST">
|
||||
{{ form.csrf_token }}
|
||||
{%- call form_button("download", form.action_export, class="primary") %}{% endcall -%}
|
||||
</form>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
{% endblock %}
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-05-27 17:59+0200\n"
|
||||
"POT-Creation-Date: 2021-06-18 16:05+0200\n"
|
||||
"PO-Revision-Date: 2021-04-02 19:01+0000\n"
|
||||
"Last-Translator: Daniel Holmgaard <annoncer@protonmail.com>\n"
|
||||
"Language-Team: Danish <https://i18n.sotecware.net/projects/snikket/web-"
|
||||
@@ -25,11 +25,13 @@ msgid "Limited"
|
||||
msgstr "Begrænset"
|
||||
|
||||
#: snikket_web/admin.py:71 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Login-navn"
|
||||
|
||||
#: snikket_web/admin.py:75 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:61
|
||||
msgid "Display name"
|
||||
msgstr "Kaldenavn"
|
||||
@@ -465,6 +467,7 @@ msgid "Members"
|
||||
msgstr "Medlemmer"
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:15
|
||||
#: snikket_web/templates/admin_edit_circle.html:61
|
||||
#: snikket_web/templates/admin_invites.html:24
|
||||
#: snikket_web/templates/admin_users.html:10
|
||||
msgid "Actions"
|
||||
@@ -619,28 +622,37 @@ msgstr "Sletning af en cirkel vil ikke slette brugere i cirklen."
|
||||
msgid "Circle members"
|
||||
msgstr "Cirkel medlemmer"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:70
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
msgid "The user has been deleted from the server."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "Slettet"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:77
|
||||
#, python-format
|
||||
msgid "Remove user %(username)s from circle"
|
||||
msgstr "Fjern bruger %(username)s fra cirkel"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:78
|
||||
#: snikket_web/templates/admin_edit_circle.html:85
|
||||
msgid "This circle currently has no members."
|
||||
msgstr "Den nuværende cirkel har ingen medlemmer."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:80
|
||||
#: snikket_web/templates/admin_edit_circle.html:87
|
||||
msgid "Invite more members"
|
||||
msgstr "Inviter flere medlemmer"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:83
|
||||
#: snikket_web/templates/admin_edit_circle.html:90
|
||||
msgid "Add existing user"
|
||||
msgstr "Tilføj eksisterende bruger"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:94
|
||||
#: snikket_web/templates/admin_edit_circle.html:101
|
||||
msgid "All users added"
|
||||
msgstr "Alle brugere tilføjet"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:95
|
||||
#: snikket_web/templates/admin_edit_circle.html:102
|
||||
msgid "All users on this service are already in this circle."
|
||||
msgstr "Alle brugerne af denne tjeneste er allerede i denne cirkel."
|
||||
|
||||
@@ -1411,10 +1423,6 @@ msgstr "Kopier link"
|
||||
msgid "Invalid input"
|
||||
msgstr "Ugyldig input"
|
||||
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "Slettet"
|
||||
|
||||
#: snikket_web/templates/library.j2:122
|
||||
msgid "Can be used multiple times to create accounts on this Snikket service."
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -7,11 +7,11 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SnikketWeb 0.1.0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-05-27 17:59+0200\n"
|
||||
"PO-Revision-Date: 2021-05-18 13:28+0000\n"
|
||||
"POT-Creation-Date: 2021-06-18 16:05+0200\n"
|
||||
"PO-Revision-Date: 2021-06-19 15:01+0000\n"
|
||||
"Last-Translator: Jonas Schäfer <jonas@zombofant.net>\n"
|
||||
"Language-Team: German <https://i18n.sotecware.net/projects/snikket/web-"
|
||||
"portal/de/>\n"
|
||||
"Language-Team: German <https://i18n.sotecware.net/projects/snikket/"
|
||||
"web-portal/de/>\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -25,11 +25,13 @@ msgid "Limited"
|
||||
msgstr "Eingeschränkt"
|
||||
|
||||
#: snikket_web/admin.py:71 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Anmeldename"
|
||||
|
||||
#: snikket_web/admin.py:75 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:61
|
||||
msgid "Display name"
|
||||
msgstr "Anzeigename"
|
||||
@@ -192,23 +194,23 @@ msgstr "Benutzer aus der Gemeinschaft entfernt"
|
||||
|
||||
#: snikket_web/admin.py:616
|
||||
msgid "Message contents"
|
||||
msgstr ""
|
||||
msgstr "Nachrichteninhalt"
|
||||
|
||||
#: snikket_web/admin.py:622
|
||||
msgid "Only send to online users"
|
||||
msgstr ""
|
||||
msgstr "Nur an verbundene Benutzer senden"
|
||||
|
||||
#: snikket_web/admin.py:626
|
||||
msgid "Post to all users"
|
||||
msgstr ""
|
||||
msgstr "An alle Benutzer senden"
|
||||
|
||||
#: snikket_web/admin.py:630
|
||||
msgid "Send preview to yourself"
|
||||
msgstr ""
|
||||
msgstr "Vorschau an dich selbst senden"
|
||||
|
||||
#: snikket_web/admin.py:652
|
||||
msgid "Announcement sent!"
|
||||
msgstr ""
|
||||
msgstr "Ankündigung verschickt!"
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
msgid "Main"
|
||||
@@ -466,6 +468,7 @@ msgid "Members"
|
||||
msgstr "Mitglieder"
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:15
|
||||
#: snikket_web/templates/admin_edit_circle.html:61
|
||||
#: snikket_web/templates/admin_invites.html:24
|
||||
#: snikket_web/templates/admin_users.html:10
|
||||
msgid "Actions"
|
||||
@@ -625,28 +628,37 @@ msgstr ""
|
||||
msgid "Circle members"
|
||||
msgstr "Mitglieder der Gemeinschaft"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:70
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
msgid "The user has been deleted from the server."
|
||||
msgstr "Dieser Benutzer wurde von diesem Server gelöscht."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "gelöscht"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:77
|
||||
#, python-format
|
||||
msgid "Remove user %(username)s from circle"
|
||||
msgstr "Benutzer %(username)s aus der Gemeinschaft entfernen"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:78
|
||||
#: snikket_web/templates/admin_edit_circle.html:85
|
||||
msgid "This circle currently has no members."
|
||||
msgstr "Diese Gemeinschaft hat derzeit keine Mitglieder."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:80
|
||||
#: snikket_web/templates/admin_edit_circle.html:87
|
||||
msgid "Invite more members"
|
||||
msgstr "Mehr Mitglieder einladen"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:83
|
||||
#: snikket_web/templates/admin_edit_circle.html:90
|
||||
msgid "Add existing user"
|
||||
msgstr "Bestehenden Benuzter hinzufügen"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:94
|
||||
#: snikket_web/templates/admin_edit_circle.html:101
|
||||
msgid "All users added"
|
||||
msgstr "Alle Benutzer hinzugefügt"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:95
|
||||
#: snikket_web/templates/admin_edit_circle.html:102
|
||||
msgid "All users on this service are already in this circle."
|
||||
msgstr "Alle Benutzer dieses Dienstes sind bereits in dieser Gemeinschaft."
|
||||
|
||||
@@ -835,22 +847,21 @@ msgstr "Einladungen verwalten"
|
||||
|
||||
#: snikket_web/templates/admin_home.html:35
|
||||
msgid "System health"
|
||||
msgstr ""
|
||||
msgstr "Systemzustand"
|
||||
|
||||
#: snikket_web/templates/admin_home.html:38
|
||||
msgid "View the server status or send a broadcast message to all users."
|
||||
msgstr ""
|
||||
"Einsehen des Serverzustands oder versenden einer Nachricht an alle Benutzer."
|
||||
|
||||
#: snikket_web/templates/admin_home.html:40
|
||||
msgid "Send a broadcast message to all users."
|
||||
msgstr ""
|
||||
msgstr "Nachricht an alle Benutzer versenden."
|
||||
|
||||
#: snikket_web/templates/admin_home.html:43
|
||||
#: snikket_web/templates/admin_system.html:4
|
||||
#, fuzzy
|
||||
#| msgid "Manage users"
|
||||
msgid "Manage system"
|
||||
msgstr "Benutzer verwalten"
|
||||
msgstr "System verwalten"
|
||||
|
||||
#: snikket_web/templates/admin_home.html:48
|
||||
msgid "Go back to your user's web portal page."
|
||||
@@ -911,11 +922,11 @@ msgstr "Link zerstören"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:6
|
||||
msgid "Overall system status"
|
||||
msgstr ""
|
||||
msgstr "Gesamtzustand"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:9
|
||||
msgid "System load (5 minute average)"
|
||||
msgstr ""
|
||||
msgstr "Systemlast (5-Minuten-Durchschnitt)"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:14
|
||||
#: snikket_web/templates/admin_system.html:22
|
||||
@@ -925,11 +936,11 @@ msgstr ""
|
||||
#: snikket_web/templates/admin_system.html:68
|
||||
#: snikket_web/templates/admin_system.html:76
|
||||
msgid "unknown"
|
||||
msgstr ""
|
||||
msgstr "unbekannt"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:17
|
||||
msgid "Memory use"
|
||||
msgstr ""
|
||||
msgstr "Arbeitsspeicherverbrauch"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:20
|
||||
#, python-format
|
||||
@@ -937,50 +948,52 @@ msgid ""
|
||||
"%(percentage_global)s of %(mem_available)s. Of that, Snikket uses "
|
||||
"%(percentage_snikket)s."
|
||||
msgstr ""
|
||||
"%(percentage_global)s von %(mem_available)s. Davon belegt Snikket "
|
||||
"%(percentage_snikket)s."
|
||||
|
||||
#: snikket_web/templates/admin_system.html:27
|
||||
msgid "Web portal status"
|
||||
msgstr ""
|
||||
msgstr "Status des Webportals"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:30
|
||||
#: snikket_web/templates/admin_system.html:53
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
msgstr "Version"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:31
|
||||
#: snikket_web/templates/admin_system.html:54
|
||||
msgid "View all versions"
|
||||
msgstr ""
|
||||
msgstr "Alle Versionen anzeigen"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:32
|
||||
#: snikket_web/templates/admin_system.html:55
|
||||
msgid "Average CPU use"
|
||||
msgstr ""
|
||||
msgstr "Durchschnittlicher CPU-Verbrauch"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:40
|
||||
#: snikket_web/templates/admin_system.html:63
|
||||
msgid "Current memory use"
|
||||
msgstr ""
|
||||
msgstr "Aktuelle Speicherbelegung"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:50
|
||||
#, fuzzy
|
||||
#| msgid "Snikket Web Portal"
|
||||
msgid "Snikket server status"
|
||||
msgstr "Snikket Webportal"
|
||||
msgstr "Status des Snikket-Servers"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:71
|
||||
msgid "Connected devices"
|
||||
msgstr ""
|
||||
msgstr "Verbundene Geräte"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:82
|
||||
msgid "Broadcast message"
|
||||
msgstr ""
|
||||
msgstr "Nachricht an alle senden"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:84
|
||||
msgid ""
|
||||
"This form allows you to send a message to all users currently online on your "
|
||||
"Snikket server. Use it wisely."
|
||||
msgstr ""
|
||||
"Mit diesem Formular kannst du eine Nachricht an alle Benutzer schicken, die "
|
||||
"zu deinem Snikket-Dienst gehören. Gebrauche es klug."
|
||||
|
||||
#: snikket_web/templates/admin_users.html:19
|
||||
msgid "The user is an administrator."
|
||||
@@ -1282,7 +1295,7 @@ msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:20
|
||||
msgid "Get started"
|
||||
msgstr "Leg los!"
|
||||
msgstr "Erste Schritte"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:22
|
||||
msgid "Install the Snikket App on your Android or iOS device."
|
||||
@@ -1434,10 +1447,6 @@ msgstr "Link kopieren"
|
||||
msgid "Invalid input"
|
||||
msgstr "Ungültige Eingabe"
|
||||
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "gelöscht"
|
||||
|
||||
#: snikket_web/templates/library.j2:122
|
||||
msgid "Can be used multiple times to create accounts on this Snikket service."
|
||||
msgstr ""
|
||||
|
||||
BIN
snikket_web/translations/en/LC_MESSAGES/messages.mo
Normal file
BIN
snikket_web/translations/en/LC_MESSAGES/messages.mo
Normal file
Binary file not shown.
@@ -7,17 +7,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-05-27 17:59+0200\n"
|
||||
"PO-Revision-Date: 2021-02-02 21:01+0000\n"
|
||||
"POT-Creation-Date: 2021-06-18 16:05+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-"
|
||||
"portal/en/>\n"
|
||||
"Language-Team: English <https://i18n.sotecware.net/projects/snikket/"
|
||||
"web-portal/en/>\n"
|
||||
"Language: en\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.4.2\n"
|
||||
"X-Generator: Weblate 4.5.1\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:66
|
||||
@@ -25,11 +25,13 @@ msgid "Limited"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:71 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Login name"
|
||||
|
||||
#: snikket_web/admin.py:75 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:61
|
||||
msgid "Display name"
|
||||
msgstr "Display name"
|
||||
@@ -509,6 +511,7 @@ msgid "Members"
|
||||
msgstr "Members"
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:15
|
||||
#: snikket_web/templates/admin_edit_circle.html:61
|
||||
#: snikket_web/templates/admin_invites.html:24
|
||||
#: snikket_web/templates/admin_users.html:10
|
||||
msgid "Actions"
|
||||
@@ -664,28 +667,37 @@ msgstr "Deleting a circle does not delete any users in the circle."
|
||||
msgid "Circle members"
|
||||
msgstr "Circle members"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:70
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
msgid "The user has been deleted from the server."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "deleted"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:77
|
||||
#, python-format
|
||||
msgid "Remove user %(username)s from circle"
|
||||
msgstr "Remove user %(username)s from circle"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:78
|
||||
#: snikket_web/templates/admin_edit_circle.html:85
|
||||
msgid "This circle currently has no members."
|
||||
msgstr "This circle currently has no members."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:80
|
||||
#: snikket_web/templates/admin_edit_circle.html:87
|
||||
msgid "Invite more members"
|
||||
msgstr "Invite more members"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:83
|
||||
#: snikket_web/templates/admin_edit_circle.html:90
|
||||
msgid "Add existing user"
|
||||
msgstr "Add existing user"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:94
|
||||
#: snikket_web/templates/admin_edit_circle.html:101
|
||||
msgid "All users added"
|
||||
msgstr "All users added"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:95
|
||||
#: snikket_web/templates/admin_edit_circle.html:102
|
||||
msgid "All users on this service are already in this circle."
|
||||
msgstr "All users on this service are already in this circle."
|
||||
|
||||
@@ -956,7 +968,7 @@ msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_system.html:9
|
||||
msgid "System load (5 minute average)"
|
||||
msgstr ""
|
||||
msgstr "System load (5-minute average)"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:14
|
||||
#: snikket_web/templates/admin_system.html:22
|
||||
@@ -1455,10 +1467,6 @@ msgstr "Copy link"
|
||||
msgid "Invalid input"
|
||||
msgstr "Invalid input"
|
||||
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "deleted"
|
||||
|
||||
#: snikket_web/templates/library.j2:122
|
||||
msgid "Can be used multiple times to create accounts on this Snikket service."
|
||||
msgstr "Can be used multiple times to create accounts on this Snikket service."
|
||||
|
||||
BIN
snikket_web/translations/en_GB/LC_MESSAGES/messages.mo
Normal file
BIN
snikket_web/translations/en_GB/LC_MESSAGES/messages.mo
Normal file
Binary file not shown.
@@ -7,9 +7,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-05-27 17:59+0200\n"
|
||||
"PO-Revision-Date: 2021-02-02 21:01+0000\n"
|
||||
"Last-Translator: riccio <unriccio@email.it>\n"
|
||||
"POT-Creation-Date: 2021-06-18 16:05+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/"
|
||||
"snikket/web-portal/en_GB/>\n"
|
||||
"Language: en_GB\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.4.2\n"
|
||||
"X-Generator: Weblate 4.5.1\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:66
|
||||
@@ -25,11 +25,13 @@ msgid "Limited"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:71 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Login name"
|
||||
|
||||
#: snikket_web/admin.py:75 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:61
|
||||
msgid "Display name"
|
||||
msgstr "Display name"
|
||||
@@ -508,6 +510,7 @@ msgid "Members"
|
||||
msgstr "Members"
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:15
|
||||
#: snikket_web/templates/admin_edit_circle.html:61
|
||||
#: snikket_web/templates/admin_invites.html:24
|
||||
#: snikket_web/templates/admin_users.html:10
|
||||
msgid "Actions"
|
||||
@@ -665,28 +668,37 @@ msgstr "Deleting a circle does not delete any users in the circle."
|
||||
msgid "Circle members"
|
||||
msgstr "Circle members"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:70
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
msgid "The user has been deleted from the server."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "deleted"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:77
|
||||
#, python-format
|
||||
msgid "Remove user %(username)s from circle"
|
||||
msgstr "Remove user %(username)s from circle"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:78
|
||||
#: snikket_web/templates/admin_edit_circle.html:85
|
||||
msgid "This circle currently has no members."
|
||||
msgstr "This circle currently has no members."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:80
|
||||
#: snikket_web/templates/admin_edit_circle.html:87
|
||||
msgid "Invite more members"
|
||||
msgstr "Invite more members"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:83
|
||||
#: snikket_web/templates/admin_edit_circle.html:90
|
||||
msgid "Add existing user"
|
||||
msgstr "Add existing user"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:94
|
||||
#: snikket_web/templates/admin_edit_circle.html:101
|
||||
msgid "All users added"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:95
|
||||
#: snikket_web/templates/admin_edit_circle.html:102
|
||||
msgid "All users on this service are already in this circle."
|
||||
msgstr "All users on this service are already in this circle."
|
||||
|
||||
@@ -965,7 +977,7 @@ msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_system.html:9
|
||||
msgid "System load (5 minute average)"
|
||||
msgstr ""
|
||||
msgstr "System load (5-minute average)"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:14
|
||||
#: snikket_web/templates/admin_system.html:22
|
||||
@@ -1439,10 +1451,6 @@ msgstr "Copy link"
|
||||
msgid "Invalid input"
|
||||
msgstr "Invalid input"
|
||||
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "deleted"
|
||||
|
||||
#: snikket_web/templates/library.j2:122
|
||||
#, fuzzy
|
||||
#| msgid "Manage users and invitations of this Snikket service."
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-05-27 17:59+0200\n"
|
||||
"POT-Creation-Date: 2021-06-18 16:05+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/"
|
||||
@@ -25,11 +25,13 @@ msgid "Limited"
|
||||
msgstr "Limitado"
|
||||
|
||||
#: snikket_web/admin.py:71 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Nombre de ingreso del usuario"
|
||||
|
||||
#: snikket_web/admin.py:75 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:61
|
||||
msgid "Display name"
|
||||
msgstr "Nombre mostrado"
|
||||
@@ -488,6 +490,7 @@ msgid "Members"
|
||||
msgstr "Miembros"
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:15
|
||||
#: snikket_web/templates/admin_edit_circle.html:61
|
||||
#: snikket_web/templates/admin_invites.html:24
|
||||
#: snikket_web/templates/admin_users.html:10
|
||||
msgid "Actions"
|
||||
@@ -645,28 +648,37 @@ msgstr "Eliminar un círculo no elimina a los usuarios que le pertenecen."
|
||||
msgid "Circle members"
|
||||
msgstr "Miembros del círculo"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:70
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
msgid "The user has been deleted from the server."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:77
|
||||
#, python-format
|
||||
msgid "Remove user %(username)s from circle"
|
||||
msgstr "Remover al usuario %(username)s del círculo"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:78
|
||||
#: snikket_web/templates/admin_edit_circle.html:85
|
||||
msgid "This circle currently has no members."
|
||||
msgstr "Actualmente este círculo no tiene miembros."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:80
|
||||
#: snikket_web/templates/admin_edit_circle.html:87
|
||||
msgid "Invite more members"
|
||||
msgstr "Invitar a más miembros"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:83
|
||||
#: snikket_web/templates/admin_edit_circle.html:90
|
||||
msgid "Add existing user"
|
||||
msgstr "Añadir a un usuario existente"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:94
|
||||
#: snikket_web/templates/admin_edit_circle.html:101
|
||||
msgid "All users added"
|
||||
msgstr "Todos los usuarios han sido añadidos"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:95
|
||||
#: snikket_web/templates/admin_edit_circle.html:102
|
||||
msgid "All users on this service are already in this circle."
|
||||
msgstr "Todos los usuarios de este servicio ya están en este círculo."
|
||||
|
||||
@@ -1394,10 +1406,6 @@ msgstr ""
|
||||
msgid "Invalid input"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/library.j2:122
|
||||
msgid "Can be used multiple times to create accounts on this Snikket service."
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -7,11 +7,11 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-05-27 17:59+0200\n"
|
||||
"PO-Revision-Date: 2021-05-27 18:31+0000\n"
|
||||
"POT-Creation-Date: 2021-06-18 16:05+0200\n"
|
||||
"PO-Revision-Date: 2021-06-19 15:01+0000\n"
|
||||
"Last-Translator: Link Mauve <linkmauve@linkmauve.fr>\n"
|
||||
"Language-Team: French <https://i18n.sotecware.net/projects/snikket/web-"
|
||||
"portal/fr/>\n"
|
||||
"Language-Team: French <https://i18n.sotecware.net/projects/snikket/"
|
||||
"web-portal/fr/>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -25,11 +25,13 @@ msgid "Limited"
|
||||
msgstr "Limité"
|
||||
|
||||
#: snikket_web/admin.py:71 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Identifiant"
|
||||
|
||||
#: snikket_web/admin.py:75 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:61
|
||||
msgid "Display name"
|
||||
msgstr "Nom à afficher"
|
||||
@@ -192,23 +194,23 @@ msgstr "Utilisateur retiré du cercle"
|
||||
|
||||
#: snikket_web/admin.py:616
|
||||
msgid "Message contents"
|
||||
msgstr ""
|
||||
msgstr "Contenu du message"
|
||||
|
||||
#: snikket_web/admin.py:622
|
||||
msgid "Only send to online users"
|
||||
msgstr ""
|
||||
msgstr "Envoyer uniquement aux utilisateurs connectés"
|
||||
|
||||
#: snikket_web/admin.py:626
|
||||
msgid "Post to all users"
|
||||
msgstr ""
|
||||
msgstr "Envoyer aux utilisateurs"
|
||||
|
||||
#: snikket_web/admin.py:630
|
||||
msgid "Send preview to yourself"
|
||||
msgstr ""
|
||||
msgstr "Envoyer une prévisualisation à vous-mêmes"
|
||||
|
||||
#: snikket_web/admin.py:652
|
||||
msgid "Announcement sent!"
|
||||
msgstr ""
|
||||
msgstr "Annonce envoyée !"
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
msgid "Main"
|
||||
@@ -465,6 +467,7 @@ msgid "Members"
|
||||
msgstr "Membres"
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:15
|
||||
#: snikket_web/templates/admin_edit_circle.html:61
|
||||
#: snikket_web/templates/admin_invites.html:24
|
||||
#: snikket_web/templates/admin_users.html:10
|
||||
msgid "Actions"
|
||||
@@ -621,28 +624,37 @@ msgstr "Supprimer un cercle ne supprime aucun utilisateur dans le cercle."
|
||||
msgid "Circle members"
|
||||
msgstr "Membres du cercle"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:70
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
msgid "The user has been deleted from the server."
|
||||
msgstr "Cet utilisateur a été supprimé du serveur."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "supprimé"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:77
|
||||
#, python-format
|
||||
msgid "Remove user %(username)s from circle"
|
||||
msgstr "Retirer l’utilisateur %(username)s du cercle"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:78
|
||||
#: snikket_web/templates/admin_edit_circle.html:85
|
||||
msgid "This circle currently has no members."
|
||||
msgstr "Ce cercle n’a pas encore de membres."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:80
|
||||
#: snikket_web/templates/admin_edit_circle.html:87
|
||||
msgid "Invite more members"
|
||||
msgstr "Inviter d’autres membres"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:83
|
||||
#: snikket_web/templates/admin_edit_circle.html:90
|
||||
msgid "Add existing user"
|
||||
msgstr "Ajouter un utilisateur existant"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:94
|
||||
#: snikket_web/templates/admin_edit_circle.html:101
|
||||
msgid "All users added"
|
||||
msgstr "Tous les utilisateurs ont été ajoutés"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:95
|
||||
#: snikket_web/templates/admin_edit_circle.html:102
|
||||
msgid "All users on this service are already in this circle."
|
||||
msgstr "Tous les utilisateurs de ce service sont déjà dans ce cercle."
|
||||
|
||||
@@ -829,22 +841,21 @@ msgstr "Gérer les invitations"
|
||||
|
||||
#: snikket_web/templates/admin_home.html:35
|
||||
msgid "System health"
|
||||
msgstr ""
|
||||
msgstr "Santé du système"
|
||||
|
||||
#: snikket_web/templates/admin_home.html:38
|
||||
msgid "View the server status or send a broadcast message to all users."
|
||||
msgstr ""
|
||||
"Voir le statut du serveur, ou diffuser un message à tous les utilisateurs."
|
||||
|
||||
#: snikket_web/templates/admin_home.html:40
|
||||
msgid "Send a broadcast message to all users."
|
||||
msgstr ""
|
||||
msgstr "Diffuser un message aux utilisateurs."
|
||||
|
||||
#: snikket_web/templates/admin_home.html:43
|
||||
#: snikket_web/templates/admin_system.html:4
|
||||
#, fuzzy
|
||||
#| msgid "Manage users"
|
||||
msgid "Manage system"
|
||||
msgstr "Gérer les utilisateurs"
|
||||
msgstr "Gérer le système"
|
||||
|
||||
#: snikket_web/templates/admin_home.html:48
|
||||
msgid "Go back to your user's web portal page."
|
||||
@@ -905,11 +916,11 @@ msgstr "Supprimer le lien"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:6
|
||||
msgid "Overall system status"
|
||||
msgstr ""
|
||||
msgstr "Statut général du système"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:9
|
||||
msgid "System load (5 minute average)"
|
||||
msgstr ""
|
||||
msgstr "Charge système (moyenne sur 5 minutes)"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:14
|
||||
#: snikket_web/templates/admin_system.html:22
|
||||
@@ -919,11 +930,11 @@ msgstr ""
|
||||
#: snikket_web/templates/admin_system.html:68
|
||||
#: snikket_web/templates/admin_system.html:76
|
||||
msgid "unknown"
|
||||
msgstr ""
|
||||
msgstr "inconnu(e)"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:17
|
||||
msgid "Memory use"
|
||||
msgstr ""
|
||||
msgstr "Utilisation mémoire"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:20
|
||||
#, python-format
|
||||
@@ -931,50 +942,52 @@ msgid ""
|
||||
"%(percentage_global)s of %(mem_available)s. Of that, Snikket uses "
|
||||
"%(percentage_snikket)s."
|
||||
msgstr ""
|
||||
"%(percentage_global)s de %(mem_available)s. De tout ça, Snikket utilise "
|
||||
"%(percentage_snikket)s."
|
||||
|
||||
#: snikket_web/templates/admin_system.html:27
|
||||
msgid "Web portal status"
|
||||
msgstr ""
|
||||
msgstr "Statut du portail web"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:30
|
||||
#: snikket_web/templates/admin_system.html:53
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
msgstr "Version"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:31
|
||||
#: snikket_web/templates/admin_system.html:54
|
||||
msgid "View all versions"
|
||||
msgstr ""
|
||||
msgstr "Voir toutes les versions"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:32
|
||||
#: snikket_web/templates/admin_system.html:55
|
||||
msgid "Average CPU use"
|
||||
msgstr ""
|
||||
msgstr "Utilisation CPU moyenne"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:40
|
||||
#: snikket_web/templates/admin_system.html:63
|
||||
msgid "Current memory use"
|
||||
msgstr ""
|
||||
msgstr "Utilisation mémoire courante"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:50
|
||||
#, fuzzy
|
||||
#| msgid "Snikket Web Portal"
|
||||
msgid "Snikket server status"
|
||||
msgstr "Portail web de Snikket"
|
||||
msgstr "Statut du serveur Snikket"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:71
|
||||
msgid "Connected devices"
|
||||
msgstr ""
|
||||
msgstr "Clients connectés"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:82
|
||||
msgid "Broadcast message"
|
||||
msgstr ""
|
||||
msgstr "Diffusion de message"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:84
|
||||
msgid ""
|
||||
"This form allows you to send a message to all users currently online on your "
|
||||
"Snikket server. Use it wisely."
|
||||
msgstr ""
|
||||
"Ce formulaire vous permet d’écrire un message à tous les utilisateurs "
|
||||
"présentement conectés à votre serveur Snikket. Utilisez-le judicieusement."
|
||||
|
||||
#: snikket_web/templates/admin_users.html:19
|
||||
msgid "The user is an administrator."
|
||||
@@ -1423,10 +1436,6 @@ msgstr "Copier le lien"
|
||||
msgid "Invalid input"
|
||||
msgstr "Saisie invalide"
|
||||
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "supprimé"
|
||||
|
||||
#: snikket_web/templates/library.j2:122
|
||||
msgid "Can be used multiple times to create accounts on this Snikket service."
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -6,18 +6,18 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-05-27 17:59+0200\n"
|
||||
"PO-Revision-Date: 2021-05-19 15:12+0000\n"
|
||||
"Report-Msgid-Bugs-To: translations@snikket.org\n"
|
||||
"POT-Creation-Date: 2021-06-18 16:05+0200\n"
|
||||
"PO-Revision-Date: 2021-12-12 07:00+0000\n"
|
||||
"Last-Translator: uira <inboxriau@andriana.id>\n"
|
||||
"Language-Team: Indonesian <https://i18n.sotecware.net/projects/snikket/web-"
|
||||
"portal/id/>\n"
|
||||
"Language-Team: Indonesian <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.5.1\n"
|
||||
"X-Generator: Weblate 4.8.1\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:66
|
||||
@@ -25,11 +25,13 @@ msgid "Limited"
|
||||
msgstr "Terbatas"
|
||||
|
||||
#: snikket_web/admin.py:71 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Nama login"
|
||||
|
||||
#: snikket_web/admin.py:75 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:61
|
||||
msgid "Display name"
|
||||
msgstr "Nama tampilan"
|
||||
@@ -192,23 +194,23 @@ msgstr "Pengguna dihapus dari kelompok"
|
||||
|
||||
#: snikket_web/admin.py:616
|
||||
msgid "Message contents"
|
||||
msgstr ""
|
||||
msgstr "Isi pesan"
|
||||
|
||||
#: snikket_web/admin.py:622
|
||||
msgid "Only send to online users"
|
||||
msgstr ""
|
||||
msgstr "Hanya kirim ke pengguna online"
|
||||
|
||||
#: snikket_web/admin.py:626
|
||||
msgid "Post to all users"
|
||||
msgstr ""
|
||||
msgstr "Kirim ke semua pengguna"
|
||||
|
||||
#: snikket_web/admin.py:630
|
||||
msgid "Send preview to yourself"
|
||||
msgstr ""
|
||||
msgstr "Kirim pratinjau ke diri sendiri"
|
||||
|
||||
#: snikket_web/admin.py:652
|
||||
msgid "Announcement sent!"
|
||||
msgstr ""
|
||||
msgstr "Pengumuman terkirim!"
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
msgid "Main"
|
||||
@@ -467,6 +469,7 @@ msgid "Members"
|
||||
msgstr "Anggota"
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:15
|
||||
#: snikket_web/templates/admin_edit_circle.html:61
|
||||
#: snikket_web/templates/admin_invites.html:24
|
||||
#: snikket_web/templates/admin_users.html:10
|
||||
msgid "Actions"
|
||||
@@ -625,28 +628,37 @@ msgstr ""
|
||||
msgid "Circle members"
|
||||
msgstr "Anggota kelompok"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:70
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
msgid "The user has been deleted from the server."
|
||||
msgstr "Pengguna telah dihapus dari server"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "Dihapus"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:77
|
||||
#, python-format
|
||||
msgid "Remove user %(username)s from circle"
|
||||
msgstr "Hapus pengguna %(username)s dari kelompok"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:78
|
||||
#: snikket_web/templates/admin_edit_circle.html:85
|
||||
msgid "This circle currently has no members."
|
||||
msgstr "Kelompok ini sedang tidak memiliki anggota."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:80
|
||||
#: snikket_web/templates/admin_edit_circle.html:87
|
||||
msgid "Invite more members"
|
||||
msgstr "Ajak lebih banyak anggota"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:83
|
||||
#: snikket_web/templates/admin_edit_circle.html:90
|
||||
msgid "Add existing user"
|
||||
msgstr "Tambahkan pengguna yang ada"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:94
|
||||
#: snikket_web/templates/admin_edit_circle.html:101
|
||||
msgid "All users added"
|
||||
msgstr "Semua pengguna ditambahkan"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:95
|
||||
#: snikket_web/templates/admin_edit_circle.html:102
|
||||
msgid "All users on this service are already in this circle."
|
||||
msgstr "Semua pengguna layanan ini sudah ada di kelompok ini."
|
||||
|
||||
@@ -831,22 +843,20 @@ msgstr "Kelola undangan"
|
||||
|
||||
#: snikket_web/templates/admin_home.html:35
|
||||
msgid "System health"
|
||||
msgstr ""
|
||||
msgstr "Kesehatan sistem"
|
||||
|
||||
#: snikket_web/templates/admin_home.html:38
|
||||
msgid "View the server status or send a broadcast message to all users."
|
||||
msgstr ""
|
||||
msgstr "Lihat status server atau kirim pesan siaran ke semua pengguna."
|
||||
|
||||
#: snikket_web/templates/admin_home.html:40
|
||||
msgid "Send a broadcast message to all users."
|
||||
msgstr ""
|
||||
msgstr "Kirim pesan siaran ke semua pengguna."
|
||||
|
||||
#: snikket_web/templates/admin_home.html:43
|
||||
#: snikket_web/templates/admin_system.html:4
|
||||
#, fuzzy
|
||||
#| msgid "Manage users"
|
||||
msgid "Manage system"
|
||||
msgstr "Kelola pengguna"
|
||||
msgstr "Kelola sistem"
|
||||
|
||||
#: snikket_web/templates/admin_home.html:48
|
||||
msgid "Go back to your user's web portal page."
|
||||
@@ -907,11 +917,11 @@ msgstr "Hancurkan tautan"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:6
|
||||
msgid "Overall system status"
|
||||
msgstr ""
|
||||
msgstr "Kesehatan sistem keseluruhan"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:9
|
||||
msgid "System load (5 minute average)"
|
||||
msgstr ""
|
||||
msgstr "Beban sistem (rata-rata 5 menit)"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:14
|
||||
#: snikket_web/templates/admin_system.html:22
|
||||
@@ -921,11 +931,11 @@ msgstr ""
|
||||
#: snikket_web/templates/admin_system.html:68
|
||||
#: snikket_web/templates/admin_system.html:76
|
||||
msgid "unknown"
|
||||
msgstr ""
|
||||
msgstr "Tidak diketahui"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:17
|
||||
msgid "Memory use"
|
||||
msgstr ""
|
||||
msgstr "Penggunaan memori"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:20
|
||||
#, python-format
|
||||
@@ -933,50 +943,52 @@ msgid ""
|
||||
"%(percentage_global)s of %(mem_available)s. Of that, Snikket uses "
|
||||
"%(percentage_snikket)s."
|
||||
msgstr ""
|
||||
"%(percentage_global)s of %(mem_available)s. Dari jumlah itu, Snikket "
|
||||
"menggunakan %(percentage_snikket)s."
|
||||
|
||||
#: snikket_web/templates/admin_system.html:27
|
||||
msgid "Web portal status"
|
||||
msgstr ""
|
||||
msgstr "Status portal web"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:30
|
||||
#: snikket_web/templates/admin_system.html:53
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
msgstr "Versi"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:31
|
||||
#: snikket_web/templates/admin_system.html:54
|
||||
msgid "View all versions"
|
||||
msgstr ""
|
||||
msgstr "Lihat versi semua"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:32
|
||||
#: snikket_web/templates/admin_system.html:55
|
||||
msgid "Average CPU use"
|
||||
msgstr ""
|
||||
msgstr "Penggunaan CPU rata-rata"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:40
|
||||
#: snikket_web/templates/admin_system.html:63
|
||||
msgid "Current memory use"
|
||||
msgstr ""
|
||||
msgstr "Penggunaan CPU rata-rata"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:50
|
||||
#, fuzzy
|
||||
#| msgid "Snikket Web Portal"
|
||||
msgid "Snikket server status"
|
||||
msgstr "Portal Web Snikket"
|
||||
msgstr "Status server Snikket"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:71
|
||||
msgid "Connected devices"
|
||||
msgstr ""
|
||||
msgstr "Perangkat terhubung"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:82
|
||||
msgid "Broadcast message"
|
||||
msgstr ""
|
||||
msgstr "Sebarkan pesan"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:84
|
||||
msgid ""
|
||||
"This form allows you to send a message to all users currently online on your "
|
||||
"Snikket server. Use it wisely."
|
||||
msgstr ""
|
||||
"Form ini memungkinkan mengirim pesan ke semua pengguna yang saat ini online "
|
||||
"di server Snikket Anda. Gunakan dengan bijak."
|
||||
|
||||
#: snikket_web/templates/admin_users.html:19
|
||||
msgid "The user is an administrator."
|
||||
@@ -1419,10 +1431,6 @@ msgstr "Salin tautan"
|
||||
msgid "Invalid input"
|
||||
msgstr "Input tidak valid"
|
||||
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "Dihapus"
|
||||
|
||||
#: snikket_web/templates/library.j2:122
|
||||
msgid "Can be used multiple times to create accounts on this Snikket service."
|
||||
msgstr ""
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-05-27 17:59+0200\n"
|
||||
"POT-Creation-Date: 2021-06-18 16:05+0200\n"
|
||||
"PO-Revision-Date: 2021-05-19 15:12+0000\n"
|
||||
"Last-Translator: Roberto Resoli <roberto@resolutions.it>\n"
|
||||
"Language-Team: Italian <https://i18n.sotecware.net/projects/snikket/web-"
|
||||
@@ -25,11 +25,13 @@ msgid "Limited"
|
||||
msgstr "Limitato"
|
||||
|
||||
#: snikket_web/admin.py:71 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Nome utente"
|
||||
|
||||
#: snikket_web/admin.py:75 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:61
|
||||
msgid "Display name"
|
||||
msgstr "Nome visualizzato"
|
||||
@@ -466,6 +468,7 @@ msgid "Members"
|
||||
msgstr "Membri"
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:15
|
||||
#: snikket_web/templates/admin_edit_circle.html:61
|
||||
#: snikket_web/templates/admin_invites.html:24
|
||||
#: snikket_web/templates/admin_users.html:10
|
||||
msgid "Actions"
|
||||
@@ -623,28 +626,37 @@ msgstr "Eliminare una cerchia non elimina nessuno dei suoi utenti."
|
||||
msgid "Circle members"
|
||||
msgstr "Membri della cerchia"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:70
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
msgid "The user has been deleted from the server."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "rimosso"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:77
|
||||
#, python-format
|
||||
msgid "Remove user %(username)s from circle"
|
||||
msgstr "Rimuovi l'utente %(username)s dalla cerchia"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:78
|
||||
#: snikket_web/templates/admin_edit_circle.html:85
|
||||
msgid "This circle currently has no members."
|
||||
msgstr "Al momento questa cerchia non contiene membri."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:80
|
||||
#: snikket_web/templates/admin_edit_circle.html:87
|
||||
msgid "Invite more members"
|
||||
msgstr "Invita altri membri"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:83
|
||||
#: snikket_web/templates/admin_edit_circle.html:90
|
||||
msgid "Add existing user"
|
||||
msgstr "Aggiungi un utente esistente"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:94
|
||||
#: snikket_web/templates/admin_edit_circle.html:101
|
||||
msgid "All users added"
|
||||
msgstr "Tutti gli utenti sono stati aggiunti"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:95
|
||||
#: snikket_web/templates/admin_edit_circle.html:102
|
||||
msgid "All users on this service are already in this circle."
|
||||
msgstr "Tutti gli utenti di questo servizio sono già in questa cerchia."
|
||||
|
||||
@@ -1426,10 +1438,6 @@ msgstr "Copia collegamento"
|
||||
msgid "Invalid input"
|
||||
msgstr "Dati non validi"
|
||||
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "rimosso"
|
||||
|
||||
#: snikket_web/templates/library.j2:122
|
||||
msgid "Can be used multiple times to create accounts on this Snikket service."
|
||||
msgstr ""
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-05-27 17:59+0200\n"
|
||||
"POT-Creation-Date: 2021-06-18 16:05+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-"
|
||||
@@ -25,11 +25,13 @@ msgid "Limited"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:71 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "ロゲイン名"
|
||||
|
||||
#: snikket_web/admin.py:75 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:61
|
||||
msgid "Display name"
|
||||
msgstr "表示名"
|
||||
@@ -493,6 +495,7 @@ msgid "Members"
|
||||
msgstr "サークル員"
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:15
|
||||
#: snikket_web/templates/admin_edit_circle.html:61
|
||||
#: snikket_web/templates/admin_invites.html:24
|
||||
#: snikket_web/templates/admin_users.html:10
|
||||
msgid "Actions"
|
||||
@@ -643,28 +646,37 @@ msgstr "サークルを削除しても会員は削除されまんせん。"
|
||||
msgid "Circle members"
|
||||
msgstr "サークル会員"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:70
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
msgid "The user has been deleted from the server."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:77
|
||||
#, python-format
|
||||
msgid "Remove user %(username)s from circle"
|
||||
msgstr "%(username)s をサークルから外す"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:78
|
||||
#: snikket_web/templates/admin_edit_circle.html:85
|
||||
msgid "This circle currently has no members."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:80
|
||||
#: snikket_web/templates/admin_edit_circle.html:87
|
||||
msgid "Invite more members"
|
||||
msgstr "会員を紹介する"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:83
|
||||
#: snikket_web/templates/admin_edit_circle.html:90
|
||||
msgid "Add existing user"
|
||||
msgstr "ユーザー追加"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:94
|
||||
#: snikket_web/templates/admin_edit_circle.html:101
|
||||
msgid "All users added"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:95
|
||||
#: snikket_web/templates/admin_edit_circle.html:102
|
||||
msgid "All users on this service are already in this circle."
|
||||
msgstr ""
|
||||
|
||||
@@ -1410,10 +1422,6 @@ msgstr "リンクをコピーする"
|
||||
msgid "Invalid input"
|
||||
msgstr "入力不正"
|
||||
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/library.j2:122
|
||||
msgid "Can be used multiple times to create accounts on this Snikket service."
|
||||
msgstr ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-05-27 17:59+0200\n"
|
||||
"POT-Creation-Date: 2021-06-18 16:05+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -22,11 +22,13 @@ msgid "Limited"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:71 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:75 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:61
|
||||
msgid "Display name"
|
||||
msgstr ""
|
||||
@@ -440,6 +442,7 @@ msgid "Members"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:15
|
||||
#: snikket_web/templates/admin_edit_circle.html:61
|
||||
#: snikket_web/templates/admin_invites.html:24
|
||||
#: snikket_web/templates/admin_users.html:10
|
||||
msgid "Actions"
|
||||
@@ -588,28 +591,37 @@ msgstr ""
|
||||
msgid "Circle members"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:70
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
msgid "The user has been deleted from the server."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:77
|
||||
#, python-format
|
||||
msgid "Remove user %(username)s from circle"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:78
|
||||
#: snikket_web/templates/admin_edit_circle.html:85
|
||||
msgid "This circle currently has no members."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:80
|
||||
#: snikket_web/templates/admin_edit_circle.html:87
|
||||
msgid "Invite more members"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:83
|
||||
#: snikket_web/templates/admin_edit_circle.html:90
|
||||
msgid "Add existing user"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:94
|
||||
#: snikket_web/templates/admin_edit_circle.html:101
|
||||
msgid "All users added"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:95
|
||||
#: snikket_web/templates/admin_edit_circle.html:102
|
||||
msgid "All users on this service are already in this circle."
|
||||
msgstr ""
|
||||
|
||||
@@ -1313,10 +1325,6 @@ msgstr ""
|
||||
msgid "Invalid input"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/library.j2:122
|
||||
msgid "Can be used multiple times to create accounts on this Snikket service."
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -7,18 +7,18 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-05-27 17:59+0200\n"
|
||||
"PO-Revision-Date: 2021-05-19 15:12+0000\n"
|
||||
"POT-Creation-Date: 2021-06-18 16:05+0200\n"
|
||||
"PO-Revision-Date: 2021-09-03 15:00+0000\n"
|
||||
"Last-Translator: misiek <migelazur@mailbox.org>\n"
|
||||
"Language-Team: Polish <https://i18n.sotecware.net/projects/snikket/web-"
|
||||
"portal/pl/>\n"
|
||||
"Language-Team: Polish <http://i18n.sotecware.net/projects/snikket/web-portal/"
|
||||
"pl/>\n"
|
||||
"Language: pl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"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.5.1\n"
|
||||
"X-Generator: Weblate 4.7.2\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:66
|
||||
@@ -26,11 +26,13 @@ msgid "Limited"
|
||||
msgstr "Ograniczony"
|
||||
|
||||
#: snikket_web/admin.py:71 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Login"
|
||||
|
||||
#: snikket_web/admin.py:75 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:61
|
||||
msgid "Display name"
|
||||
msgstr "Nazwa wyświetlana"
|
||||
@@ -193,23 +195,23 @@ msgstr "Usunięto użytkownika z kręgu"
|
||||
|
||||
#: snikket_web/admin.py:616
|
||||
msgid "Message contents"
|
||||
msgstr ""
|
||||
msgstr "Treść wiadomości"
|
||||
|
||||
#: snikket_web/admin.py:622
|
||||
msgid "Only send to online users"
|
||||
msgstr ""
|
||||
msgstr "Wyślij jedynie do użytkowników online"
|
||||
|
||||
#: snikket_web/admin.py:626
|
||||
msgid "Post to all users"
|
||||
msgstr ""
|
||||
msgstr "Wyślij do wszystkich użytkowników"
|
||||
|
||||
#: snikket_web/admin.py:630
|
||||
msgid "Send preview to yourself"
|
||||
msgstr ""
|
||||
msgstr "Prześlij do siebie podgląd wiadomości"
|
||||
|
||||
#: snikket_web/admin.py:652
|
||||
msgid "Announcement sent!"
|
||||
msgstr ""
|
||||
msgstr "Komunikat wysłany!"
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
msgid "Main"
|
||||
@@ -467,6 +469,7 @@ msgid "Members"
|
||||
msgstr "Członkowie"
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:15
|
||||
#: snikket_web/templates/admin_edit_circle.html:61
|
||||
#: snikket_web/templates/admin_invites.html:24
|
||||
#: snikket_web/templates/admin_users.html:10
|
||||
msgid "Actions"
|
||||
@@ -624,28 +627,37 @@ msgstr "Usunięcie kręgu nie usunie z serwera jego użytkowników."
|
||||
msgid "Circle members"
|
||||
msgstr "Członkowie kręgu"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:70
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
msgid "The user has been deleted from the server."
|
||||
msgstr "Użytkownik został usunięty z serwera."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "usunięty"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:77
|
||||
#, python-format
|
||||
msgid "Remove user %(username)s from circle"
|
||||
msgstr "Usuń z kręgu użytkownika %(username)s"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:78
|
||||
#: snikket_web/templates/admin_edit_circle.html:85
|
||||
msgid "This circle currently has no members."
|
||||
msgstr "Ten krąg nie ma obecnie członków."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:80
|
||||
#: snikket_web/templates/admin_edit_circle.html:87
|
||||
msgid "Invite more members"
|
||||
msgstr "Zaproś więcej użytkowników"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:83
|
||||
#: snikket_web/templates/admin_edit_circle.html:90
|
||||
msgid "Add existing user"
|
||||
msgstr "Dodaj istniejącego użytkownika"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:94
|
||||
#: snikket_web/templates/admin_edit_circle.html:101
|
||||
msgid "All users added"
|
||||
msgstr "Wszyscy użytkownicy dodani"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:95
|
||||
#: snikket_web/templates/admin_edit_circle.html:102
|
||||
msgid "All users on this service are already in this circle."
|
||||
msgstr "Wszyscy użytkownicy tego serwera są obecnie w tym kręgu."
|
||||
|
||||
@@ -832,22 +844,21 @@ msgstr "Zarządzaj zaproszeniami"
|
||||
|
||||
#: snikket_web/templates/admin_home.html:35
|
||||
msgid "System health"
|
||||
msgstr ""
|
||||
msgstr "Stan systemu"
|
||||
|
||||
#: snikket_web/templates/admin_home.html:38
|
||||
msgid "View the server status or send a broadcast message to all users."
|
||||
msgstr ""
|
||||
"Podejrzyj status serwera lub prześlij komunikat do wszystkich użytkowników."
|
||||
|
||||
#: snikket_web/templates/admin_home.html:40
|
||||
msgid "Send a broadcast message to all users."
|
||||
msgstr ""
|
||||
msgstr "Prześlij komunikat do wszystkich użytkowników."
|
||||
|
||||
#: snikket_web/templates/admin_home.html:43
|
||||
#: snikket_web/templates/admin_system.html:4
|
||||
#, fuzzy
|
||||
#| msgid "Manage users"
|
||||
msgid "Manage system"
|
||||
msgstr "Zarządzaj użytkownikami"
|
||||
msgstr "Zarządzaj systemem"
|
||||
|
||||
#: snikket_web/templates/admin_home.html:48
|
||||
msgid "Go back to your user's web portal page."
|
||||
@@ -908,11 +919,11 @@ msgstr "Zniszcz link"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:6
|
||||
msgid "Overall system status"
|
||||
msgstr ""
|
||||
msgstr "Ogólny status systemu"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:9
|
||||
msgid "System load (5 minute average)"
|
||||
msgstr ""
|
||||
msgstr "Obciążenie systemu (dla ostatnich 5 minut)"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:14
|
||||
#: snikket_web/templates/admin_system.html:22
|
||||
@@ -922,11 +933,11 @@ msgstr ""
|
||||
#: snikket_web/templates/admin_system.html:68
|
||||
#: snikket_web/templates/admin_system.html:76
|
||||
msgid "unknown"
|
||||
msgstr ""
|
||||
msgstr "nieznane"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:17
|
||||
msgid "Memory use"
|
||||
msgstr ""
|
||||
msgstr "Wykorzystanie pamięci"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:20
|
||||
#, python-format
|
||||
@@ -934,50 +945,52 @@ msgid ""
|
||||
"%(percentage_global)s of %(mem_available)s. Of that, Snikket uses "
|
||||
"%(percentage_snikket)s."
|
||||
msgstr ""
|
||||
"%(percentage_global)s z %(mem_available)s. Z tego Snikket używa "
|
||||
"%(percentage_snikket)s."
|
||||
|
||||
#: snikket_web/templates/admin_system.html:27
|
||||
msgid "Web portal status"
|
||||
msgstr ""
|
||||
msgstr "Status portalu internetowego"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:30
|
||||
#: snikket_web/templates/admin_system.html:53
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
msgstr "Wersja"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:31
|
||||
#: snikket_web/templates/admin_system.html:54
|
||||
msgid "View all versions"
|
||||
msgstr ""
|
||||
msgstr "Pokaż wszystkie wersje"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:32
|
||||
#: snikket_web/templates/admin_system.html:55
|
||||
msgid "Average CPU use"
|
||||
msgstr ""
|
||||
msgstr "Średnie użycie CPU"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:40
|
||||
#: snikket_web/templates/admin_system.html:63
|
||||
msgid "Current memory use"
|
||||
msgstr ""
|
||||
msgstr "Bieżące użycie pamięci"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:50
|
||||
#, fuzzy
|
||||
#| msgid "Snikket Web Portal"
|
||||
msgid "Snikket server status"
|
||||
msgstr "Portal użytkownika Snikket"
|
||||
msgstr "Status serwera Snikket"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:71
|
||||
msgid "Connected devices"
|
||||
msgstr ""
|
||||
msgstr "Podłączone urządzenia"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:82
|
||||
msgid "Broadcast message"
|
||||
msgstr ""
|
||||
msgstr "Wiadomość globalna"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:84
|
||||
msgid ""
|
||||
"This form allows you to send a message to all users currently online on your "
|
||||
"Snikket server. Use it wisely."
|
||||
msgstr ""
|
||||
"Ten formularz pozwala na wysłanie wiadomości do wszystkich użytkowników, "
|
||||
"którzy obecnie są online na twoim serwerze Snikket. Używaj go z rozwagą."
|
||||
|
||||
#: snikket_web/templates/admin_users.html:19
|
||||
msgid "The user is an administrator."
|
||||
@@ -1433,10 +1446,6 @@ msgstr "Skopiuj link"
|
||||
msgid "Invalid input"
|
||||
msgstr "Dane nieprawidłowe"
|
||||
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "usunięty"
|
||||
|
||||
#: snikket_web/templates/library.j2:122
|
||||
msgid "Can be used multiple times to create accounts on this Snikket service."
|
||||
msgstr ""
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-05-27 17:59+0200\n"
|
||||
"POT-Creation-Date: 2021-06-18 16:05+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-"
|
||||
@@ -26,11 +26,13 @@ msgid "Limited"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:71 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Логин"
|
||||
|
||||
#: snikket_web/admin.py:75 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:61
|
||||
msgid "Display name"
|
||||
msgstr "Отображаемое имя"
|
||||
@@ -488,6 +490,7 @@ msgid "Members"
|
||||
msgstr "Участники"
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:15
|
||||
#: snikket_web/templates/admin_edit_circle.html:61
|
||||
#: snikket_web/templates/admin_invites.html:24
|
||||
#: snikket_web/templates/admin_users.html:10
|
||||
msgid "Actions"
|
||||
@@ -644,28 +647,37 @@ msgstr "Удаление круга не приводит к удалению п
|
||||
msgid "Circle members"
|
||||
msgstr "Участники круга"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:70
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
msgid "The user has been deleted from the server."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "удалённый"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:77
|
||||
#, python-format
|
||||
msgid "Remove user %(username)s from circle"
|
||||
msgstr "Удалить пользователя %(username)s из круга"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:78
|
||||
#: snikket_web/templates/admin_edit_circle.html:85
|
||||
msgid "This circle currently has no members."
|
||||
msgstr "У этого круга пока нет участников."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:80
|
||||
#: snikket_web/templates/admin_edit_circle.html:87
|
||||
msgid "Invite more members"
|
||||
msgstr "Пригласить других участников"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:83
|
||||
#: snikket_web/templates/admin_edit_circle.html:90
|
||||
msgid "Add existing user"
|
||||
msgstr "Добавить существующего пользователя"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:94
|
||||
#: snikket_web/templates/admin_edit_circle.html:101
|
||||
msgid "All users added"
|
||||
msgstr "Все пользователи добавлены"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:95
|
||||
#: snikket_web/templates/admin_edit_circle.html:102
|
||||
msgid "All users on this service are already in this circle."
|
||||
msgstr "Все пользователи этого сервиса уже находятся в этом кругу."
|
||||
|
||||
@@ -1446,10 +1458,6 @@ msgstr "Ссылка на копирование"
|
||||
msgid "Invalid input"
|
||||
msgstr "Недействительный вход"
|
||||
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "удалённый"
|
||||
|
||||
#: snikket_web/templates/library.j2:122
|
||||
msgid "Can be used multiple times to create accounts on this Snikket service."
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -7,17 +7,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-05-27 17:59+0200\n"
|
||||
"PO-Revision-Date: 2021-05-28 21:00+0000\n"
|
||||
"POT-Creation-Date: 2021-06-18 16:05+0200\n"
|
||||
"PO-Revision-Date: 2021-08-01 14:00+0000\n"
|
||||
"Last-Translator: Kim Alvefur <zash@zash.se>\n"
|
||||
"Language-Team: Swedish <https://i18n.sotecware.net/projects/snikket/"
|
||||
"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.5.1\n"
|
||||
"X-Generator: Weblate 4.7.2\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:66
|
||||
@@ -25,11 +25,13 @@ msgid "Limited"
|
||||
msgstr "Begränsad"
|
||||
|
||||
#: snikket_web/admin.py:71 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Inloggningsnamn"
|
||||
|
||||
#: snikket_web/admin.py:75 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:61
|
||||
msgid "Display name"
|
||||
msgstr "Visningsnamn"
|
||||
@@ -464,6 +466,7 @@ msgid "Members"
|
||||
msgstr "Medlemmar"
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:15
|
||||
#: snikket_web/templates/admin_edit_circle.html:61
|
||||
#: snikket_web/templates/admin_invites.html:24
|
||||
#: snikket_web/templates/admin_users.html:10
|
||||
msgid "Actions"
|
||||
@@ -619,28 +622,37 @@ msgstr "Användare i en krets raderas inte när kretsen raderas."
|
||||
msgid "Circle members"
|
||||
msgstr "Medlemmar i krets"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:70
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
msgid "The user has been deleted from the server."
|
||||
msgstr "Användaren har raderats från servern."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "raderad"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:77
|
||||
#, python-format
|
||||
msgid "Remove user %(username)s from circle"
|
||||
msgstr "Radera användaren %(username)s från krets"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:78
|
||||
#: snikket_web/templates/admin_edit_circle.html:85
|
||||
msgid "This circle currently has no members."
|
||||
msgstr "Denna krets har för närvarande inga medlemmar."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:80
|
||||
#: snikket_web/templates/admin_edit_circle.html:87
|
||||
msgid "Invite more members"
|
||||
msgstr "Bjud in fler medlemmar"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:83
|
||||
#: snikket_web/templates/admin_edit_circle.html:90
|
||||
msgid "Add existing user"
|
||||
msgstr "Lägg till befintlig användare"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:94
|
||||
#: snikket_web/templates/admin_edit_circle.html:101
|
||||
msgid "All users added"
|
||||
msgstr "Alla användare tillagda"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:95
|
||||
#: snikket_web/templates/admin_edit_circle.html:102
|
||||
msgid "All users on this service are already in this circle."
|
||||
msgstr "Alla användare på den här tjänsten är redan i denna krets."
|
||||
|
||||
@@ -1407,10 +1419,6 @@ msgstr "Kopiera länk"
|
||||
msgid "Invalid input"
|
||||
msgstr "Ogiltigt indata"
|
||||
|
||||
#: snikket_web/templates/library.j2:108
|
||||
msgid "deleted"
|
||||
msgstr "raderad"
|
||||
|
||||
#: snikket_web/templates/library.j2:122
|
||||
msgid "Can be used multiple times to create accounts on this Snikket service."
|
||||
msgstr ""
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import asyncio
|
||||
import typing
|
||||
import urllib
|
||||
|
||||
import quart.flask_patch
|
||||
from quart import (
|
||||
Blueprint,
|
||||
Response,
|
||||
render_template,
|
||||
request,
|
||||
redirect,
|
||||
@@ -75,6 +77,16 @@ class ProfileForm(BaseForm):
|
||||
)
|
||||
|
||||
|
||||
class ImportAccountDataForm(BaseForm):
|
||||
account_data_file = wtforms.FileField(
|
||||
_l("Account data")
|
||||
)
|
||||
|
||||
action_upload = wtforms.SubmitField(
|
||||
_l("Upload"),
|
||||
)
|
||||
|
||||
|
||||
@bp.route("/")
|
||||
@client.require_session()
|
||||
async def index() -> str:
|
||||
@@ -168,6 +180,46 @@ async def profile() -> typing.Union[str, quart.Response]:
|
||||
avatar_too_big_warning=EAVATARTOOBIG)
|
||||
|
||||
|
||||
class DataExportForm(BaseForm):
|
||||
action_export = wtforms.SubmitField(
|
||||
_l("Export")
|
||||
)
|
||||
|
||||
|
||||
@bp.route("/manage_data", methods=["GET", "POST"])
|
||||
@client.require_session()
|
||||
async def manage_data() -> typing.Union[str, quart.Response]:
|
||||
form = DataExportForm()
|
||||
|
||||
if form.validate_on_submit():
|
||||
user_info = await client.get_user_info()
|
||||
# The UTF-8 version of the filename needs to be percent-encoded
|
||||
encoded_address = urllib.parse.quote(
|
||||
user_info["address"].encode(encoding='utf-8', errors='strict')
|
||||
)
|
||||
account_data = await client.export_account_data()
|
||||
if account_data is None:
|
||||
await flash(
|
||||
_("You currently have no account data to export."),
|
||||
"alert"
|
||||
)
|
||||
else:
|
||||
return Response(account_data,
|
||||
mimetype="application/xml",
|
||||
headers={
|
||||
# We provide the UTF-8 filename, but the ASCII
|
||||
# one will be used as a fallback for legacy
|
||||
# browsers (RFC 5987)
|
||||
"Content-Disposition": (
|
||||
'attachment; filename="account-data.xml"; '
|
||||
'filename*="UTF-8\'\'account-data-{}.xml"'
|
||||
).format(encoded_address)
|
||||
})
|
||||
return await render_template("user_manage_data.html",
|
||||
form=form,
|
||||
)
|
||||
|
||||
|
||||
@bp.route("/logout", methods=["GET", "POST"])
|
||||
@client.require_session()
|
||||
async def logout() -> typing.Union[quart.Response, str]:
|
||||
|
||||
@@ -207,7 +207,7 @@ def make_avatar_metadata_set_request(
|
||||
item,
|
||||
"metadata", xmlns=NS_USER_AVATAR_METADATA)
|
||||
|
||||
attr: typing.MutableMapping[str, str] = {
|
||||
attr: typing.Dict[str, str] = {
|
||||
"id": id_,
|
||||
"bytes": str(size),
|
||||
"type": mimetype,
|
||||
@@ -217,7 +217,12 @@ def make_avatar_metadata_set_request(
|
||||
if height is not None:
|
||||
attr["height"] = str(height)
|
||||
|
||||
ET.SubElement(metadata_wrap, "info", xmlns=NS_USER_AVATAR_METADATA, **attr)
|
||||
ET.SubElement(
|
||||
metadata_wrap,
|
||||
"info",
|
||||
xmlns=NS_USER_AVATAR_METADATA,
|
||||
**attr, # type: ignore
|
||||
)
|
||||
return req
|
||||
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ action/logout:logout
|
||||
action/login:login
|
||||
action/exit_to_app:exit_to_app
|
||||
action/lock:lock
|
||||
communication/import_export:import_export
|
||||
communication/qr_code:qrcode
|
||||
communication/vpn_key:passwd
|
||||
communication/rss_feed:broadcast
|
||||
@@ -15,6 +16,9 @@ content/remove_circle_outline:remove
|
||||
content/content_copy:copy
|
||||
content/link_off:remove_link
|
||||
content/send:send
|
||||
file/file_download:download
|
||||
file/file_upload:upload
|
||||
file/folder:folder
|
||||
navigation/arrow_back:back
|
||||
navigation/arrow_forward:forward
|
||||
navigation/cancel:cancel
|
||||
|
||||
Reference in New Issue
Block a user