You've already forked snikket-web-portal
Compare commits
71 Commits
feature/up
...
feature/ad
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
55b195cd7f | ||
|
|
46a7d0c37d | ||
|
|
c63b95c6e0 | ||
|
|
6848691141 | ||
|
|
1e83881a24 | ||
|
|
35e6bec328 | ||
|
|
d345f0d98d | ||
|
|
f5ccb7d858 | ||
|
|
f7c8bccfa2 | ||
|
|
e5d06877a4 | ||
|
|
e7ed9dd176 | ||
|
|
6778557db8 | ||
|
|
73f3f25515 | ||
|
|
bd66600d05 | ||
|
|
db363367da | ||
|
|
7ce13b55ac | ||
|
|
d6d4bb5afb | ||
|
|
da52771ebe | ||
|
|
e39b6ca8bb | ||
|
|
14368c5e9a | ||
|
|
2cdcf7f282 | ||
|
|
0f1e76e38c | ||
|
|
ad9af20f12 | ||
|
|
9672cd6870 | ||
|
|
d3a6be7bec | ||
|
|
7a4b56914c | ||
|
|
0f74b1b8f2 | ||
|
|
df78e8a8b0 | ||
|
|
77ccdd5eed | ||
|
|
54b6cad7cd | ||
|
|
fbb618c178 | ||
|
|
bd3d56851b | ||
|
|
c475b83c02 | ||
|
|
d9b73055a8 | ||
|
|
f37270594e | ||
|
|
fcfcdbeb23 | ||
|
|
fd566b7f30 | ||
|
|
2762304ae8 | ||
|
|
49bbc3ab09 | ||
|
|
8f1f80b7d7 | ||
|
|
13bc283a3e | ||
|
|
abc0af3918 | ||
|
|
0aff4fc99d | ||
|
|
40562d16f6 | ||
|
|
48a4a8f587 | ||
|
|
664112bf53 | ||
|
|
2dfc39e757 | ||
|
|
31b743a97f | ||
|
|
14a335bb06 | ||
|
|
6c8c213a88 | ||
|
|
2e224d96ce | ||
|
|
b70cb57497 | ||
|
|
124e0ce145 | ||
|
|
f2c79044e0 | ||
|
|
13bc4bb227 | ||
|
|
f1351eb5cc | ||
|
|
41573569af | ||
|
|
b1f3026b8a | ||
|
|
6794314a59 | ||
|
|
077e957a00 | ||
|
|
4902941145 | ||
|
|
5222c8eafe | ||
|
|
03ca7ac5bb | ||
|
|
56cee8bab6 | ||
|
|
eb22688302 | ||
|
|
73fda3d623 | ||
|
|
a998348804 | ||
|
|
20abe4b903 | ||
|
|
a1ecb4ce80 | ||
|
|
b84b84b394 | ||
|
|
6d50b1c2c7 |
23
.github/workflows/main.yaml
vendored
23
.github/workflows/main.yaml
vendored
@@ -50,6 +50,29 @@ jobs:
|
||||
run: |
|
||||
python -m flake8 snikket_web
|
||||
|
||||
translation-check:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
name: 'lint: i18n'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.9'
|
||||
- name: Install
|
||||
run: |
|
||||
set -euo pipefail
|
||||
pip install flask-babel
|
||||
- name: Linting
|
||||
run: |
|
||||
sed -ri '/^"POT-Creation-Date: /d' snikket_web/translations/messages.pot
|
||||
git add snikket_web/translations/messages.pot
|
||||
make extract_translations
|
||||
sed -ri '/^"POT-Creation-Date: /d' snikket_web/translations/messages.pot
|
||||
git diff --exit-code --color -- snikket_web/translations/messages.pot
|
||||
|
||||
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
|
||||
28
Dockerfile
28
Dockerfile
@@ -1,28 +1,22 @@
|
||||
FROM debian:bullseye-slim AS build
|
||||
FROM debian:bookworm-slim AS build
|
||||
|
||||
RUN set -eu; \
|
||||
export DEBIAN_FRONTEND=noninteractive ; \
|
||||
apt-get update ; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
python3 python3-pip python3-setuptools python3-wheel \
|
||||
libpython3-dev \
|
||||
make build-essential;
|
||||
python3 python3-mypy python3-dotenv python3-toml python3-babel python3-distutils \
|
||||
sassc make;
|
||||
|
||||
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
|
||||
COPY build-requirements.txt /opt/snikket-web-portal/build-requirements.txt
|
||||
COPY Makefile /opt/snikket-web-portal/Makefile
|
||||
COPY snikket_web/ /opt/snikket-web-portal/snikket_web
|
||||
COPY babel.cfg /opt/snikket-web-portal/babel.cfg
|
||||
|
||||
WORKDIR /opt/snikket-web-portal
|
||||
|
||||
RUN set -eu; \
|
||||
pip3 install -r requirements.txt; \
|
||||
pip3 install -r build-requirements.txt; \
|
||||
make;
|
||||
RUN make
|
||||
|
||||
|
||||
FROM debian:bullseye-slim
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
ARG BUILD_SERIES=dev
|
||||
ARG BUILD_ID=0
|
||||
@@ -33,19 +27,19 @@ ENV SNIKKET_WEB_PYENV=/etc/snikket-web-portal/env.py
|
||||
|
||||
ENV SNIKKET_WEB_PROSODY_ENDPOINT=http://127.0.0.1:5280/
|
||||
|
||||
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
|
||||
|
||||
WORKDIR /opt/snikket-web-portal
|
||||
|
||||
RUN set -eu; \
|
||||
export DEBIAN_FRONTEND=noninteractive ; \
|
||||
apt-get update ; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
python3 python3-pip python3-setuptools python3-wheel build-essential libpython3-dev netcat; \
|
||||
pip3 install -r requirements.txt; \
|
||||
apt-get remove -y --autoremove build-essential libpython3-dev; \
|
||||
netcat-traditional python3 python3-setuptools python3-pip \
|
||||
python3-aiohttp python3-email-validator python3-flask-babel \
|
||||
python3-flaskext.wtf python3-hsluv python3-hypercorn \
|
||||
python3-quart python3-typing-extensions python3-wtforms ; \
|
||||
pip3 install --break-system-packages environ-config ; \
|
||||
apt-get remove -y --purge python3-pip python3-setuptools; \
|
||||
apt-get clean ; rm -rf /var/lib/apt/lists; \
|
||||
pip3 install hypercorn; \
|
||||
rm -rf /root/.cache;
|
||||
|
||||
HEALTHCHECK CMD nc -zv ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE:-127.0.0.1} ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT:-5765}
|
||||
|
||||
4
Makefile
4
Makefile
@@ -6,7 +6,7 @@ translation_basepath = snikket_web/translations
|
||||
pot_file = $(translation_basepath)/messages.pot
|
||||
|
||||
PYTHON3 ?= python3
|
||||
SCSSC ?= $(PYTHON3) -m scss --load-path snikket_web/scss/
|
||||
SCSSC ?= sassc --load-path snikket_web/scss/
|
||||
|
||||
all: build_css compile_translations
|
||||
|
||||
@@ -14,7 +14,7 @@ build_css: $(generated_css_files)
|
||||
|
||||
$(generated_css_files): snikket_web/static/css/%.css: snikket_web/scss/%.scss $(scss_files) $(scss_includes)
|
||||
mkdir -p snikket_web/static/css/
|
||||
$(SCSSC) -o "$@" "$<"
|
||||
$(SCSSC) "$<" "$@"
|
||||
|
||||
clean:
|
||||
rm -f $(generated_css_files)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
[python: snikket_web/**.py]
|
||||
[jinja2: snikket_web/templates/**.html]
|
||||
[jinja2: snikket_web/templates/**.j2]
|
||||
extensions=jinja2.ext.autoescape,jinja2.ext.with_
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
pyscss~=1.3
|
||||
mypy
|
||||
python-dotenv~=0.15
|
||||
types-toml
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
#!/bin/sh
|
||||
|
||||
export SNIKKET_WEB_DOMAIN="$SNIKKET_DOMAIN"
|
||||
if [ -n "${SNIKKET_SITE_NAME:-}" ]; then
|
||||
export SNIKKET_WEB_SITE_NAME="$SNIKKET_SITE_NAME"
|
||||
fi
|
||||
|
||||
export SNIKKET_WEB_TOS_URI="${SNIKKET_TOS_URI}"
|
||||
export SNIKKET_WEB_PRIVACY_URI="${SNIKKET_PRIVACY_URI}"
|
||||
export SNIKKET_WEB_ABUSE_EMAIL="${SNIKKET_ABUSE_EMAIL}"
|
||||
export SNIKKET_WEB_SECURITY_EMAIL="${SNIKKET_SECURITY_EMAIL}"
|
||||
|
||||
export SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE="${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE-127.0.0.1}"
|
||||
export SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT="${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT-5765}"
|
||||
|
||||
exec hypercorn -b "${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE}:${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT}" 'snikket_web:create_app()'
|
||||
exec hypercorn -b "${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE}:${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT}" --access-logfile=- --log-file=- 'snikket_web:create_app()'
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
aiohttp~=3.6
|
||||
quart~=0.17
|
||||
flask-wtf~=0.14
|
||||
quart~=0.17,<0.18
|
||||
flask-wtf~=1.0
|
||||
hsluv~=5.0
|
||||
flask-babel~=1.0
|
||||
email-validator~=1.1
|
||||
environ-config~=20.0
|
||||
wtforms~=2.3
|
||||
wtforms~=3.0
|
||||
typing-extensions
|
||||
|
||||
@@ -147,9 +147,13 @@ class AppConfig:
|
||||
site_name = environ.var("")
|
||||
avatar_cache_ttl = environ.var(1800, converter=int)
|
||||
languages = environ.var([
|
||||
# Keep `en` as the first language, because it is used as a fallback
|
||||
# if the language negotiation cannot find another match. It is more
|
||||
# likely that users are able to read english (or find a suitable
|
||||
# online translator) than, for instance, danish.
|
||||
"en",
|
||||
"da",
|
||||
"de",
|
||||
"en",
|
||||
"fr",
|
||||
"id",
|
||||
"it",
|
||||
@@ -166,6 +170,10 @@ class AppConfig:
|
||||
# tools may also very well override it.
|
||||
max_avatar_size = environ.var(1024*1024, converter=int)
|
||||
show_metrics = environ.bool_var(True)
|
||||
tos_uri = environ.var("")
|
||||
privacy_uri = environ.var("")
|
||||
abuse_email = environ.var("")
|
||||
security_email = environ.var("")
|
||||
|
||||
|
||||
_UPPER_CASE = "".join(map(chr, range(ord("A"), ord("Z")+1)))
|
||||
@@ -198,6 +206,10 @@ def create_app() -> quart.Quart:
|
||||
app.config["APPLE_STORE_URL"] = config.apple_store_url
|
||||
app.config["MAX_AVATAR_SIZE"] = config.max_avatar_size
|
||||
app.config["SHOW_METRICS"] = config.show_metrics
|
||||
app.config["TOS_URI"] = config.tos_uri
|
||||
app.config["PRIVACY_URI"] = config.privacy_uri
|
||||
app.config["ABUSE_EMAIL"] = config.abuse_email
|
||||
app.config["SECURITY_EMAIL"] = config.security_email
|
||||
|
||||
app.context_processor(proc)
|
||||
app.register_error_handler(
|
||||
|
||||
@@ -12,7 +12,6 @@ import werkzeug.exceptions
|
||||
import quart.flask_patch
|
||||
|
||||
import wtforms
|
||||
import wtforms.fields.html5
|
||||
|
||||
from quart import (
|
||||
Blueprint,
|
||||
@@ -78,7 +77,7 @@ class EditUserForm(BaseForm):
|
||||
_l("Access Level"),
|
||||
choices=[
|
||||
("prosody:restricted", _("Limited")),
|
||||
("prosody:normal", _l("Normal user")),
|
||||
("prosody:registered", _l("Normal user")),
|
||||
("prosody:admin", _l("Administrator")),
|
||||
],
|
||||
)
|
||||
@@ -87,6 +86,14 @@ class EditUserForm(BaseForm):
|
||||
_l("Update user"),
|
||||
)
|
||||
|
||||
action_restore = wtforms.SubmitField(
|
||||
_l("Restore account"),
|
||||
)
|
||||
|
||||
action_enable = wtforms.SubmitField(
|
||||
_l("Unlock account"),
|
||||
)
|
||||
|
||||
action_create_reset = wtforms.SubmitField(
|
||||
_l("Create password reset link"),
|
||||
)
|
||||
@@ -113,18 +120,44 @@ async def edit_user(localpart: str) -> typing.Union[werkzeug.Response, str]:
|
||||
".user_password_reset_link",
|
||||
id_=reset_link.id_,
|
||||
))
|
||||
elif form.action_restore.data or form.action_enable.data:
|
||||
await client.enable_user_account(localpart)
|
||||
try:
|
||||
if form.action_restore.data:
|
||||
await flash(
|
||||
_("User account restored"),
|
||||
"success",
|
||||
)
|
||||
else:
|
||||
await flash(
|
||||
_("User account unlocked"),
|
||||
"success",
|
||||
)
|
||||
return redirect(url_for(".users"))
|
||||
except aiohttp.ClientResponseError:
|
||||
if form.action_restore.data:
|
||||
await flash(
|
||||
_("Could not restore user account"),
|
||||
"alert",
|
||||
)
|
||||
else:
|
||||
await flash(
|
||||
_("Could not unlock user account"),
|
||||
"alert",
|
||||
)
|
||||
return redirect(url_for(".edit_user", localpart=localpart))
|
||||
|
||||
await client.update_user(
|
||||
localpart,
|
||||
display_name=form.display_name.data,
|
||||
roles=[form.role.data],
|
||||
role=form.role.data,
|
||||
)
|
||||
|
||||
await flash(
|
||||
_("User information updated."),
|
||||
"success",
|
||||
)
|
||||
return redirect(url_for(".edit_user", localpart=localpart))
|
||||
return redirect(url_for(".users"))
|
||||
|
||||
elif request.method == "GET":
|
||||
form.localpart.data = target_user_info.localpart
|
||||
@@ -132,7 +165,7 @@ async def edit_user(localpart: str) -> typing.Union[werkzeug.Response, str]:
|
||||
if target_user_info.roles:
|
||||
form.role.data = target_user_info.roles[0]
|
||||
else:
|
||||
form.role.data = "prosody:normal"
|
||||
form.role.data = "prosody:registered"
|
||||
|
||||
return await render_template(
|
||||
"admin_edit_user.html",
|
||||
@@ -453,16 +486,14 @@ class EditCircleForm(BaseForm):
|
||||
_l("Update circle")
|
||||
)
|
||||
|
||||
action_delete = wtforms.SubmitField(
|
||||
_l("Delete circle permanently")
|
||||
)
|
||||
|
||||
action_remove_user = wtforms.StringField()
|
||||
|
||||
action_add_user = wtforms.SubmitField(
|
||||
_l("Add user")
|
||||
)
|
||||
|
||||
action_remove_group_chat = wtforms.StringField()
|
||||
|
||||
|
||||
@bp.route("/circle/<id_>", methods=["GET", "POST"])
|
||||
@client.require_admin_session()
|
||||
@@ -516,13 +547,6 @@ async def edit_circle(id_: str) -> typing.Union[str, werkzeug.Response]:
|
||||
_("Circle data updated"),
|
||||
"success",
|
||||
)
|
||||
elif form.action_delete.data:
|
||||
await client.delete_group(id_)
|
||||
await flash(
|
||||
_("Circle deleted"),
|
||||
"success",
|
||||
)
|
||||
return redirect(url_for(".circles"))
|
||||
elif form.action_add_user.data:
|
||||
if form.user_to_add.data in valid_users:
|
||||
await client.add_group_member(
|
||||
@@ -542,6 +566,15 @@ async def edit_circle(id_: str) -> typing.Union[str, werkzeug.Response]:
|
||||
_("User removed from circle"),
|
||||
"success",
|
||||
)
|
||||
elif form.action_remove_group_chat.data:
|
||||
await client.remove_group_chat(
|
||||
id_,
|
||||
form.action_remove_group_chat.data,
|
||||
)
|
||||
await flash(
|
||||
_("Chat removed from circle"),
|
||||
"success",
|
||||
)
|
||||
|
||||
return redirect(url_for(".edit_circle", id_=id_))
|
||||
|
||||
@@ -549,11 +582,103 @@ async def edit_circle(id_: str) -> typing.Union[str, werkzeug.Response]:
|
||||
"admin_edit_circle.html",
|
||||
target_circle=circle,
|
||||
form=form,
|
||||
circle_chats=circle.chats,
|
||||
circle_members=circle_members,
|
||||
invite_form=invite_form,
|
||||
)
|
||||
|
||||
|
||||
class DeleteCircleForm(BaseForm):
|
||||
action_delete = wtforms.SubmitField(
|
||||
_l("Delete circle permanently")
|
||||
)
|
||||
|
||||
|
||||
@bp.route("/circle/<id_>/delete", methods=["GET", "POST"])
|
||||
@client.require_admin_session()
|
||||
async def delete_circle(id_: str) -> typing.Union[str, werkzeug.Response]:
|
||||
async with client.authenticated_session() as session:
|
||||
try:
|
||||
circle = await client.get_group_by_id(
|
||||
id_,
|
||||
session=session,
|
||||
)
|
||||
except aiohttp.ClientResponseError as exc:
|
||||
if exc.status == 404:
|
||||
await flash(
|
||||
_("No such circle exists"),
|
||||
"alert",
|
||||
)
|
||||
return redirect(url_for(".circles"))
|
||||
raise
|
||||
|
||||
form = DeleteCircleForm()
|
||||
if form.validate_on_submit():
|
||||
if form.action_delete.data:
|
||||
await client.delete_group(id_)
|
||||
await flash(
|
||||
_("Circle deleted"),
|
||||
"success",
|
||||
)
|
||||
return redirect(url_for(".circles"))
|
||||
|
||||
return await render_template(
|
||||
"admin_delete_circle.html",
|
||||
target_circle=circle,
|
||||
form=form,
|
||||
)
|
||||
|
||||
|
||||
class AddCircleChatForm(BaseForm):
|
||||
name = wtforms.StringField(
|
||||
_l("Group chat name"),
|
||||
validators=[wtforms.validators.InputRequired()],
|
||||
)
|
||||
|
||||
action_save = wtforms.SubmitField(
|
||||
_l("Create group chat")
|
||||
)
|
||||
|
||||
|
||||
@bp.route("/circle/<id_>/add_chat", methods=["GET", "POST"])
|
||||
@client.require_admin_session()
|
||||
async def edit_circle_add_chat(
|
||||
id_: str
|
||||
) -> typing.Union[str, werkzeug.Response]:
|
||||
async with client.authenticated_session() as session:
|
||||
try:
|
||||
circle = await client.get_group_by_id(
|
||||
id_,
|
||||
session=session,
|
||||
)
|
||||
except aiohttp.ClientResponseError as exc:
|
||||
if exc.status == 404:
|
||||
await flash(
|
||||
_("No such circle exists"),
|
||||
"alert",
|
||||
)
|
||||
return redirect(url_for(".circles"))
|
||||
raise
|
||||
|
||||
form = AddCircleChatForm()
|
||||
|
||||
if form.validate_on_submit():
|
||||
if form.action_save.data:
|
||||
await client.add_group_chat(id_, form.name.data)
|
||||
await flash(
|
||||
_("New group chat added to circle"),
|
||||
"success",
|
||||
)
|
||||
|
||||
return redirect(url_for(".edit_circle", id_=id_))
|
||||
|
||||
return await render_template(
|
||||
"admin_create_circle_chat.html",
|
||||
target_circle=circle,
|
||||
group_chat_form=form,
|
||||
)
|
||||
|
||||
|
||||
_CPU_EPOCH = time.process_time()
|
||||
_MONOTONIC_EPOCH = time.monotonic()
|
||||
|
||||
|
||||
@@ -4,15 +4,19 @@ import math
|
||||
import secrets
|
||||
import typing
|
||||
|
||||
from datetime import datetime, timedelta, timezone
|
||||
|
||||
import quart.flask_patch # noqa:F401
|
||||
from quart import (
|
||||
current_app,
|
||||
request,
|
||||
g,
|
||||
)
|
||||
|
||||
import flask_babel
|
||||
import flask_wtf
|
||||
from flask_babel import _
|
||||
from flask_babel import lazy_gettext as _l
|
||||
import flask_babel as _
|
||||
|
||||
from . import prosodyclient
|
||||
|
||||
@@ -34,6 +38,7 @@ BYTE_UNIT_SCALE_MAP = [
|
||||
|
||||
@babel.localeselector # type:ignore
|
||||
def selected_locale() -> str:
|
||||
g.language_header_accessed = True
|
||||
selected = request.accept_languages.best_match(
|
||||
current_app.config['LANGUAGES']
|
||||
) or current_app.config['LANGUAGES'][0]
|
||||
@@ -68,6 +73,49 @@ def format_bytes(n: float) -> str:
|
||||
return "{} {}".format(n, unit)
|
||||
|
||||
|
||||
def format_last_activity(timestamp: typing.Optional[int]) -> str:
|
||||
if timestamp is None:
|
||||
return _l("Never")
|
||||
|
||||
last_active = datetime.fromtimestamp(timestamp, tz=timezone.utc)
|
||||
# TODO: This 'now' should use the user's local time zone, but we
|
||||
# don't have that information. Thus 'today'/'yesterday' may be
|
||||
# slightly inaccurate, but compared to alternative solutions it
|
||||
# should hopefully be "good enough".
|
||||
now = datetime.now(tz=timezone.utc)
|
||||
time_ago = now - last_active
|
||||
|
||||
yesterday = now - timedelta(days=1)
|
||||
|
||||
if (
|
||||
last_active.year == now.year
|
||||
and last_active.month == now.month
|
||||
and last_active.day == now.day
|
||||
):
|
||||
return _l("Today")
|
||||
elif (
|
||||
last_active.year == yesterday.year
|
||||
and last_active.month == yesterday.month
|
||||
and last_active.day == yesterday.day
|
||||
):
|
||||
return _l("Yesterday")
|
||||
|
||||
return _.gettext(
|
||||
"%(time)s ago",
|
||||
time=flask_babel.format_timedelta(time_ago, granularity="day"),
|
||||
)
|
||||
|
||||
|
||||
def template_now() -> typing.Dict[str, typing.Any]:
|
||||
return dict(now=lambda: datetime.now(timezone.utc))
|
||||
|
||||
|
||||
def add_vary_language_header(resp: quart.Response) -> quart.Response:
|
||||
if getattr(g, "language_header_accessed", False):
|
||||
resp.vary.add("Accept-Language")
|
||||
return resp
|
||||
|
||||
|
||||
def init_templating(app: quart.Quart) -> None:
|
||||
app.template_filter("repr")(repr)
|
||||
app.template_filter("format_datetime")(flask_babel.format_datetime)
|
||||
@@ -78,6 +126,9 @@ def init_templating(app: quart.Quart) -> None:
|
||||
app.template_filter("format_bytes")(format_bytes)
|
||||
app.template_filter("flatten")(flatten)
|
||||
app.template_filter("circle_name")(circle_name)
|
||||
app.template_filter("format_last_activity")(format_last_activity)
|
||||
app.context_processor(template_now)
|
||||
app.after_request(add_vary_language_header)
|
||||
|
||||
|
||||
def generate_error_id() -> str:
|
||||
|
||||
@@ -104,7 +104,7 @@ async def view(id_: str) -> typing.Union[quart.Response,
|
||||
return quart.Response(
|
||||
body,
|
||||
headers={
|
||||
"Link": "<{}> rel=\"alternate\"".format(invite.xmpp_uri),
|
||||
"Link": "<{}>; rel=\"alternate\"".format(invite.xmpp_uri),
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ bp = quart.Blueprint("main", __name__)
|
||||
|
||||
|
||||
class LoginForm(BaseForm):
|
||||
address = wtforms.TextField(
|
||||
address = wtforms.StringField(
|
||||
_l("Address"),
|
||||
validators=[wtforms.validators.InputRequired()],
|
||||
)
|
||||
@@ -93,10 +93,16 @@ async def login() -> typing.Union[str, werkzeug.Response]:
|
||||
@bp.route("/meta/about.html")
|
||||
async def about() -> str:
|
||||
version = None
|
||||
core_versions = {}
|
||||
extra_versions = {}
|
||||
|
||||
if current_app.debug or client.is_admin_session:
|
||||
version = _version.version
|
||||
try:
|
||||
core_versions["Prosody"] = await client.get_server_version()
|
||||
except werkzeug.exceptions.Unauthorized:
|
||||
core_versions["Prosody"] = "unknown"
|
||||
|
||||
if current_app.debug:
|
||||
extra_versions["aiohttp"] = aiohttp.__version__
|
||||
extra_versions["babel"] = babel.__version__
|
||||
extra_versions["wtforms"] = wtforms.__version__
|
||||
@@ -110,6 +116,7 @@ async def about() -> str:
|
||||
"about.html",
|
||||
version=version,
|
||||
extra_versions=extra_versions,
|
||||
core_versions=core_versions,
|
||||
)
|
||||
|
||||
|
||||
@@ -166,6 +173,42 @@ async def avatar(from_: str, code: str) -> quart.Response:
|
||||
return response
|
||||
|
||||
|
||||
@bp.route("/terms")
|
||||
async def terms() -> Response:
|
||||
if not current_app.config["TOS_URI"]:
|
||||
return Response("", 404)
|
||||
|
||||
return Response("", status=303, headers={
|
||||
"Location": current_app.config["TOS_URI"],
|
||||
})
|
||||
|
||||
|
||||
@bp.route("/privacy")
|
||||
async def privacy() -> Response:
|
||||
if not current_app.config["PRIVACY_URI"]:
|
||||
return Response("", 404)
|
||||
|
||||
return Response("", status=303, headers={
|
||||
"Location": current_app.config["PRIVACY_URI"],
|
||||
})
|
||||
|
||||
|
||||
# This is linked from the iOS app and about page
|
||||
@bp.route("/policies/")
|
||||
async def policies() -> str:
|
||||
return await render_template(
|
||||
"policies.html",
|
||||
)
|
||||
|
||||
|
||||
@bp.route("/.well-known/security.txt")
|
||||
async def securitytxt() -> Response:
|
||||
return Response(
|
||||
await render_template("security.txt"),
|
||||
mimetype="text/plain;charset=UTF-8",
|
||||
)
|
||||
|
||||
|
||||
@bp.route("/_health")
|
||||
async def health() -> Response:
|
||||
return Response("STATUS OK", content_type="text/plain")
|
||||
|
||||
@@ -9,26 +9,28 @@ import types
|
||||
import typing
|
||||
import typing_extensions
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timezone
|
||||
|
||||
import aiohttp
|
||||
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
from quart import (
|
||||
current_app, _app_ctx_stack, session as http_session, abort, redirect,
|
||||
current_app, session as http_session, abort, redirect,
|
||||
url_for,
|
||||
)
|
||||
import quart
|
||||
|
||||
from flask import g as _app_ctx_stack
|
||||
|
||||
import werkzeug.exceptions
|
||||
|
||||
from . import xmpputil
|
||||
from .xmpputil import split_jid
|
||||
|
||||
|
||||
SCOPE_DEFAULT = "prosody:scope:default"
|
||||
SCOPE_ADMIN = "prosody:scope:admin"
|
||||
SCOPE_DEFAULT = "prosody:registered"
|
||||
SCOPE_ADMIN = "prosody:admin"
|
||||
|
||||
|
||||
T = typing.TypeVar("T")
|
||||
@@ -40,6 +42,52 @@ class TokenInfo:
|
||||
scopes: typing.Collection[str]
|
||||
|
||||
|
||||
@dataclasses.dataclass(frozen=True)
|
||||
class UserDeletionRequestInfo:
|
||||
deleted_at: datetime
|
||||
pending_until: datetime
|
||||
|
||||
@classmethod
|
||||
def from_api_response(
|
||||
cls,
|
||||
data: typing.Optional[typing.Mapping[str, typing.Any]],
|
||||
) -> typing.Optional["UserDeletionRequestInfo"]:
|
||||
if data is None:
|
||||
return None
|
||||
return cls(
|
||||
deleted_at=datetime.fromtimestamp(
|
||||
data["deleted_at"],
|
||||
tz=timezone.utc
|
||||
),
|
||||
pending_until=datetime.fromtimestamp(
|
||||
data["pending_until"],
|
||||
tz=timezone.utc
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@dataclasses.dataclass(frozen=True)
|
||||
class AvatarMetadata:
|
||||
bytes: int
|
||||
hash: str
|
||||
type: str
|
||||
width: typing.Optional[int]
|
||||
height: typing.Optional[int]
|
||||
|
||||
@classmethod
|
||||
def from_api_response(
|
||||
cls,
|
||||
data: typing.Mapping[str, typing.Any],
|
||||
) -> "AvatarMetadata":
|
||||
return cls(
|
||||
hash=data["hash"],
|
||||
bytes=data["bytes"],
|
||||
type=data["type"],
|
||||
width=data.get("width") or None,
|
||||
height=data.get("height") or None,
|
||||
)
|
||||
|
||||
|
||||
@dataclasses.dataclass(frozen=True)
|
||||
class AdminUserInfo:
|
||||
localpart: str
|
||||
@@ -47,6 +95,10 @@ class AdminUserInfo:
|
||||
email: typing.Optional[str]
|
||||
phone: typing.Optional[str]
|
||||
roles: typing.Optional[typing.List[str]]
|
||||
enabled: bool
|
||||
last_active: typing.Optional[int]
|
||||
deletion_request: typing.Optional[UserDeletionRequestInfo]
|
||||
avatar_info: typing.List[AvatarMetadata]
|
||||
|
||||
@property
|
||||
def has_admin_role(self) -> bool:
|
||||
@@ -61,12 +113,27 @@ class AdminUserInfo:
|
||||
cls,
|
||||
data: typing.Mapping[str, typing.Any],
|
||||
) -> "AdminUserInfo":
|
||||
try:
|
||||
roles: typing.Optional[typing.List[str]] = [data["role"]]
|
||||
assert roles is not None # make mypy happy
|
||||
roles.extend(data.get("secondary_roles", []))
|
||||
except KeyError:
|
||||
roles = data.get("roles")
|
||||
return cls(
|
||||
localpart=data["username"],
|
||||
display_name=data.get("display_name") or None,
|
||||
email=data.get("email") or None,
|
||||
phone=data.get("phone") or None,
|
||||
roles=data.get("roles"),
|
||||
roles=roles,
|
||||
enabled=data.get("enabled", True),
|
||||
last_active=data.get("last_active") or None,
|
||||
deletion_request=UserDeletionRequestInfo.from_api_response(
|
||||
data.get("deletion_request")
|
||||
),
|
||||
avatar_info=[
|
||||
AvatarMetadata.from_api_response(avatar_info)
|
||||
for avatar_info in data.get("avatar_info", [])
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
@@ -109,12 +176,30 @@ class AdminInviteInfo:
|
||||
)
|
||||
|
||||
|
||||
@dataclasses.dataclass(frozen=True)
|
||||
class AdminGroupChatInfo:
|
||||
id_: str
|
||||
jid: str
|
||||
name: str
|
||||
|
||||
@classmethod
|
||||
def from_api_response(
|
||||
cls,
|
||||
data: typing.Mapping[str, typing.Any],
|
||||
) -> "AdminGroupChatInfo":
|
||||
return cls(
|
||||
id_=data["id"],
|
||||
jid=data["jid"],
|
||||
name=data["name"],
|
||||
)
|
||||
|
||||
|
||||
@dataclasses.dataclass(frozen=True)
|
||||
class AdminGroupInfo:
|
||||
id_: str
|
||||
name: str
|
||||
muc_jid: typing.Optional[str]
|
||||
members: typing.Collection[str]
|
||||
chats: typing.Collection[AdminGroupChatInfo]
|
||||
|
||||
@classmethod
|
||||
def from_api_response(
|
||||
@@ -124,8 +209,11 @@ class AdminGroupInfo:
|
||||
return cls(
|
||||
id_=data["id"],
|
||||
name=data["name"],
|
||||
muc_jid=data.get("muc_jid") or None,
|
||||
members=data.get("members", []),
|
||||
chats=[
|
||||
AdminGroupChatInfo.from_api_response(x)
|
||||
for x in data.get("chats", [])
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
@@ -160,7 +248,7 @@ class HTTPSessionManager:
|
||||
})
|
||||
|
||||
async def teardown(self, exc: typing.Optional[BaseException]) -> None:
|
||||
app_ctx = _app_ctx_stack.top
|
||||
app_ctx = _app_ctx_stack
|
||||
try:
|
||||
session = getattr(app_ctx, self._app_context_attribute)
|
||||
except AttributeError:
|
||||
@@ -177,7 +265,7 @@ class HTTPSessionManager:
|
||||
await session.__aexit__(exc_type, exc, traceback)
|
||||
|
||||
async def __aenter__(self) -> aiohttp.ClientSession:
|
||||
app_ctx = _app_ctx_stack.top
|
||||
app_ctx = _app_ctx_stack
|
||||
try:
|
||||
return getattr(app_ctx, self._app_context_attribute)
|
||||
except AttributeError:
|
||||
@@ -879,7 +967,7 @@ class ProsodyClient:
|
||||
localpart: str,
|
||||
*,
|
||||
display_name: typing.Optional[str],
|
||||
roles: typing.Optional[typing.Collection[str]],
|
||||
role: typing.Optional[str],
|
||||
session: aiohttp.ClientSession,
|
||||
) -> None:
|
||||
payload: typing.Dict[str, typing.Any] = {
|
||||
@@ -887,8 +975,8 @@ class ProsodyClient:
|
||||
}
|
||||
if display_name is not None:
|
||||
payload["display_name"] = display_name
|
||||
if roles is not None:
|
||||
payload["roles"] = list(roles)
|
||||
if role is not None:
|
||||
payload["role"] = role
|
||||
|
||||
async with session.put(
|
||||
self._admin_v1_endpoint("/users/{}".format(localpart)),
|
||||
@@ -896,6 +984,36 @@ class ProsodyClient:
|
||||
) as resp:
|
||||
self._raise_error_from_response(resp)
|
||||
|
||||
@autosession
|
||||
async def enable_user_account(
|
||||
self,
|
||||
localpart: str,
|
||||
*,
|
||||
session: aiohttp.ClientSession,
|
||||
) -> None:
|
||||
async with session.patch(
|
||||
self._admin_v1_endpoint("/users/{}".format(localpart)),
|
||||
json={
|
||||
"enabled": True,
|
||||
},
|
||||
) as resp:
|
||||
self._raise_error_from_response(resp)
|
||||
|
||||
@autosession
|
||||
async def disable_user_account(
|
||||
self,
|
||||
localpart: str,
|
||||
*,
|
||||
session: aiohttp.ClientSession,
|
||||
) -> None:
|
||||
async with session.patch(
|
||||
self._admin_v1_endpoint("/users/{}".format(localpart)),
|
||||
json={
|
||||
"enabled": False,
|
||||
},
|
||||
) as resp:
|
||||
self._raise_error_from_response(resp)
|
||||
|
||||
@autosession
|
||||
async def get_user_debug_info(
|
||||
self,
|
||||
@@ -1024,7 +1142,7 @@ class ProsodyClient:
|
||||
self,
|
||||
name: str,
|
||||
*,
|
||||
create_muc: bool = True,
|
||||
create_muc: bool = False,
|
||||
session: aiohttp.ClientSession,
|
||||
) -> AdminGroupInfo:
|
||||
payload = {
|
||||
@@ -1099,6 +1217,27 @@ class ProsodyClient:
|
||||
) as resp:
|
||||
self._raise_error_from_response(resp)
|
||||
|
||||
@autosession
|
||||
async def add_group_chat(
|
||||
self,
|
||||
id_: str,
|
||||
name: str,
|
||||
*,
|
||||
session: aiohttp.ClientSession,
|
||||
) -> None:
|
||||
|
||||
payload: typing.Dict[str, typing.Any] = {
|
||||
"name": name,
|
||||
}
|
||||
|
||||
async with session.post(
|
||||
self._admin_v1_endpoint(
|
||||
"/groups/{}/chats".format(id_)
|
||||
),
|
||||
json=payload,
|
||||
) as resp:
|
||||
self._raise_error_from_response(resp)
|
||||
|
||||
@autosession
|
||||
async def remove_group_member(
|
||||
self,
|
||||
@@ -1114,6 +1253,21 @@ class ProsodyClient:
|
||||
) as resp:
|
||||
self._raise_error_from_response(resp)
|
||||
|
||||
@autosession
|
||||
async def remove_group_chat(
|
||||
self,
|
||||
group_id: str,
|
||||
chat_id: str,
|
||||
*,
|
||||
session: aiohttp.ClientSession,
|
||||
) -> None:
|
||||
async with session.delete(
|
||||
self._admin_v1_endpoint(
|
||||
"/groups/{}/chats/{}".format(group_id, chat_id)
|
||||
),
|
||||
) as resp:
|
||||
self._raise_error_from_response(resp)
|
||||
|
||||
@autosession
|
||||
async def delete_group(
|
||||
self,
|
||||
@@ -1154,7 +1308,6 @@ class ProsodyClient:
|
||||
self._raise_error_from_response(resp)
|
||||
return True
|
||||
|
||||
@autosession
|
||||
async def revoke_token(
|
||||
self,
|
||||
*,
|
||||
@@ -1168,7 +1321,8 @@ class ProsodyClient:
|
||||
|
||||
async def logout(self) -> None:
|
||||
try:
|
||||
await self.revoke_token()
|
||||
async with self._plain_session as session:
|
||||
await self.revoke_token(session=session)
|
||||
except aiohttp.ClientError:
|
||||
self.logger.warn("failed to revoke token!",
|
||||
exc_info=True)
|
||||
|
||||
@@ -275,22 +275,22 @@ div.form.layout-expanded {
|
||||
}
|
||||
|
||||
@each $type in $text-entry-inputs {
|
||||
input[type=$type] {
|
||||
input[type=#{$type}] {
|
||||
width: 100%;
|
||||
border: none;
|
||||
border-bottom: $w-s4 solid $primary-500;
|
||||
margin-bottom: -$w-s4;
|
||||
}
|
||||
|
||||
input[type=$type].has-error {
|
||||
input[type=#{$type}].has-error {
|
||||
border-right: $w-s4 solid $alert-500;
|
||||
}
|
||||
|
||||
input[type=$type]:hover {
|
||||
input[type=#{$type}]:hover {
|
||||
border-bottom-color: $primary-700;
|
||||
}
|
||||
|
||||
input[type=$type]:focus {
|
||||
input[type=#{$type}]:focus {
|
||||
border-bottom-color: $primary-800;
|
||||
}
|
||||
}
|
||||
@@ -646,69 +646,6 @@ input[type="submit"], button, .button {
|
||||
|
||||
|
||||
|
||||
/* button, .button {
|
||||
margin: 0 $w-s2;
|
||||
}
|
||||
|
||||
button.lv-primary, .button.lv-primary {
|
||||
background-color: $gray-500;
|
||||
color: $gray-900;
|
||||
border-radius: $w-s4;
|
||||
border: $w-s4 solid $gray-400;
|
||||
|
||||
@each $type, $values in $colours {
|
||||
&.c-#{$type} {
|
||||
border-color: nth($values, 4);
|
||||
background-color: nth($values, 5);
|
||||
color: nth($values, 9);
|
||||
}
|
||||
|
||||
&.c-#{$type}:hover {
|
||||
background-color: nth($values, 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
button.lv-secondary, .button.lv-secondary {
|
||||
background-color: $gray-700;
|
||||
color: $gray-100;
|
||||
border-radius: $w-s4;
|
||||
|
||||
@each $type, $values in $colours {
|
||||
&.c-#{$type} {
|
||||
background-color: nth($values, 7);
|
||||
color: nth($values, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
button.lv-tertiary, .button.lv-tertiary {
|
||||
background-color: inherit;
|
||||
color: $gray-300;
|
||||
border-radius: $w-s4;
|
||||
text-decoration: underline;
|
||||
|
||||
@each $type, $values in $colours {
|
||||
&.c-#{$type} {
|
||||
color: nth($values, 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
button.lv-secondary.c-#{$type}, .button.lv-secondary.c-#{$type} {
|
||||
background-color: nth($values, 7);
|
||||
color: nth($values, 1);
|
||||
}
|
||||
|
||||
button.lv-tertiary.c-#{$type}, .button.lv-tertiary.c-#{$type} {
|
||||
color: nth($values, 3);
|
||||
text-decoration: underline;
|
||||
background-color: transparent;
|
||||
}
|
||||
}*/
|
||||
|
||||
/* boxes */
|
||||
|
||||
.box {
|
||||
@@ -771,8 +708,7 @@ button.lv-tertiary, .button.lv-tertiary {
|
||||
height: 1.5em;
|
||||
vertical-align: middle;
|
||||
background-size: cover;
|
||||
box-shadow: inset 0px 0px 0px 2px rgba(0, 0, 0, 0.2);
|
||||
border-radius: $w-s4;
|
||||
border-radius: 10%;
|
||||
|
||||
margin: 0 0.25em;
|
||||
|
||||
@@ -1121,7 +1057,7 @@ pre.guru-meditation {
|
||||
}
|
||||
|
||||
@each $type in $text-entry-inputs {
|
||||
input[type=$type] {
|
||||
input[type=#{$type}] {
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
@@ -1131,6 +1067,10 @@ pre.guru-meditation {
|
||||
}
|
||||
}
|
||||
|
||||
label, legend {
|
||||
color: $gray-800 !important;
|
||||
}
|
||||
|
||||
.box {
|
||||
background-color: black;
|
||||
border-color: $gray-800;
|
||||
@@ -1265,6 +1205,13 @@ pre.guru-meditation {
|
||||
p.form-desc.weak, p.field-desc.weak {
|
||||
color: $gray-700;
|
||||
}
|
||||
|
||||
.user-badge-icon {
|
||||
color: $gray-900 !important;
|
||||
background-color: $gray-100 !important;
|
||||
border-color: $gray-300 !important;
|
||||
box-shadow: black 0 0 2px !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* tooltip magic */
|
||||
@@ -1315,3 +1262,46 @@ pre.guru-meditation {
|
||||
.with-tooltip:hover:before, .with-tooltip:hover:after {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.username-with-avatar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.avatar-container {
|
||||
position: relative;
|
||||
|
||||
.avatar {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.user-badge-icon {
|
||||
position: absolute;
|
||||
bottom: -10px;
|
||||
right: 0px;
|
||||
background: white;
|
||||
border-radius: 50%;
|
||||
width: 1.2em;
|
||||
height: 1.2em;
|
||||
border-color: $gray-500;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-shadow: $gray-500 0px 0px 2px;
|
||||
|
||||
line-height: 1;
|
||||
.icon {
|
||||
/* vertical-align: text-bottom; */
|
||||
padding: 0.1em;
|
||||
}
|
||||
}
|
||||
|
||||
.user-info-container {
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -80,60 +80,6 @@ img.fdroid {
|
||||
height: $w-l3;
|
||||
}
|
||||
|
||||
.tabbox {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin: $w-l1 0;
|
||||
|
||||
> nav.tabs {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
||||
> a {
|
||||
display: inline-block;
|
||||
padding: $w-s2;
|
||||
border-top-left-radius: $w-s4;
|
||||
border-top-right-radius: $w-s4;
|
||||
|
||||
&, &:visited {
|
||||
color: inherit;
|
||||
text-decoration: underline;
|
||||
text-decoration-color: $accent-500;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: $accent-900;
|
||||
border-color: $accent-800;
|
||||
color: black;
|
||||
}
|
||||
|
||||
&.active {
|
||||
text-decoration: none;
|
||||
background: linear-gradient(0deg, $accent-600, $accent-700);
|
||||
color: $accent-200;
|
||||
|
||||
&:hover, &:focus {
|
||||
background: linear-gradient(0deg, $accent-700, $accent-800);
|
||||
}
|
||||
|
||||
&:active {
|
||||
background: $accent-600;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
> .tab-pane {
|
||||
display: none;
|
||||
padding: 0 $w-0;
|
||||
background: $accent-900;
|
||||
|
||||
&.active {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.qr {
|
||||
margin: $w-l1 0;
|
||||
display: flex;
|
||||
|
||||
@@ -42,6 +42,16 @@ 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: action/lock_open/materialiconsround/24px.svg -->
|
||||
<symbol id="icon-lock_open" viewBox="0 0 24 24">
|
||||
<path d="M0 0h24v24H0V0z" fill="none" />
|
||||
<path d="M12 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6-5h-1V6c0-2.76-2.24-5-5-5-2.28 0-4.27 1.54-4.84 3.75-.14.54.18 1.08.72 1.22.53.14 1.08-.18 1.22-.72C9.44 3.93 10.63 3 12 3c1.65 0 3 1.35 3 3v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 11c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-8c0-.55.45-1 1-1h10c.55 0 1 .45 1 1v8z" />
|
||||
</symbol>
|
||||
<!-- from: action/restore_from_trash/materialiconsround/24px.svg -->
|
||||
<symbol id="icon-restore_from_trash" viewBox="0 0 24 24">
|
||||
<path d="M0 0h24v24H0V0z" fill="none" />
|
||||
<path d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v10zm5.65-8.65c.2-.2.51-.2.71 0L16 14h-2v4h-4v-4H8l3.65-3.65zM15.5 4l-.71-.71c-.18-.18-.44-.29-.7-.29H9.91c-.26 0-.52.11-.7.29L8.5 4H6c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1h-2.5z" />
|
||||
</symbol>
|
||||
<!-- from: communication/import_export/materialiconsround/24px.svg -->
|
||||
<symbol id="icon-import_export" viewBox="0 0 24 24">
|
||||
<path d="M0 0h24v24H0V0z" fill="none" />
|
||||
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 19 KiB |
@@ -6,24 +6,32 @@
|
||||
{% block body %}
|
||||
<main>
|
||||
<div class="box el-2">
|
||||
<h1>{% trans %}About Snikket{% endtrans %}</h1>
|
||||
<p>{% trans snikket_url="https://snikket.org" %}To learn more about Snikket, visit the <a href="{{ snikket_url}}">Snikket website</a>.{% endtrans %}</p>
|
||||
<h2>{% trans %}About this Service{% endtrans %}</h2>
|
||||
<p>{% trans site_name=config["SITE_NAME"] %}This is the Snikket service <em>{{ site_name }}</em>.{% endtrans %}</p>
|
||||
<p>{% trans site_name=config["SITE_NAME"] %}This is the Snikket service <em>{{ site_name }}</em>, running open-source software from the Snikket project.{% endtrans %}</p>
|
||||
<p>{% trans snikket_url="https://snikket.org" %}To learn more about Snikket, visit the <a href="{{ snikket_url}}">Snikket website</a>.{% endtrans %}</p>
|
||||
|
||||
<p><a href="/policies/">{% trans %}View service policies{% endtrans %}</a>
|
||||
|
||||
<h3>{% trans %}Licenses{% endtrans %}</h3>
|
||||
<p>{% trans agpl_url="https://www.gnu.org/licenses/agpl.html" %}The web portal software is licensed under the terms of the <a href="{{ agpl_url }}">Affero GNU General Public License, version 3.0 or later</a>. The full terms of the license can be reviewed using the aforementioned link.{% endtrans %}</p>
|
||||
<p>{% trans source_url="https://github.com/snikket-im/snikket-web-portal/" %}The source code of the web portal can be downloaded and viewed in <a href="{{ source_url }}">its GitHub repository</a>.{% endtrans %}</p>
|
||||
<p>{% trans source_url="https://material.io/resources/icons/", apache20_url="https://www.apache.org/licenses/LICENSE-2.0.txt" %}The icons used in the web portal are <a href="{{ source_url }}">Google’s Material Icons</a>, made available by Google under the terms of the <a href="{{ apache20_url }}">Apache 2.0 License</a>.{% endtrans %}</p>
|
||||
|
||||
<h3>{% trans %}Trademarks{% endtrans %}</h3>
|
||||
<p>{% trans trademarks_url="https://snikket.org/about/trademarks/" %}“Snikket” and the parrot logo are trademarks of Snikket Community Interest Company. For more information about the trademarks, visit the <a href="{{ trademarks_url }}">Snikket Trademarks information page</a>.{% endtrans %}
|
||||
|
||||
<h3>{% trans %}Software Versions{% endtrans %}</h3>
|
||||
<pre>Snikket Server
|
||||
Domain: {{ config["SNIKKET_DOMAIN"] }}
|
||||
Snikket Web Portal{% if version %} ({{ version }}){% endif %}
|
||||
<pre>Domain: {{ config["SNIKKET_DOMAIN"] }}
|
||||
Web Portal{% if version %} ({{ version }}){% endif %}
|
||||
{%- if core_versions -%}
|
||||
{% for name, version in core_versions.items() %}
|
||||
{{ name }} ({{ version }}){% endfor %}
|
||||
{%- endif -%}
|
||||
{%- if extra_versions -%}
|
||||
{% for name, version in extra_versions.items() %}
|
||||
{{ name }} ({{ version }}){% endfor %}
|
||||
{%- endif -%}</pre>
|
||||
|
||||
<p>
|
||||
{%- call standard_button("back", url_for("index"), class="primary") -%}
|
||||
{% trans %}Back to the main page{% endtrans %}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
{% block content %}
|
||||
<h1>{% trans %}Manage circles{% endtrans %}</h1>
|
||||
<p>{% trans %}<em>Circles</em> aim to help people who are in the same social circle find each other on your service.{% endtrans %}</p>
|
||||
<p>{% trans %}Users who are in the same circle will see each other in their contact list. In addition, each circle has a group chat where the circle members are included.{% endtrans %}</p>
|
||||
<p>{% trans %}Users who are in the same circle will see each other in their contact list. In addition, each circle may have group chats where the circle members are included.{% endtrans %}</p>
|
||||
{%- if circles -%}
|
||||
<form method="POST" action="{{ url_for(".create_invite") }}">
|
||||
{{- invite_form.csrf_token -}}
|
||||
|
||||
5
snikket_web/templates/admin_create_circle_chat.html
Normal file
5
snikket_web/templates/admin_create_circle_chat.html
Normal file
@@ -0,0 +1,5 @@
|
||||
{% extends "admin_app.html" %}
|
||||
{% block content %}
|
||||
<h1>{{ target_circle.name }}</h1>
|
||||
{%- include "admin_create_circle_group_chat_form.html" -%}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,15 @@
|
||||
{% from "library.j2" import form_button, render_errors %}
|
||||
<form method="POST" action="{{ url_for(".edit_circle_add_chat", id_=target_circle.id_) }}">
|
||||
{{- group_chat_form.csrf_token -}}
|
||||
<div class="form layout-expanded">
|
||||
<h2 class="form-title">{% trans %}Create new circle group chat{% endtrans %}</h2>
|
||||
<p class="form-descr weak">{% trans %}Add a chat to your circle so its members can hold group discussions.{% endtrans %}</p>
|
||||
<p class="form-descr weak"><strong>{% trans %}Tip:{% endtrans %}</strong> {% trans %}This is only for creating group chats that automatically include <em>all</em> members of the circle. If you want a normal group chat, create it in the Snikket app instead.{% endtrans %}</p>
|
||||
<div class="f-ebox">
|
||||
{{ group_chat_form.name.label }}
|
||||
{{ group_chat_form.name }}
|
||||
</div>
|
||||
<div class="f-bbox">
|
||||
{%- call form_button("add", group_chat_form.action_save, class="primary") %}{% endcall -%}
|
||||
</div>
|
||||
</div></form>
|
||||
21
snikket_web/templates/admin_delete_circle.html
Normal file
21
snikket_web/templates/admin_delete_circle.html
Normal file
@@ -0,0 +1,21 @@
|
||||
{% extends "admin_app.html" %}
|
||||
{% from "library.j2" import box, form_button, standard_button %}
|
||||
{% block content %}
|
||||
<h1>{% trans circle_name=target_circle.name %}Delete circle {{ circle_name }}{% endtrans %}</h1>
|
||||
<div class="form layout-expanded"><form method="POST">
|
||||
<h2 class="form-title">{% trans %}Delete circle{% endtrans %}</h2>
|
||||
{{ form.csrf_token }}
|
||||
<p class="form-descr">{% trans %}Are you sure you want to delete the following circle?{% endtrans %}</p>
|
||||
<dl>
|
||||
<dt>{% trans %}Name{% endtrans %}</dt>
|
||||
<dd>{{ target_circle.name }}</dd>
|
||||
</dl>
|
||||
{% call box("alert", _("Danger")) %}
|
||||
<p>{% trans %}The circle and the corresponding chat will be deleted, permanently and immediately upon pushing the below button. <strong>There is no way back!</strong>{% endtrans %}</p>
|
||||
{% endcall %}
|
||||
<div class="f-bbox">
|
||||
{%- call standard_button("back", url_for(".edit_circle", id_=target_circle.id_), class="tertiary") %}{% trans %}Back{% endtrans %}{% endcall -%}
|
||||
{%- call form_button("delete", form.action_delete, class="primary danger") %}{% endcall -%}
|
||||
</div>
|
||||
</form></div>
|
||||
{% endblock %}
|
||||
@@ -13,13 +13,6 @@
|
||||
<div class="box hint form layout-expanded">
|
||||
<header>{% trans %}This is your main circle{% endtrans %}</header>
|
||||
<p>{% trans %}This circle is managed automatically and cannot be removed or renamed.{% endtrans %}</p>
|
||||
{%- if target_circle.muc_jid -%}
|
||||
<div><label for="circle-muc-jid">{% trans %}Group chat address{% endtrans %}</label></div>
|
||||
<div><input type="text" readonly="readonly" id="circle-muc-jid" value="{{ target_circle.muc_jid }}"></div>
|
||||
{%- call clipboard_button(target_circle.muc_jid, show_label=True) -%}
|
||||
{%- trans -%}Copy address{%- endtrans -%}
|
||||
{%- endcall -%}
|
||||
{%- endif -%}
|
||||
</div>
|
||||
{%- else -%}
|
||||
<div class="form layout-expanded">
|
||||
@@ -28,17 +21,6 @@
|
||||
{{ form.name.label }}
|
||||
{{ form.name }}
|
||||
</div>
|
||||
<div class="f-ebox">
|
||||
{%- if target_circle.muc_jid -%}
|
||||
<label for="circle-muc-jid">{% trans %}Group chat address{% endtrans %}</label>
|
||||
<input type="text" readonly="readonly" id="circle-muc-jid" value="{{ target_circle.muc_jid }}">
|
||||
{%- call clipboard_button(target_circle.muc_jid, show_label=True) -%}
|
||||
{%- trans -%}Copy address{%- endtrans -%}
|
||||
{%- endcall -%}
|
||||
{%- else -%}
|
||||
<p>{% trans %}This circle has no group chat associated.{% endtrans %}<p>
|
||||
{%- endif -%}
|
||||
</div>
|
||||
<div class="f-bbox">
|
||||
{%- call standard_button("back", url_for(".circles"), class="tertiary") -%}
|
||||
{% trans %}Return to circle list{% endtrans %}
|
||||
@@ -48,11 +30,43 @@
|
||||
<h3 class="form-title">{% trans %}Delete circle{% endtrans %}</h3>
|
||||
<p class="form-desc">{% trans %}Deleting a circle does not delete any users in the circle.{% endtrans %}</p>
|
||||
<div class="f-bbox">
|
||||
{%- call form_button("delete", form.action_delete, class="secondary danger") %}{% endcall -%}
|
||||
{%- call standard_button("delete", url_for(".delete_circle", id_=target_circle.id_), class="secondary danger") %}{% trans %}Delete circle{% endtrans %}{% endcall -%}
|
||||
</div>
|
||||
</div>
|
||||
{%- endif -%}
|
||||
|
||||
<h2 id="chats">{% trans %}Group chats{% endtrans %}</h2>
|
||||
<p>{% trans %}These group chats will be available to all members of the circle.{% endtrans %}</p>
|
||||
|
||||
{%- if circle_chats -%}
|
||||
<div class="el-2 elevated"><table>
|
||||
<thead>
|
||||
<th>{% trans %}Name{% endtrans %}</th>
|
||||
<th>{% trans %}Actions{% endtrans %}</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{%- for chat in circle_chats -%}
|
||||
<tr>
|
||||
<td class="collapsible">{% call value_or_hint(chat.name) %}{% endcall %}</td>
|
||||
<td class="nowrap">
|
||||
{%- call custom_form_button("delete", form.action_remove_group_chat.name, chat.id_, class="primary danger", slim=True) -%}
|
||||
{% trans name=chat.name %}Delete group chat '{{ name }}'{% endtrans %}
|
||||
{%- endcall -%}
|
||||
</td>
|
||||
</tr>
|
||||
{%- endfor -%}
|
||||
</tbody>
|
||||
</table></div>
|
||||
{%- else -%}
|
||||
<p>{% trans %}This circle currently has no group chats.{% endtrans %}</p>
|
||||
{%- endif -%}
|
||||
{%- call standard_button("add", url_for(".edit_circle_add_chat", id_=target_circle.id_), class="secondary") -%}
|
||||
{% trans %}Add group chat{% endtrans %}
|
||||
{%- endcall -%}
|
||||
|
||||
<h2 id="members">{% trans %}Circle members{% endtrans %}</h2>
|
||||
<p>{% trans %}All members of the circle will see each other in their contact list.{% endtrans %}</p>
|
||||
|
||||
{%- if circle_members -%}
|
||||
<div class="el-2 elevated"><table>
|
||||
<thead>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
{% macro access_level_description(role, caller=None) %}
|
||||
{%- if role == "prosody:restricted" -%}
|
||||
{% trans %}Limited users can interact with users on the same Snikket service and be members of circles.{% endtrans %}
|
||||
{%- elif role == "prosody:normal" -%}
|
||||
{%- elif role == "prosody:registered" -%}
|
||||
{% trans %}Like limited users and can also interact with users on other Snikket services.{% endtrans %}
|
||||
{%- elif role == "prosody:admin" -%}
|
||||
{% trans %}Like normal users and can access the admin panel in the web portal.{% endtrans %}
|
||||
@@ -19,12 +19,33 @@
|
||||
{% block content %}
|
||||
<h1>{% trans user_name=target_user.localpart %}Edit user {{ user_name }}{% endtrans %}</h1>
|
||||
<form method="POST">{{ form.csrf_token }}<div class="form layout-expanded">
|
||||
{% if target_user.deletion_request %}
|
||||
<div class="box alert">
|
||||
<header>{% trans %}This user account is pending deletion{% endtrans %}</header>
|
||||
<p>{% trans date=target_user.deletion_request.deleted_at | format_datetime %}The owner of the account sent a deletion request on {{ date }} using their app.{% endtrans %}
|
||||
<p>{% trans time=(target_user.deletion_request.pending_until - now())|format_timedelta %}The account has been locked, and will be automatically deleted permanently in {{ time }}.{% endtrans %}</p>
|
||||
|
||||
<p>{% trans %}If this was a mistake, you can cancel the deletion and restore the account.{% endtrans %}</p>
|
||||
|
||||
{%- call form_button("restore_from_trash", form.action_restore, class="secondary") %}{% endcall %}
|
||||
</div>
|
||||
{% elif not target_user.enabled %}
|
||||
<div class="box alert">
|
||||
<header>{% trans %}This user account is locked{% endtrans %}</header>
|
||||
<p>{% trans %}The user will not be able to log in to their account until it is unlocked again.{% endtrans %}</p>
|
||||
|
||||
{%- call form_button("lock_open", form.action_enable, class="secondary") %}{% endcall %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<h2 class="form-title">{% trans %}Edit user{% endtrans %}</h2>
|
||||
|
||||
<div class="f-ebox">
|
||||
{{ form.localpart.label }}
|
||||
{{ form.localpart(readonly="readonly") }}
|
||||
<p class="form-desc weak">{% trans %}The login name cannot be changed.{% endtrans %}</p>
|
||||
</div>
|
||||
|
||||
<div class="f-ebox">
|
||||
{{ form.display_name.label }}
|
||||
{{ form.display_name }}
|
||||
@@ -63,14 +84,14 @@
|
||||
{% trans %}If the user has lost their password, you can use the button below to create a special link which allows to change the password of the account, once.{% endtrans %}
|
||||
</p>
|
||||
<div class="f-bbox">
|
||||
{%- call form_button("passwd", form.action_create_reset, class="primary") -%}{%- endcall -%}
|
||||
{%- call form_button("passwd", form.action_create_reset, class="secondary") -%}{%- endcall -%}
|
||||
</div>
|
||||
<h2 class="form-title">{% trans %}Debug information{% endtrans %}</h2>
|
||||
<p class="form-desc">
|
||||
{% trans %}In some cases, extended information about the user account and the connected devices is necessary to troubleshoot issues. The button below reveals this (sensitive) information.{% endtrans %}
|
||||
</p>
|
||||
<div class="f-bbox">
|
||||
{%- call standard_button("bug_report", url_for(".debug_user", localpart=target_user.localpart), class="primary") -%}
|
||||
{%- call standard_button("bug_report", url_for(".debug_user", localpart=target_user.localpart), class="secondary") -%}
|
||||
{%- trans -%}Show debug information{%- endtrans -%}
|
||||
{%- endcall -%}
|
||||
</div>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{% extends "admin_app.html" %}
|
||||
{% from "library.j2" import action_button, icon, value_or_hint, custom_form_button %}
|
||||
{% from "library.j2" import action_button, avatar, icon, render_user, value_or_hint, custom_form_button with context %}
|
||||
{% block content %}
|
||||
<h1>{% trans %}Manage users{% endtrans %}</h1>
|
||||
<div class="elevated el-2"><table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% trans %}Login name{% endtrans %}</th>
|
||||
<th>{% trans %}Display name{% endtrans %}</th>
|
||||
<th>{% trans %}User{% endtrans %}</th>
|
||||
<th>{% trans %}Last active{% endtrans %}</th>
|
||||
<th>{% trans %}Actions{% endtrans %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -14,15 +14,15 @@
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<td>
|
||||
{{- user.localpart -}}
|
||||
{%- if user.has_admin_role -%}
|
||||
<span class="with-tooltip above" data-tooltip="{% trans %}The user is an administrator.{% endtrans %}">{% call icon("admin") %}{% trans %} (Administrator){% endtrans %}{% endcall %}</span>
|
||||
{%- endif -%}
|
||||
{%- if user.has_restricted_role -%}
|
||||
<span class="with-tooltip above" data-tooltip="{% trans %}The user is restricted.{% endtrans %}">{% call icon("lock") %}{% trans %} (Restricted){% endtrans %}{% endcall %}</span>
|
||||
{%- endif -%}
|
||||
{%- call render_user(user) -%}{%- endcall -%}
|
||||
</td>
|
||||
<td>{% call value_or_hint(user.display_name) %}{% endcall %}</td>
|
||||
{% if user.enabled %}
|
||||
<td>{{ user.last_active | format_last_activity }}</td>
|
||||
{% elif user.deletion_request %}
|
||||
<td>{% trans %}Deleted{% endtrans %}</td>
|
||||
{% else %}
|
||||
<td>{% trans %}Locked{% endtrans %}</td>
|
||||
{% endif %}
|
||||
<td class="nowrap">
|
||||
{%- call action_button("edit", url_for(".edit_user", localpart=user.localpart), class="primary") -%}
|
||||
{% trans user_name=user.localpart %}Edit user {{ user_name }}{% endtrans %}
|
||||
|
||||
@@ -17,6 +17,13 @@
|
||||
{%- else -%}
|
||||
<p>{% trans site_name=config["SITE_NAME"] %}You have been invited to chat on {{ site_name }} using Snikket, a secure, privacy-friendly chat app.{% endtrans %}</p>
|
||||
{%- endif -%}
|
||||
|
||||
{%- if config["TOS_URI"] and config["PRIVACY_URI"] -%}
|
||||
<p>
|
||||
{% trans site_name=config["SITE_NAME"], tos_uri=config["TOS_URI"], privacy_uri=config["PRIVACY_URI"] %}By continuing, you agree to the <a href="{{tos_uri}}">Terms of Service</a> and <a href="{{privacy_uri}}">Privacy Policy</a>.{% endtrans %}
|
||||
</p>
|
||||
{%- endif -%}
|
||||
|
||||
<h2>{% trans %}Get started{% endtrans %}</h2>
|
||||
{%- if apple_store_url -%}
|
||||
<p>{% trans %}Install the Snikket App on your Android or iOS device.{% endtrans %}</p>
|
||||
@@ -56,29 +63,7 @@
|
||||
{%- endcall -%}
|
||||
</header>
|
||||
<p>{% trans %}You can transfer this invite to your mobile device by scanning a code with your camera. You can use either a QR scanner app or the Snikket app itself.{% endtrans %}</p>
|
||||
<div class="tabbox">
|
||||
{#- -#}
|
||||
<nav class="tabs" role="tablist">
|
||||
{#- -#}
|
||||
<a href="#qr-info-url" class="active" role="tab" aria-controls="qr-info-url" aria-selected="true" onclick="select_tab(this); return false;">{% trans %}Using a QR code scanner{% endtrans %}</a>
|
||||
{#- -#}
|
||||
<a href="#qr-info-uri" role="tab" aria-controls="qr-info-uri" aria-selected="false" onclick="select_tab(this); return false;">{% trans %}Using the Snikket app{% endtrans %}</a>
|
||||
{#- -#}
|
||||
</nav>
|
||||
{#- -#}
|
||||
<div id="qr-info-url" class="tab-pane active">
|
||||
<p>{% trans %}Use a <em>QR code</em> scanner on your mobile device to scan the code below:{% endtrans %}</p>
|
||||
<div id="qr-invite-page" data-qrdata="{{ url_for(".view", id_=invite_id, _external=True, _scheme="https") }}" class="qr"></div>
|
||||
</div>
|
||||
{#- -#}
|
||||
<div id="qr-info-uri" class="tab-pane">
|
||||
<img class="float-right" id="tutorial-scan" aria-hidden="true" alt="" src="{{ url_for("static", filename="img/tutorial-scan.png") }}">
|
||||
<p>{% trans %}Install the Snikket app on your mobile device, open it, and tap the 'Scan' button at the top.{% endtrans %}</p>
|
||||
<p>{% trans %}Your camera will turn on. Point it at the square code below until it is within the highlighted square on your screen, and wait until the app recognises it.{% endtrans %}</p>
|
||||
<div id="qr-uri" data-qrdata="{{ invite.xmpp_uri }}" class="qr"></div>
|
||||
</div>
|
||||
{#- -#}
|
||||
</div>
|
||||
<div id="qr-invite-page" data-qrdata="{{ url_for(".view", id_=invite_id, _external=True, _scheme="https") }}" class="qr"></div>
|
||||
{#- -#}
|
||||
{%- call standard_button("close", "#", onclick="close_modal(this.parentNode.parentNode); return false;", class="primary") -%}
|
||||
{% trans %}Close{% endtrans %}
|
||||
|
||||
@@ -10,6 +10,29 @@
|
||||
{%- endif -%}
|
||||
{%- endmacro %}
|
||||
|
||||
{% macro render_user(user, caller=None) -%}
|
||||
<div class="username-with-avatar">
|
||||
<div class="avatar-container">
|
||||
{%- call avatar(user.localpart+"@"+config["SNIKKET_DOMAIN"], user.avatar_info[0].hash if user.avatar_info | length > 0 else None ) %}{% endcall -%}
|
||||
{%- if user.has_admin_role -%}
|
||||
<div class="user-badge-icon">
|
||||
<span class="with-tooltip above" data-tooltip="{% trans %}The user is an administrator.{% endtrans %}">{% call icon("admin") %}{% trans %} (Administrator){% endtrans %}{% endcall %}</span>
|
||||
</div>
|
||||
{%- elif user.has_restricted_role -%}
|
||||
<div class="user-badge-icon">
|
||||
<span class="with-tooltip above" data-tooltip="{% trans %}The user is restricted.{% endtrans %}">{% call icon("lock") %}{% trans %} (Restricted){% endtrans %}{% endcall %}</span>
|
||||
</div>
|
||||
{%- endif -%}
|
||||
</div>
|
||||
<div class="user-info-container">
|
||||
<div class="user-localpart">{{- user.localpart -}}</div>
|
||||
{%- if user.display_name %}
|
||||
<div class="user-display-name">{{- user.display_name -}}</div>
|
||||
{%- endif %}
|
||||
</div>
|
||||
</div>
|
||||
{%- endmacro -%}
|
||||
|
||||
{% macro showuri(uri, caller=None, id_=None) %}
|
||||
{%- if uri is none -%}
|
||||
<em>—</em>
|
||||
|
||||
39
snikket_web/templates/policies.html
Normal file
39
snikket_web/templates/policies.html
Normal file
@@ -0,0 +1,39 @@
|
||||
{% extends "base.html" %}
|
||||
{% from "library.j2" import standard_button %}
|
||||
{% block head_lead %}
|
||||
<title>{% trans %}Policies{% endtrans %} - {{ config["SITE_NAME"] }}</title>
|
||||
{% endblock %}
|
||||
{% block body %}
|
||||
<main>
|
||||
<div class="box el-2">
|
||||
<h1>{{ config["SITE_NAME"] }}</h1>
|
||||
<h2>{% trans %}Policies{% endtrans %}</h2>
|
||||
|
||||
{% if config["TOS_URI"] or config["PRIVACY_URI"] -%}
|
||||
<p>{% trans %}Use of this service is subject to the following policies:{% endtrans %}</p>
|
||||
<ul>
|
||||
{%- if config["TOS_URI"] %}
|
||||
<li><a href="{{ config["TOS_URI"] }}">{% trans %}Terms of Service{% endtrans %}</a></li>
|
||||
{%- endif %}
|
||||
{%- if config["PRIVACY_URI"] %}
|
||||
<li><a href="{{ config["PRIVACY_URI"] }}">{% trans %}Privacy Policy{% endtrans %}</a></li>
|
||||
{%- endif %}
|
||||
</ul>
|
||||
{%- else -%}
|
||||
<p>{% trans %}Please contact the administrator of this instance if you have questions about policies.{% endtrans %}</p>
|
||||
{% endif -%}
|
||||
|
||||
<p>{% trans url="https://snikket.org/app/privacy/" %}Use of the Snikket apps is subject to the <a href="{{url}}">Snikket Apps Privacy Policy</a>.{% endtrans %}</p>
|
||||
|
||||
{%- if config["ABUSE_EMAIL"] %}
|
||||
<p>{% trans email=config["ABUSE_EMAIL"], domain=config["SNIKKET_DOMAIN"] %}To report policy violations or other abuse from this service, please send an email to {{email}}. Specify the domain name of this instance ({{domain}}) and include details of the incident(s).{% endtrans %}</p>
|
||||
{%- endif %}
|
||||
|
||||
<p>
|
||||
{%- call standard_button("back", url_for("index"), class="primary") -%}
|
||||
{% trans %}Back to the main page{% endtrans %}
|
||||
{%- endcall -%}
|
||||
</p>
|
||||
</div>
|
||||
</main>
|
||||
{% endblock %}
|
||||
16
snikket_web/templates/security.txt
Normal file
16
snikket_web/templates/security.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
# {{ config["SNIKKET_DOMAIN"] }} is running open-source software
|
||||
# from the Snikket project: https://snikket.org/
|
||||
|
||||
{% if config["SECURITY_EMAIL"] -%}
|
||||
# Security issues related to this service should be addressed to the
|
||||
# following security contact:
|
||||
Contact: mailto:{{ config["SECURITY_EMAIL"] }}
|
||||
{% else -%}
|
||||
# This service does not have a public security contact. You might find
|
||||
# more information about the service at the following link:
|
||||
Contact: https://{{ config["SNIKKET_DOMAIN"] }}/policies/
|
||||
{%- endif %}
|
||||
|
||||
# Please report software defects to the project developers, per the
|
||||
# instructions at the following link:
|
||||
Contact: https://snikket.org/security/
|
||||
@@ -11,6 +11,8 @@
|
||||
{% call render_errors(form) %}{% endcall %}
|
||||
|
||||
<div class="f-bbox">
|
||||
{%- call standard_button("back", url_for('.index'), class="tertiary") %}{% trans %}Back{% endtrans %}{% endcall -%}
|
||||
|
||||
<form method="POST">
|
||||
{{ form.csrf_token }}
|
||||
{%- call form_button("download", form.action_export, class="primary") %}{% endcall -%}
|
||||
|
||||
Binary file not shown.
@@ -6,8 +6,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: translations@snikket.org\n"
|
||||
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
|
||||
"PO-Revision-Date: 2022-05-30 14:01+0000\n"
|
||||
"Last-Translator: Daniel Holmgaard <fovatis@tutanota.com>\n"
|
||||
"Language-Team: Danish <http://i18n.sotecware.net/projects/snikket/web-portal/"
|
||||
@@ -20,203 +20,204 @@ msgstr ""
|
||||
"X-Generator: Weblate 4.8.1\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Login-navn"
|
||||
|
||||
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
|
||||
msgid "Display name"
|
||||
msgstr "Kaldenavn"
|
||||
|
||||
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
|
||||
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
|
||||
msgid "Access Level"
|
||||
msgstr "Adgangsniveau"
|
||||
|
||||
#: snikket_web/admin.py:78
|
||||
#: snikket_web/admin.py:79
|
||||
msgid "Limited"
|
||||
msgstr "Begrænset"
|
||||
|
||||
#: snikket_web/admin.py:79
|
||||
#: snikket_web/admin.py:80
|
||||
msgid "Normal user"
|
||||
msgstr "Normal bruger"
|
||||
|
||||
#: snikket_web/admin.py:80
|
||||
#: snikket_web/admin.py:81
|
||||
msgid "Administrator"
|
||||
msgstr "Administrator"
|
||||
|
||||
#: snikket_web/admin.py:85
|
||||
#: snikket_web/admin.py:86
|
||||
msgid "Update user"
|
||||
msgstr "Opdater bruger"
|
||||
|
||||
#: snikket_web/admin.py:89
|
||||
#: snikket_web/admin.py:90
|
||||
msgid "Create password reset link"
|
||||
msgstr "Opret link til nulstilling af adgangskode"
|
||||
|
||||
#: snikket_web/admin.py:107
|
||||
#: snikket_web/admin.py:108
|
||||
msgid "Password reset link created"
|
||||
msgstr "Link til nulstilling af adgangskode oprettet"
|
||||
|
||||
#: snikket_web/admin.py:122
|
||||
#: snikket_web/admin.py:123
|
||||
msgid "User information updated."
|
||||
msgstr "Brugerinformation opdateret."
|
||||
|
||||
#: snikket_web/admin.py:144
|
||||
#: snikket_web/admin.py:145
|
||||
msgid "Delete user permanently"
|
||||
msgstr "Slet bruger permanent"
|
||||
|
||||
#: snikket_web/admin.py:157
|
||||
#: snikket_web/admin.py:158
|
||||
msgid "User deleted"
|
||||
msgstr "Bruger slettet"
|
||||
|
||||
#: snikket_web/admin.py:195
|
||||
#: snikket_web/admin.py:196
|
||||
msgid "Password reset link not found"
|
||||
msgstr "Link til nulstilling af adgangskode ikke fundet"
|
||||
|
||||
#: snikket_web/admin.py:207
|
||||
#: snikket_web/admin.py:208
|
||||
msgid "Password reset link deleted"
|
||||
msgstr "Link til nulstilling af adgangskode slettet"
|
||||
|
||||
#: snikket_web/admin.py:227
|
||||
#: snikket_web/admin.py:228
|
||||
msgid "Invite to circle"
|
||||
msgstr "Inviter til cirkel"
|
||||
|
||||
#: snikket_web/admin.py:233
|
||||
#: snikket_web/admin.py:234
|
||||
msgid "At least one circle must be selected"
|
||||
msgstr "Mindst en cirkel skal vælges"
|
||||
|
||||
#: snikket_web/admin.py:238
|
||||
#: snikket_web/admin.py:239
|
||||
msgid "Valid for"
|
||||
msgstr "Gyldig for"
|
||||
|
||||
#: snikket_web/admin.py:240
|
||||
#: snikket_web/admin.py:241
|
||||
msgid "One hour"
|
||||
msgstr "En time"
|
||||
|
||||
#: snikket_web/admin.py:241
|
||||
#: snikket_web/admin.py:242
|
||||
msgid "Twelve hours"
|
||||
msgstr "Tolv timer"
|
||||
|
||||
#: snikket_web/admin.py:242
|
||||
#: snikket_web/admin.py:243
|
||||
msgid "One day"
|
||||
msgstr "En dag"
|
||||
|
||||
#: snikket_web/admin.py:243
|
||||
#: snikket_web/admin.py:244
|
||||
msgid "One week"
|
||||
msgstr "En uge"
|
||||
|
||||
#: snikket_web/admin.py:244
|
||||
#: snikket_web/admin.py:245
|
||||
msgid "Four weeks"
|
||||
msgstr "Fire uger"
|
||||
|
||||
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
|
||||
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
|
||||
msgid "Invitation type"
|
||||
msgstr "Invitationstype"
|
||||
|
||||
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
|
||||
msgid "Individual"
|
||||
msgstr "Individuel"
|
||||
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
|
||||
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
|
||||
msgid "Group"
|
||||
msgstr "Gruppe"
|
||||
|
||||
#: snikket_web/admin.py:259
|
||||
#: snikket_web/admin.py:260
|
||||
msgid "New invitation link"
|
||||
msgstr "Ny invitationslink"
|
||||
|
||||
#: snikket_web/admin.py:321
|
||||
#: snikket_web/admin.py:322
|
||||
msgid "Revoke"
|
||||
msgstr "Tilbagekald"
|
||||
|
||||
#: snikket_web/admin.py:345
|
||||
#: snikket_web/admin.py:346
|
||||
msgid "Invitation created"
|
||||
msgstr "Invitation oprettet"
|
||||
|
||||
#: snikket_web/admin.py:361
|
||||
#: snikket_web/admin.py:362
|
||||
msgid "No such invitation exists"
|
||||
msgstr "Denne invitation findes ikke"
|
||||
|
||||
#: snikket_web/admin.py:376
|
||||
#: snikket_web/admin.py:377
|
||||
msgid "Invitation revoked"
|
||||
msgstr "Invitation tilbagekaldt"
|
||||
|
||||
#: snikket_web/admin.py:393 snikket_web/admin.py:441
|
||||
#: snikket_web/admin.py:394 snikket_web/admin.py:442
|
||||
#: snikket_web/templates/admin_delete_circle.html:10
|
||||
msgid "Name"
|
||||
msgstr "Navn"
|
||||
|
||||
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
|
||||
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
|
||||
msgid "Create circle"
|
||||
msgstr "Opret cirkel"
|
||||
|
||||
#: snikket_web/admin.py:428
|
||||
#: snikket_web/admin.py:429
|
||||
msgid "Circle created"
|
||||
msgstr "Cirkel oprettet"
|
||||
|
||||
#: snikket_web/admin.py:446
|
||||
#: snikket_web/admin.py:447
|
||||
msgid "Select user"
|
||||
msgstr "Vælg bruger"
|
||||
|
||||
#: snikket_web/admin.py:451
|
||||
#: snikket_web/admin.py:452
|
||||
msgid "Update circle"
|
||||
msgstr "Opdater cirkel"
|
||||
|
||||
#: snikket_web/admin.py:455
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Slet cirkel permanent"
|
||||
|
||||
#: snikket_web/admin.py:461
|
||||
#: snikket_web/admin.py:458
|
||||
msgid "Add user"
|
||||
msgstr "Tilføj bruger"
|
||||
|
||||
#: snikket_web/admin.py:477
|
||||
#: snikket_web/admin.py:474 snikket_web/admin.py:563
|
||||
msgid "No such circle exists"
|
||||
msgstr "Denne cirkel findes ikke"
|
||||
|
||||
#: snikket_web/admin.py:514
|
||||
#: snikket_web/admin.py:511
|
||||
msgid "Circle data updated"
|
||||
msgstr "Cirkel-data opdateret"
|
||||
|
||||
#: snikket_web/admin.py:520
|
||||
msgid "Circle deleted"
|
||||
msgstr "Cirkel slettet"
|
||||
|
||||
#: snikket_web/admin.py:531
|
||||
#: snikket_web/admin.py:521
|
||||
msgid "User added to circle"
|
||||
msgstr "Bruger tilføjet til cirkel"
|
||||
|
||||
#: snikket_web/admin.py:540
|
||||
#: snikket_web/admin.py:530
|
||||
msgid "User removed from circle"
|
||||
msgstr "Bruger fjernet fra cirkel"
|
||||
|
||||
#: snikket_web/admin.py:609
|
||||
#: snikket_web/admin.py:547
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Slet cirkel permanent"
|
||||
|
||||
#: snikket_web/admin.py:574
|
||||
msgid "Circle deleted"
|
||||
msgstr "Cirkel slettet"
|
||||
|
||||
#: snikket_web/admin.py:640
|
||||
msgid "Message contents"
|
||||
msgstr "Meddelelsens indhold"
|
||||
|
||||
#: snikket_web/admin.py:615
|
||||
#: snikket_web/admin.py:646
|
||||
msgid "Only send to online users"
|
||||
msgstr "Send kun til online brugere"
|
||||
|
||||
#: snikket_web/admin.py:619
|
||||
#: snikket_web/admin.py:650
|
||||
msgid "Post to all users"
|
||||
msgstr "Send til alle brugere"
|
||||
|
||||
#: snikket_web/admin.py:623
|
||||
#: snikket_web/admin.py:654
|
||||
msgid "Send preview to yourself"
|
||||
msgstr "Send forhåndsvisning til dig selv"
|
||||
|
||||
#: snikket_web/admin.py:645
|
||||
#: snikket_web/admin.py:676
|
||||
msgid "Announcement sent!"
|
||||
msgstr "Bekendgørelse sendt!"
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
#: snikket_web/infra.py:53
|
||||
msgid "Main"
|
||||
msgstr "Hoved"
|
||||
|
||||
#: snikket_web/invite.py:33
|
||||
#: snikket_web/invite.py:35
|
||||
msgid ""
|
||||
"The account data you tried to import is too large to upload. Please contact "
|
||||
"your Snikket operator."
|
||||
@@ -224,52 +225,52 @@ msgstr ""
|
||||
"De kontodata, du forsøgte at importere, er for store til at uploade. Kontakt "
|
||||
"din Snikket-operatør."
|
||||
|
||||
#: snikket_web/invite.py:112
|
||||
#: snikket_web/invite.py:114
|
||||
msgid "Username"
|
||||
msgstr "Brugernavn"
|
||||
|
||||
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
|
||||
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
|
||||
msgid "Password"
|
||||
msgstr "Adgangskode"
|
||||
|
||||
#: snikket_web/invite.py:120 snikket_web/invite.py:188
|
||||
#: snikket_web/invite.py:122 snikket_web/invite.py:190
|
||||
msgid "Confirm password"
|
||||
msgstr "Bekræft adgangskode"
|
||||
|
||||
#: snikket_web/invite.py:124 snikket_web/invite.py:192
|
||||
#: snikket_web/invite.py:126 snikket_web/invite.py:194
|
||||
msgid "The passwords must match."
|
||||
msgstr "Adgangskoderne skal matche."
|
||||
|
||||
#: snikket_web/invite.py:129
|
||||
#: snikket_web/invite.py:131
|
||||
msgid "Create account"
|
||||
msgstr "Opret konto"
|
||||
|
||||
#: snikket_web/invite.py:156
|
||||
#: snikket_web/invite.py:158
|
||||
msgid "That username is already taken."
|
||||
msgstr "Det brugernavn er allerede taget."
|
||||
|
||||
#: snikket_web/invite.py:160 snikket_web/invite.py:225
|
||||
#: snikket_web/invite.py:162 snikket_web/invite.py:227
|
||||
msgid "Registration was declined for unknown reasons."
|
||||
msgstr "Registrering blev afvist af ukendte årsager."
|
||||
|
||||
#: snikket_web/invite.py:164
|
||||
#: snikket_web/invite.py:166
|
||||
msgid "The username is not valid."
|
||||
msgstr "Brugernavnet er ikke gyldigt."
|
||||
|
||||
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/templates/user_passwd.html:29
|
||||
msgid "Change password"
|
||||
msgstr "Ændr adgangskode"
|
||||
|
||||
#: snikket_web/invite.py:244
|
||||
#: snikket_web/invite.py:246
|
||||
msgid "Account data file"
|
||||
msgstr "Kontodatafil"
|
||||
|
||||
#: snikket_web/invite.py:248
|
||||
#: snikket_web/invite.py:250
|
||||
msgid "Import data"
|
||||
msgstr "Importer data"
|
||||
|
||||
#: snikket_web/invite.py:269
|
||||
#: snikket_web/invite.py:271
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The account data you tried to import is in an unknown format. Please upload "
|
||||
@@ -278,24 +279,24 @@ msgstr ""
|
||||
"De kontodata, du forsøgte at importere, er i et ukendt format. Upload en XML-"
|
||||
"fil i XEP-0227-format (forudsat format: %(mimetype)s)."
|
||||
|
||||
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/user.py:178
|
||||
msgid "Error"
|
||||
msgstr "Fejl"
|
||||
|
||||
#: snikket_web/main.py:36
|
||||
#: snikket_web/main.py:38
|
||||
msgid "Address"
|
||||
msgstr "Adresse"
|
||||
|
||||
#: snikket_web/main.py:46
|
||||
#: snikket_web/main.py:48
|
||||
msgid "Sign in"
|
||||
msgstr "Log ind"
|
||||
|
||||
#: snikket_web/main.py:55
|
||||
#: snikket_web/main.py:57
|
||||
msgid "Invalid username or password."
|
||||
msgstr "Ugyldigt brugernavn eller adgangskode."
|
||||
|
||||
#: snikket_web/main.py:83
|
||||
#: snikket_web/main.py:85
|
||||
msgid "Login successful!"
|
||||
msgstr "Login lykkedes!"
|
||||
|
||||
@@ -469,7 +470,7 @@ msgstr ""
|
||||
msgid "Software Versions"
|
||||
msgstr "Software versioner"
|
||||
|
||||
#: snikket_web/templates/about.html:29
|
||||
#: snikket_web/templates/about.html:32
|
||||
msgid "Back to the main page"
|
||||
msgstr "Tilbage til hovedsiden"
|
||||
|
||||
@@ -585,6 +586,53 @@ msgstr "Rå fejlretningsdump"
|
||||
msgid "Copy complete output"
|
||||
msgstr "Kopier komplet output"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:4
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Edit circle %(circle_name)s"
|
||||
msgid "Delete circle %(circle_name)s"
|
||||
msgstr "Rediger cirkel %(circle_name)s"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:6
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
#: snikket_web/templates/admin_edit_circle.html:51
|
||||
msgid "Delete circle"
|
||||
msgstr "Slet cirkel"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:8
|
||||
#, fuzzy
|
||||
#| msgid "Are you sure you want to delete the following user?"
|
||||
msgid "Are you sure you want to delete the following circle?"
|
||||
msgstr "Er du sikker på, at du vil slette følgende bruger?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:13
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Fare"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:14
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "The user and their data will be deleted irrevocably, permanently and "
|
||||
#| "immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
#| "strong>"
|
||||
msgid ""
|
||||
"The circle and the corresponding chat will be deleted, permanently and "
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
msgstr ""
|
||||
"Brugeren og deres data slettes uigenkaldeligt, permanent og straks efter "
|
||||
"tryk på nedenstående knap. <strong>Der er ingen vej tilbage!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:17
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_manage_data.html:14
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Tilbage"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:4
|
||||
#, python-format
|
||||
msgid "Delete user %(user_name)s"
|
||||
@@ -599,10 +647,6 @@ msgstr "Slet bruger"
|
||||
msgid "Are you sure you want to delete the following user?"
|
||||
msgstr "Er du sikker på, at du vil slette følgende bruger?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Fare"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:16
|
||||
msgid ""
|
||||
"The user and their data will be deleted irrevocably, permanently and "
|
||||
@@ -612,14 +656,6 @@ msgstr ""
|
||||
"Brugeren og deres data slettes uigenkaldeligt, permanent og straks efter "
|
||||
"tryk på nedenstående knap. <strong>Der er ingen vej tilbage!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Tilbage"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:14
|
||||
msgid "This is your main circle"
|
||||
msgstr "Dette er din hovedcirkel"
|
||||
@@ -652,10 +688,6 @@ msgstr "Denne cirkel er ikke tilknyttet nogen gruppechat."
|
||||
msgid "Return to circle list"
|
||||
msgstr "Retur til cirkeliste"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
msgid "Delete circle"
|
||||
msgstr "Slet cirkel"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:49
|
||||
msgid "Deleting a circle does not delete any users in the circle."
|
||||
msgstr "Sletning af en cirkel vil ikke slette brugere i cirklen."
|
||||
@@ -884,7 +916,8 @@ msgstr "Systemets sundhed"
|
||||
|
||||
#: snikket_web/templates/admin_home.html:38
|
||||
msgid "View the server status or send a broadcast message to all users."
|
||||
msgstr "Vis serverstatus, eller send en udsendelsesmeddelelse til alle brugere."
|
||||
msgstr ""
|
||||
"Vis serverstatus, eller send en udsendelsesmeddelelse til alle brugere."
|
||||
|
||||
#: snikket_web/templates/admin_home.html:40
|
||||
msgid "Send a broadcast message to all users."
|
||||
@@ -1140,8 +1173,8 @@ msgstr "App allerede installeret?"
|
||||
#: snikket_web/templates/invite_register.html:16
|
||||
#: snikket_web/templates/invite_reset_view.html:21
|
||||
#: snikket_web/templates/invite_view.html:41
|
||||
#: snikket_web/templates/invite_view.html:106
|
||||
#: snikket_web/templates/invite_view.html:134
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
msgid "Open the app"
|
||||
msgstr "Åben appen"
|
||||
|
||||
@@ -1242,7 +1275,6 @@ msgstr ""
|
||||
"Skan-knappen øverst."
|
||||
|
||||
#: snikket_web/templates/invite_reset_view.html:26
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"Your camera will turn on. Point it at the square code below until it is "
|
||||
"within the highlighted square on your screen, and wait until the app "
|
||||
@@ -1380,7 +1412,7 @@ msgid "Get it on Google Play"
|
||||
msgstr "Få den i Google Play"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:30
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:80
|
||||
msgid "Download on the App Store"
|
||||
msgstr "Download i App Store"
|
||||
|
||||
@@ -1416,11 +1448,11 @@ msgid "Scan invite code"
|
||||
msgstr "Skan invitationskode"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:55
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:96
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
#: snikket_web/templates/invite_view.html:124
|
||||
#: snikket_web/templates/invite_view.html:140
|
||||
#: snikket_web/templates/invite_view.html:62
|
||||
#: snikket_web/templates/invite_view.html:74
|
||||
#: snikket_web/templates/invite_view.html:90
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:118
|
||||
msgid "Close"
|
||||
msgstr "Luk"
|
||||
|
||||
@@ -1433,34 +1465,11 @@ msgstr ""
|
||||
"med dit kamera. Du kan bruge enten en QR-skanner-app eller selve Snikket-"
|
||||
"appen."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:63
|
||||
msgid "Using a QR code scanner"
|
||||
msgstr "Bruger en QR kode skanner"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:65
|
||||
msgid "Using the Snikket app"
|
||||
msgstr "Bruger Snikket appen"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:70
|
||||
msgid ""
|
||||
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
|
||||
msgstr ""
|
||||
"Brug en <em>QR code</em> skanner på din mobilenhed for at skanne "
|
||||
"nedenstående kode:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:76
|
||||
msgid ""
|
||||
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
|
||||
"button at the top."
|
||||
msgstr ""
|
||||
"Installer Snikket-appen på din mobilenhed, åbn den, og tryk på knappen "
|
||||
"'Skan' øverst."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:93
|
||||
#: snikket_web/templates/invite_view.html:71
|
||||
msgid "Install on iOS"
|
||||
msgstr "Installer på iOS"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"After downloading Snikket from the App Store, you have to return to this "
|
||||
"invite link and tap on \"Open the app\" to proceed."
|
||||
@@ -1468,12 +1477,12 @@ msgstr ""
|
||||
"Efter download af Snikket fra App Store, skal du vende tilbage til dette "
|
||||
"invitationslink og trykke på \"Åbn appen\" for at fortsætte."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:101
|
||||
#: snikket_web/templates/invite_view.html:79
|
||||
msgid "First download Snikket from the App Store using the button below:"
|
||||
msgstr "Download først Snikket fra App Store ved hjælp af nedenstående knap:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:103
|
||||
#: snikket_web/templates/invite_view.html:131
|
||||
#: snikket_web/templates/invite_view.html:81
|
||||
#: snikket_web/templates/invite_view.html:109
|
||||
msgid ""
|
||||
"After the installation is complete, you can return to this page and tap the "
|
||||
"\"Open the app\" button to continue with the setup:"
|
||||
@@ -1481,12 +1490,12 @@ msgstr ""
|
||||
"Når installationen er afsluttet, kan du vende tilbage til denne side og "
|
||||
"trykke på knappen \"Åbn appen\" for at fortsætte med opsætningen:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:121
|
||||
#: snikket_web/templates/invite_view.html:130
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:108
|
||||
msgid "Install via F-Droid"
|
||||
msgstr "Installer via F-droid"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:127
|
||||
#: snikket_web/templates/invite_view.html:105
|
||||
msgid ""
|
||||
"After installing Snikket via F-Droid, you have to return to this invite link "
|
||||
"and tap on \"Open the app\" to proceed."
|
||||
@@ -1494,7 +1503,7 @@ msgstr ""
|
||||
"Efter installation af Snikket via F-Droid, skal du vende tilbage til dette "
|
||||
"invitationslink og trykke på \"Åbn appen\" for at fortsætte."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:129
|
||||
#: snikket_web/templates/invite_view.html:107
|
||||
msgid "First install Snikket from F-Droid using the button below:"
|
||||
msgstr "Installer først Snikket fra F-Droid ved hjælp af knappen nedenfor:"
|
||||
|
||||
@@ -1645,6 +1654,26 @@ msgstr ""
|
||||
"Denne sektion tillader dig at kontrollere, hvem der kan se din profil "
|
||||
"informationer, så som avatar og kaldenavn."
|
||||
|
||||
#~ msgid "Using a QR code scanner"
|
||||
#~ msgstr "Bruger en QR kode skanner"
|
||||
|
||||
#~ msgid "Using the Snikket app"
|
||||
#~ msgstr "Bruger Snikket appen"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Use a <em>QR code</em> scanner on your mobile device to scan the code "
|
||||
#~ "below:"
|
||||
#~ msgstr ""
|
||||
#~ "Brug en <em>QR code</em> skanner på din mobilenhed for at skanne "
|
||||
#~ "nedenstående kode:"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Install the Snikket app on your mobile device, open it, and tap the "
|
||||
#~ "'Scan' button at the top."
|
||||
#~ msgstr ""
|
||||
#~ "Installer Snikket-appen på din mobilenhed, åbn den, og tryk på knappen "
|
||||
#~ "'Skan' øverst."
|
||||
|
||||
#~ msgid "Create password reset link for %(user_name)s"
|
||||
#~ msgstr "Opret link til nulstilling af adgangskode til %(user_name)s"
|
||||
|
||||
|
||||
Binary file not shown.
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SnikketWeb 0.1.0\n"
|
||||
"Report-Msgid-Bugs-To: translations@snikket.org\n"
|
||||
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
|
||||
"PO-Revision-Date: 2022-01-18 14:59+0000\n"
|
||||
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
|
||||
"PO-Revision-Date: 2023-04-01 11:13+0000\n"
|
||||
"Last-Translator: Jonas Schäfer <jonas@zombofant.net>\n"
|
||||
"Language-Team: German <http://i18n.sotecware.net/projects/snikket/web-portal/"
|
||||
"de/>\n"
|
||||
@@ -17,258 +17,259 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.8.1\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Anmeldename"
|
||||
|
||||
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
|
||||
msgid "Display name"
|
||||
msgstr "Anzeigename"
|
||||
|
||||
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
|
||||
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
|
||||
msgid "Access Level"
|
||||
msgstr "Berechtigungen"
|
||||
|
||||
#: snikket_web/admin.py:78
|
||||
#: snikket_web/admin.py:79
|
||||
msgid "Limited"
|
||||
msgstr "Eingeschränkt"
|
||||
|
||||
#: snikket_web/admin.py:79
|
||||
#: snikket_web/admin.py:80
|
||||
msgid "Normal user"
|
||||
msgstr "Normaler Benutzer"
|
||||
|
||||
#: snikket_web/admin.py:80
|
||||
#: snikket_web/admin.py:81
|
||||
msgid "Administrator"
|
||||
msgstr "Administrator"
|
||||
|
||||
#: snikket_web/admin.py:85
|
||||
#: snikket_web/admin.py:86
|
||||
msgid "Update user"
|
||||
msgstr "Benutzer ändern"
|
||||
|
||||
#: snikket_web/admin.py:89
|
||||
#: snikket_web/admin.py:90
|
||||
msgid "Create password reset link"
|
||||
msgstr "Passwort-Link erzeugen"
|
||||
|
||||
#: snikket_web/admin.py:107
|
||||
#: snikket_web/admin.py:108
|
||||
msgid "Password reset link created"
|
||||
msgstr "Link zum Zurücksetzen des Passwortes erzeugt"
|
||||
|
||||
#: snikket_web/admin.py:122
|
||||
#: snikket_web/admin.py:123
|
||||
msgid "User information updated."
|
||||
msgstr "Benutzerinformationen gespeichert."
|
||||
|
||||
#: snikket_web/admin.py:144
|
||||
#: snikket_web/admin.py:145
|
||||
msgid "Delete user permanently"
|
||||
msgstr "Benutzer endgültig löschen"
|
||||
|
||||
#: snikket_web/admin.py:157
|
||||
#: snikket_web/admin.py:158
|
||||
msgid "User deleted"
|
||||
msgstr "Benutzer gelöscht"
|
||||
|
||||
#: snikket_web/admin.py:195
|
||||
#: snikket_web/admin.py:196
|
||||
msgid "Password reset link not found"
|
||||
msgstr "Link zum Zurücksetzen des Passwortes nicht gefunden"
|
||||
|
||||
#: snikket_web/admin.py:207
|
||||
#: snikket_web/admin.py:208
|
||||
msgid "Password reset link deleted"
|
||||
msgstr "Link gelöscht"
|
||||
|
||||
#: snikket_web/admin.py:227
|
||||
#: snikket_web/admin.py:228
|
||||
msgid "Invite to circle"
|
||||
msgstr "In Gemeinschaft einladen"
|
||||
|
||||
#: snikket_web/admin.py:233
|
||||
#: snikket_web/admin.py:234
|
||||
msgid "At least one circle must be selected"
|
||||
msgstr "Mindestens eine Gemeinschaft muss ausgewählt sein"
|
||||
|
||||
#: snikket_web/admin.py:238
|
||||
#: snikket_web/admin.py:239
|
||||
msgid "Valid for"
|
||||
msgstr "Gültig für"
|
||||
|
||||
#: snikket_web/admin.py:240
|
||||
#: snikket_web/admin.py:241
|
||||
msgid "One hour"
|
||||
msgstr "Eine Stunde"
|
||||
|
||||
#: snikket_web/admin.py:241
|
||||
#: snikket_web/admin.py:242
|
||||
msgid "Twelve hours"
|
||||
msgstr "Zwölf Stunden"
|
||||
|
||||
#: snikket_web/admin.py:242
|
||||
#: snikket_web/admin.py:243
|
||||
msgid "One day"
|
||||
msgstr "Ein Tag"
|
||||
|
||||
#: snikket_web/admin.py:243
|
||||
#: snikket_web/admin.py:244
|
||||
msgid "One week"
|
||||
msgstr "Eine Woche"
|
||||
|
||||
#: snikket_web/admin.py:244
|
||||
#: snikket_web/admin.py:245
|
||||
msgid "Four weeks"
|
||||
msgstr "Vier Wochen"
|
||||
|
||||
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
|
||||
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
|
||||
msgid "Invitation type"
|
||||
msgstr "Art der Einladung"
|
||||
|
||||
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
|
||||
msgid "Individual"
|
||||
msgstr "Einzelperson"
|
||||
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
|
||||
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
|
||||
msgid "Group"
|
||||
msgstr "Gruppe"
|
||||
|
||||
#: snikket_web/admin.py:259
|
||||
#: snikket_web/admin.py:260
|
||||
msgid "New invitation link"
|
||||
msgstr "Neuer Einladungslink"
|
||||
|
||||
#: snikket_web/admin.py:321
|
||||
#: snikket_web/admin.py:322
|
||||
msgid "Revoke"
|
||||
msgstr "Löschen"
|
||||
|
||||
#: snikket_web/admin.py:345
|
||||
#: snikket_web/admin.py:346
|
||||
msgid "Invitation created"
|
||||
msgstr "Einladung angelegt"
|
||||
|
||||
#: snikket_web/admin.py:361
|
||||
#: snikket_web/admin.py:362
|
||||
msgid "No such invitation exists"
|
||||
msgstr "Diese Einladung existiert nicht"
|
||||
|
||||
#: snikket_web/admin.py:376
|
||||
#: snikket_web/admin.py:377
|
||||
msgid "Invitation revoked"
|
||||
msgstr "Einladung gelöscht"
|
||||
|
||||
#: snikket_web/admin.py:393 snikket_web/admin.py:441
|
||||
#: snikket_web/admin.py:394 snikket_web/admin.py:442
|
||||
#: snikket_web/templates/admin_delete_circle.html:10
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
|
||||
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
|
||||
msgid "Create circle"
|
||||
msgstr "Gemeinschaft gründen"
|
||||
|
||||
#: snikket_web/admin.py:428
|
||||
#: snikket_web/admin.py:429
|
||||
msgid "Circle created"
|
||||
msgstr "Gemeinschaft gegründet"
|
||||
|
||||
#: snikket_web/admin.py:446
|
||||
#: snikket_web/admin.py:447
|
||||
msgid "Select user"
|
||||
msgstr "Benutzer auswählen"
|
||||
|
||||
#: snikket_web/admin.py:451
|
||||
#: snikket_web/admin.py:452
|
||||
msgid "Update circle"
|
||||
msgstr "Gemeinschaft ändern"
|
||||
|
||||
#: snikket_web/admin.py:455
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Gemeinschaft endgültig löschen"
|
||||
|
||||
#: snikket_web/admin.py:461
|
||||
#: snikket_web/admin.py:458
|
||||
msgid "Add user"
|
||||
msgstr "Benutzer hinzufügen"
|
||||
|
||||
#: snikket_web/admin.py:477
|
||||
#: snikket_web/admin.py:474 snikket_web/admin.py:563
|
||||
msgid "No such circle exists"
|
||||
msgstr "Diese Gemeinschaft existiert nicht"
|
||||
|
||||
#: snikket_web/admin.py:514
|
||||
#: snikket_web/admin.py:511
|
||||
msgid "Circle data updated"
|
||||
msgstr "Gemeinschaftsdaten aktualisiert"
|
||||
|
||||
#: snikket_web/admin.py:520
|
||||
msgid "Circle deleted"
|
||||
msgstr "Gemeinschaft gelöscht"
|
||||
|
||||
#: snikket_web/admin.py:531
|
||||
#: snikket_web/admin.py:521
|
||||
msgid "User added to circle"
|
||||
msgstr "Benutzer zur Gemeinschaft hinzugefügt"
|
||||
|
||||
#: snikket_web/admin.py:540
|
||||
#: snikket_web/admin.py:530
|
||||
msgid "User removed from circle"
|
||||
msgstr "Benutzer aus der Gemeinschaft entfernt"
|
||||
|
||||
#: snikket_web/admin.py:609
|
||||
#: snikket_web/admin.py:547
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Gemeinschaft endgültig löschen"
|
||||
|
||||
#: snikket_web/admin.py:574
|
||||
msgid "Circle deleted"
|
||||
msgstr "Gemeinschaft gelöscht"
|
||||
|
||||
#: snikket_web/admin.py:640
|
||||
msgid "Message contents"
|
||||
msgstr "Nachrichteninhalt"
|
||||
|
||||
#: snikket_web/admin.py:615
|
||||
#: snikket_web/admin.py:646
|
||||
msgid "Only send to online users"
|
||||
msgstr "Nur an verbundene Benutzer senden"
|
||||
|
||||
#: snikket_web/admin.py:619
|
||||
#: snikket_web/admin.py:650
|
||||
msgid "Post to all users"
|
||||
msgstr "An alle Benutzer senden"
|
||||
|
||||
#: snikket_web/admin.py:623
|
||||
#: snikket_web/admin.py:654
|
||||
msgid "Send preview to yourself"
|
||||
msgstr "Vorschau an dich selbst senden"
|
||||
|
||||
#: snikket_web/admin.py:645
|
||||
#: snikket_web/admin.py:676
|
||||
msgid "Announcement sent!"
|
||||
msgstr "Ankündigung verschickt!"
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
#: snikket_web/infra.py:53
|
||||
msgid "Main"
|
||||
msgstr "Kern"
|
||||
|
||||
#: snikket_web/invite.py:33
|
||||
#: snikket_web/invite.py:35
|
||||
msgid ""
|
||||
"The account data you tried to import is too large to upload. Please contact "
|
||||
"your Snikket operator."
|
||||
msgstr ""
|
||||
"Der Kontoexport ist zu groß. Bitte kontaktiere deinen Snikket-Betreiber."
|
||||
|
||||
#: snikket_web/invite.py:112
|
||||
#: snikket_web/invite.py:114
|
||||
msgid "Username"
|
||||
msgstr "Benutzername"
|
||||
|
||||
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
|
||||
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
|
||||
msgid "Password"
|
||||
msgstr "Passwort"
|
||||
|
||||
#: snikket_web/invite.py:120 snikket_web/invite.py:188
|
||||
#: snikket_web/invite.py:122 snikket_web/invite.py:190
|
||||
msgid "Confirm password"
|
||||
msgstr "Passwort (Bestätigung)"
|
||||
|
||||
#: snikket_web/invite.py:124 snikket_web/invite.py:192
|
||||
#: snikket_web/invite.py:126 snikket_web/invite.py:194
|
||||
msgid "The passwords must match."
|
||||
msgstr "Die Passwörter müssen übereinstimmen."
|
||||
|
||||
#: snikket_web/invite.py:129
|
||||
#: snikket_web/invite.py:131
|
||||
msgid "Create account"
|
||||
msgstr "Konto anlegen"
|
||||
|
||||
#: snikket_web/invite.py:156
|
||||
#: snikket_web/invite.py:158
|
||||
msgid "That username is already taken."
|
||||
msgstr "Dieser Benutzername ist bereits belegt."
|
||||
|
||||
#: snikket_web/invite.py:160 snikket_web/invite.py:225
|
||||
#: snikket_web/invite.py:162 snikket_web/invite.py:227
|
||||
msgid "Registration was declined for unknown reasons."
|
||||
msgstr "Die Registrierung wurde aus unbekannten Gründen abgelehnt."
|
||||
|
||||
#: snikket_web/invite.py:164
|
||||
#: snikket_web/invite.py:166
|
||||
msgid "The username is not valid."
|
||||
msgstr "Der Benutzername ist ungültig."
|
||||
|
||||
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/templates/user_passwd.html:29
|
||||
msgid "Change password"
|
||||
msgstr "Passwort ändern"
|
||||
|
||||
#: snikket_web/invite.py:244
|
||||
#: snikket_web/invite.py:246
|
||||
msgid "Account data file"
|
||||
msgstr "Kontoexportdatei"
|
||||
|
||||
#: snikket_web/invite.py:248
|
||||
#: snikket_web/invite.py:250
|
||||
msgid "Import data"
|
||||
msgstr "Daten importieren"
|
||||
|
||||
#: snikket_web/invite.py:269
|
||||
#: snikket_web/invite.py:271
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The account data you tried to import is in an unknown format. Please upload "
|
||||
@@ -277,24 +278,24 @@ msgstr ""
|
||||
"Der Kontoexport ist in einem unbekannten Format. Es können nur XML-Dateien "
|
||||
"im XEP-0227-Format verarbeitet werden (erhaltenes Format: %(mimetype)s)."
|
||||
|
||||
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/user.py:178
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
#: snikket_web/main.py:36
|
||||
#: snikket_web/main.py:38
|
||||
msgid "Address"
|
||||
msgstr "Adresse"
|
||||
|
||||
#: snikket_web/main.py:46
|
||||
#: snikket_web/main.py:48
|
||||
msgid "Sign in"
|
||||
msgstr "Anmelden"
|
||||
|
||||
#: snikket_web/main.py:55
|
||||
#: snikket_web/main.py:57
|
||||
msgid "Invalid username or password."
|
||||
msgstr "Benutzername oder Passwort falsch."
|
||||
|
||||
#: snikket_web/main.py:83
|
||||
#: snikket_web/main.py:85
|
||||
msgid "Login successful!"
|
||||
msgstr "Anmeldung erfolgreich!"
|
||||
|
||||
@@ -469,7 +470,7 @@ msgstr ""
|
||||
msgid "Software Versions"
|
||||
msgstr "Softwareversionen"
|
||||
|
||||
#: snikket_web/templates/about.html:29
|
||||
#: snikket_web/templates/about.html:32
|
||||
msgid "Back to the main page"
|
||||
msgstr "Zurück zur Hauptseite"
|
||||
|
||||
@@ -585,6 +586,46 @@ msgstr "Rohe Debug-Ausgabe"
|
||||
msgid "Copy complete output"
|
||||
msgstr "Komplette Ausgabe kopieren"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:4
|
||||
#, python-format
|
||||
msgid "Delete circle %(circle_name)s"
|
||||
msgstr "Gemeinschaft %(circle_name)s löschen"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:6
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
#: snikket_web/templates/admin_edit_circle.html:51
|
||||
msgid "Delete circle"
|
||||
msgstr "Gemeinschaft löschen"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:8
|
||||
msgid "Are you sure you want to delete the following circle?"
|
||||
msgstr "Bist du sicher dass du die folgende Gemeinschaft löschen willst?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:13
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Gefahr"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:14
|
||||
msgid ""
|
||||
"The circle and the corresponding chat will be deleted, permanently and "
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
msgstr ""
|
||||
"Die Gemeinschaft und die zugehörigen Daten werden beim Betätigen des Buttons "
|
||||
"unwiderruflich, permanent und sofortig gelöscht. <strong>Es gibt keinen Weg "
|
||||
"zurück!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:17
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_manage_data.html:14
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Zurück"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:4
|
||||
#, python-format
|
||||
msgid "Delete user %(user_name)s"
|
||||
@@ -599,10 +640,6 @@ msgstr "Benutzer löschen"
|
||||
msgid "Are you sure you want to delete the following user?"
|
||||
msgstr "Bist du sicher dass du den folgenden Benutzer löschen willst?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Gefahr"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:16
|
||||
msgid ""
|
||||
"The user and their data will be deleted irrevocably, permanently and "
|
||||
@@ -613,14 +650,6 @@ msgstr ""
|
||||
"Buttons unwiderruflich, permanent und sofortig gelöscht. <strong>Es gibt "
|
||||
"keinen Weg zurück!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Zurück"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:14
|
||||
msgid "This is your main circle"
|
||||
msgstr "Dies ist die Hauptgemeinschaft"
|
||||
@@ -655,10 +684,6 @@ msgstr "Diese Gemeinschaft hat keinen zugehörigen Gruppenchat."
|
||||
msgid "Return to circle list"
|
||||
msgstr "Zurück zur Gemeinschaftsliste"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
msgid "Delete circle"
|
||||
msgstr "Gemeinschaft löschen"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:49
|
||||
msgid "Deleting a circle does not delete any users in the circle."
|
||||
msgstr ""
|
||||
@@ -1153,8 +1178,8 @@ msgstr "App schon installiert?"
|
||||
#: snikket_web/templates/invite_register.html:16
|
||||
#: snikket_web/templates/invite_reset_view.html:21
|
||||
#: snikket_web/templates/invite_view.html:41
|
||||
#: snikket_web/templates/invite_view.html:106
|
||||
#: snikket_web/templates/invite_view.html:134
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
msgid "Open the app"
|
||||
msgstr "App öffnen"
|
||||
|
||||
@@ -1256,7 +1281,6 @@ msgstr ""
|
||||
"Das geht mit Hilfe des Scan-Knopfes in der oberen Leiste."
|
||||
|
||||
#: snikket_web/templates/invite_reset_view.html:26
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"Your camera will turn on. Point it at the square code below until it is "
|
||||
"within the highlighted square on your screen, and wait until the app "
|
||||
@@ -1344,10 +1368,10 @@ msgid ""
|
||||
"data from your previous account, upload it using the form below."
|
||||
msgstr ""
|
||||
"Wenn du dabei bist, dein Konto von einer anderen Snikket-Instanz oder XMPP-"
|
||||
"kompatiblen Dienst umzuziehen, kannst du optional deine Kontodaten ("
|
||||
"Kontakte, Profilinformationen etc.) von deinem vorherigen Konto importieren. "
|
||||
"Wenn du die Daten von deinem alten Konto exportiert hast, lade sie mit dem "
|
||||
"untenstehenden Formular hoch."
|
||||
"kompatiblen Dienst umzuziehen, kannst du optional deine Kontodaten "
|
||||
"(Kontakte, Profilinformationen etc.) von deinem vorherigen Konto "
|
||||
"importieren. Wenn du die Daten von deinem alten Konto exportiert hast, lade "
|
||||
"sie mit dem untenstehenden Formular hoch."
|
||||
|
||||
#: snikket_web/templates/invite_success.html:30
|
||||
msgid "Upload account data"
|
||||
@@ -1399,7 +1423,7 @@ msgid "Get it on Google Play"
|
||||
msgstr "Von Google Play installieren"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:30
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:80
|
||||
msgid "Download on the App Store"
|
||||
msgstr "Laden im App Store"
|
||||
|
||||
@@ -1437,11 +1461,11 @@ msgid "Scan invite code"
|
||||
msgstr "Einladungscode scannen"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:55
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:96
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
#: snikket_web/templates/invite_view.html:124
|
||||
#: snikket_web/templates/invite_view.html:140
|
||||
#: snikket_web/templates/invite_view.html:62
|
||||
#: snikket_web/templates/invite_view.html:74
|
||||
#: snikket_web/templates/invite_view.html:90
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:118
|
||||
msgid "Close"
|
||||
msgstr "Schließen"
|
||||
|
||||
@@ -1454,34 +1478,11 @@ msgstr ""
|
||||
"untenstehenden Code mit deiner Kamera scannst. Dafür kannst du entweder "
|
||||
"einen normalen QR-Scanner nehmen oder die Snikket-App selbst."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:63
|
||||
msgid "Using a QR code scanner"
|
||||
msgstr "Mit einem QR-Code-Scanner"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:65
|
||||
msgid "Using the Snikket app"
|
||||
msgstr "Mit der Snikket-App"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:70
|
||||
msgid ""
|
||||
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
|
||||
msgstr ""
|
||||
"Benutze einen <em>QR-Code</em>-Scanner auf deinem mobilen Gerät um den "
|
||||
"untenstehenden Code zu scannen:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:76
|
||||
msgid ""
|
||||
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
|
||||
"button at the top."
|
||||
msgstr ""
|
||||
"Installiere die Snikket-App auf deinem mobilen Gerät, öffne sie und tippe "
|
||||
"dann auf den 'Scan'-Knopf in der oberen Leiste."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:93
|
||||
#: snikket_web/templates/invite_view.html:71
|
||||
msgid "Install on iOS"
|
||||
msgstr "Installation auf iOS"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"After downloading Snikket from the App Store, you have to return to this "
|
||||
"invite link and tap on \"Open the app\" to proceed."
|
||||
@@ -1489,14 +1490,14 @@ msgstr ""
|
||||
"Nachdem du Snikket vom App Store heruntergeladen hast musst du zu diesem "
|
||||
"Einladungslink zurückkehren und \"App öffnen\" antippen um fortzufahren."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:101
|
||||
#: snikket_web/templates/invite_view.html:79
|
||||
msgid "First download Snikket from the App Store using the button below:"
|
||||
msgstr ""
|
||||
"Lade zunächst Snikket aus dem App Store herunter indem du den folgenden "
|
||||
"Button benutzt:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:103
|
||||
#: snikket_web/templates/invite_view.html:131
|
||||
#: snikket_web/templates/invite_view.html:81
|
||||
#: snikket_web/templates/invite_view.html:109
|
||||
msgid ""
|
||||
"After the installation is complete, you can return to this page and tap the "
|
||||
"\"Open the app\" button to continue with the setup:"
|
||||
@@ -1505,12 +1506,12 @@ msgstr ""
|
||||
"zurückkehren und unten auf \"App öffnen\" tippen um die Einrichtung "
|
||||
"abzuschließen:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:121
|
||||
#: snikket_web/templates/invite_view.html:130
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:108
|
||||
msgid "Install via F-Droid"
|
||||
msgstr "Installation über F-Droid"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:127
|
||||
#: snikket_web/templates/invite_view.html:105
|
||||
msgid ""
|
||||
"After installing Snikket via F-Droid, you have to return to this invite link "
|
||||
"and tap on \"Open the app\" to proceed."
|
||||
@@ -1518,7 +1519,7 @@ msgstr ""
|
||||
"Nachdem du Snikket über F-Droid installiert hast, musst du auf diese Seite "
|
||||
"zurückkehren und \"App öffnen\" antippen um fortzufahren."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:129
|
||||
#: snikket_web/templates/invite_view.html:107
|
||||
msgid "First install Snikket from F-Droid using the button below:"
|
||||
msgstr "Installiere Snikket zunächst aus F-Droid mit dem folgenden Button:"
|
||||
|
||||
@@ -1671,6 +1672,26 @@ msgstr ""
|
||||
"Hier kannst du einstellen, wer deine Profilinformationen, wie Bild oder "
|
||||
"Anzeigename einsehen kann."
|
||||
|
||||
#~ msgid "Using a QR code scanner"
|
||||
#~ msgstr "Mit einem QR-Code-Scanner"
|
||||
|
||||
#~ msgid "Using the Snikket app"
|
||||
#~ msgstr "Mit der Snikket-App"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Use a <em>QR code</em> scanner on your mobile device to scan the code "
|
||||
#~ "below:"
|
||||
#~ msgstr ""
|
||||
#~ "Benutze einen <em>QR-Code</em>-Scanner auf deinem mobilen Gerät um den "
|
||||
#~ "untenstehenden Code zu scannen:"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Install the Snikket app on your mobile device, open it, and tap the "
|
||||
#~ "'Scan' button at the top."
|
||||
#~ msgstr ""
|
||||
#~ "Installiere die Snikket-App auf deinem mobilen Gerät, öffne sie und tippe "
|
||||
#~ "dann auf den 'Scan'-Knopf in der oberen Leiste."
|
||||
|
||||
#~ msgid "Create password reset link for %(user_name)s"
|
||||
#~ msgstr "Link zum Zurücksetzen des Passwortes von %(user_name)s erzeugen"
|
||||
|
||||
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
|
||||
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
|
||||
"PO-Revision-Date: 2021-06-19 15:01+0000\n"
|
||||
"Last-Translator: Jonas Schäfer <jonas@zombofant.net>\n"
|
||||
"Language-Team: English <https://i18n.sotecware.net/projects/snikket/web-"
|
||||
@@ -20,320 +20,321 @@ msgstr ""
|
||||
"X-Generator: Weblate 4.5.1\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Login name"
|
||||
|
||||
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
|
||||
msgid "Display name"
|
||||
msgstr "Display name"
|
||||
|
||||
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
|
||||
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
|
||||
msgid "Access Level"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:78
|
||||
#: snikket_web/admin.py:79
|
||||
msgid "Limited"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:79
|
||||
#: snikket_web/admin.py:80
|
||||
msgid "Normal user"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:80
|
||||
#: snikket_web/admin.py:81
|
||||
#, fuzzy
|
||||
#| msgid "Admin area"
|
||||
msgid "Administrator"
|
||||
msgstr "Admin area"
|
||||
|
||||
#: snikket_web/admin.py:85
|
||||
#: snikket_web/admin.py:86
|
||||
#, fuzzy
|
||||
#| msgid "Update circle"
|
||||
msgid "Update user"
|
||||
msgstr "Update circle"
|
||||
|
||||
#: snikket_web/admin.py:89
|
||||
#: snikket_web/admin.py:90
|
||||
#, fuzzy
|
||||
#| msgid "Create password reset links or delete users."
|
||||
msgid "Create password reset link"
|
||||
msgstr "Create password reset links or delete users."
|
||||
|
||||
#: snikket_web/admin.py:107
|
||||
#: snikket_web/admin.py:108
|
||||
#, fuzzy
|
||||
#| msgid "Password reset link for %(user_name)s"
|
||||
msgid "Password reset link created"
|
||||
msgstr "Password reset link for %(user_name)s"
|
||||
|
||||
#: snikket_web/admin.py:122
|
||||
#: snikket_web/admin.py:123
|
||||
#, fuzzy
|
||||
#| msgid "User information"
|
||||
msgid "User information updated."
|
||||
msgstr "User information"
|
||||
|
||||
#: snikket_web/admin.py:144
|
||||
#: snikket_web/admin.py:145
|
||||
msgid "Delete user permanently"
|
||||
msgstr "Delete user permanently"
|
||||
|
||||
#: snikket_web/admin.py:157
|
||||
#: snikket_web/admin.py:158
|
||||
#, fuzzy
|
||||
#| msgid "deleted"
|
||||
msgid "User deleted"
|
||||
msgstr "deleted"
|
||||
|
||||
#: snikket_web/admin.py:195
|
||||
#: snikket_web/admin.py:196
|
||||
#, fuzzy
|
||||
#| msgid "Password reset link for %(user_name)s"
|
||||
msgid "Password reset link not found"
|
||||
msgstr "Password reset link for %(user_name)s"
|
||||
|
||||
#: snikket_web/admin.py:207
|
||||
#: snikket_web/admin.py:208
|
||||
#, fuzzy
|
||||
#| msgid "Create password reset links or delete users."
|
||||
msgid "Password reset link deleted"
|
||||
msgstr "Create password reset links or delete users."
|
||||
|
||||
#: snikket_web/admin.py:227
|
||||
#: snikket_web/admin.py:228
|
||||
msgid "Invite to circle"
|
||||
msgstr "Invite to circle"
|
||||
|
||||
#: snikket_web/admin.py:233
|
||||
#: snikket_web/admin.py:234
|
||||
msgid "At least one circle must be selected"
|
||||
msgstr "At least one circle must be selected"
|
||||
|
||||
#: snikket_web/admin.py:238
|
||||
#: snikket_web/admin.py:239
|
||||
msgid "Valid for"
|
||||
msgstr "Valid for"
|
||||
|
||||
#: snikket_web/admin.py:240
|
||||
#: snikket_web/admin.py:241
|
||||
msgid "One hour"
|
||||
msgstr "One hour"
|
||||
|
||||
#: snikket_web/admin.py:241
|
||||
#: snikket_web/admin.py:242
|
||||
msgid "Twelve hours"
|
||||
msgstr "Twelve hours"
|
||||
|
||||
#: snikket_web/admin.py:242
|
||||
#: snikket_web/admin.py:243
|
||||
msgid "One day"
|
||||
msgstr "One day"
|
||||
|
||||
#: snikket_web/admin.py:243
|
||||
#: snikket_web/admin.py:244
|
||||
msgid "One week"
|
||||
msgstr "One week"
|
||||
|
||||
#: snikket_web/admin.py:244
|
||||
#: snikket_web/admin.py:245
|
||||
msgid "Four weeks"
|
||||
msgstr "Four weeks"
|
||||
|
||||
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
|
||||
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
|
||||
msgid "Invitation type"
|
||||
msgstr "Invitation type"
|
||||
|
||||
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
|
||||
msgid "Individual"
|
||||
msgstr "Individual"
|
||||
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
|
||||
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
|
||||
msgid "Group"
|
||||
msgstr "Group"
|
||||
|
||||
#: snikket_web/admin.py:259
|
||||
#: snikket_web/admin.py:260
|
||||
msgid "New invitation link"
|
||||
msgstr "New invitation link"
|
||||
|
||||
#: snikket_web/admin.py:321
|
||||
#: snikket_web/admin.py:322
|
||||
msgid "Revoke"
|
||||
msgstr "Revoke"
|
||||
|
||||
#: snikket_web/admin.py:345
|
||||
#: snikket_web/admin.py:346
|
||||
#, fuzzy
|
||||
#| msgid "Invitation type"
|
||||
msgid "Invitation created"
|
||||
msgstr "Invitation type"
|
||||
|
||||
#: snikket_web/admin.py:361
|
||||
#: snikket_web/admin.py:362
|
||||
#, fuzzy
|
||||
#| msgid "New invitation link"
|
||||
msgid "No such invitation exists"
|
||||
msgstr "New invitation link"
|
||||
|
||||
#: snikket_web/admin.py:376
|
||||
#: snikket_web/admin.py:377
|
||||
#, fuzzy
|
||||
#| msgid "Invitation type"
|
||||
msgid "Invitation revoked"
|
||||
msgstr "Invitation type"
|
||||
|
||||
#: snikket_web/admin.py:393 snikket_web/admin.py:441
|
||||
#: snikket_web/admin.py:394 snikket_web/admin.py:442
|
||||
#: snikket_web/templates/admin_delete_circle.html:10
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
|
||||
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
|
||||
msgid "Create circle"
|
||||
msgstr "Create circle"
|
||||
|
||||
#: snikket_web/admin.py:428
|
||||
#: snikket_web/admin.py:429
|
||||
#, fuzzy
|
||||
#| msgid "Circle name"
|
||||
msgid "Circle created"
|
||||
msgstr "Circle name"
|
||||
|
||||
#: snikket_web/admin.py:446
|
||||
#: snikket_web/admin.py:447
|
||||
msgid "Select user"
|
||||
msgstr "Select user"
|
||||
|
||||
#: snikket_web/admin.py:451
|
||||
#: snikket_web/admin.py:452
|
||||
msgid "Update circle"
|
||||
msgstr "Update circle"
|
||||
|
||||
#: snikket_web/admin.py:455
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Delete circle permanently"
|
||||
|
||||
#: snikket_web/admin.py:461
|
||||
#: snikket_web/admin.py:458
|
||||
msgid "Add user"
|
||||
msgstr "Add user"
|
||||
|
||||
#: snikket_web/admin.py:477
|
||||
#: snikket_web/admin.py:474 snikket_web/admin.py:563
|
||||
#, fuzzy
|
||||
#| msgid "No circles"
|
||||
msgid "No such circle exists"
|
||||
msgstr "No circles"
|
||||
|
||||
#: snikket_web/admin.py:514
|
||||
#: snikket_web/admin.py:511
|
||||
#, fuzzy
|
||||
#| msgid "Circle name"
|
||||
msgid "Circle data updated"
|
||||
msgstr "Circle name"
|
||||
|
||||
#: snikket_web/admin.py:520
|
||||
#, fuzzy
|
||||
#| msgid "deleted"
|
||||
msgid "Circle deleted"
|
||||
msgstr "deleted"
|
||||
|
||||
#: snikket_web/admin.py:531
|
||||
#: snikket_web/admin.py:521
|
||||
#, fuzzy
|
||||
#| msgid "Invite to circle"
|
||||
msgid "User added to circle"
|
||||
msgstr "Invite to circle"
|
||||
|
||||
#: snikket_web/admin.py:540
|
||||
#: snikket_web/admin.py:530
|
||||
#, fuzzy
|
||||
#| msgid "Remove user %(username)s from circle"
|
||||
msgid "User removed from circle"
|
||||
msgstr "Remove user %(username)s from circle"
|
||||
|
||||
#: snikket_web/admin.py:609
|
||||
#: snikket_web/admin.py:547
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Delete circle permanently"
|
||||
|
||||
#: snikket_web/admin.py:574
|
||||
#, fuzzy
|
||||
#| msgid "deleted"
|
||||
msgid "Circle deleted"
|
||||
msgstr "deleted"
|
||||
|
||||
#: snikket_web/admin.py:640
|
||||
msgid "Message contents"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:615
|
||||
#: snikket_web/admin.py:646
|
||||
msgid "Only send to online users"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:619
|
||||
#: snikket_web/admin.py:650
|
||||
msgid "Post to all users"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:623
|
||||
#: snikket_web/admin.py:654
|
||||
msgid "Send preview to yourself"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:645
|
||||
#: snikket_web/admin.py:676
|
||||
msgid "Announcement sent!"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
#: snikket_web/infra.py:53
|
||||
msgid "Main"
|
||||
msgstr "Main"
|
||||
|
||||
#: snikket_web/invite.py:33
|
||||
#: snikket_web/invite.py:35
|
||||
msgid ""
|
||||
"The account data you tried to import is too large to upload. Please contact "
|
||||
"your Snikket operator."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:112
|
||||
#: snikket_web/invite.py:114
|
||||
msgid "Username"
|
||||
msgstr "Username"
|
||||
|
||||
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
|
||||
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
|
||||
msgid "Password"
|
||||
msgstr "Password"
|
||||
|
||||
#: snikket_web/invite.py:120 snikket_web/invite.py:188
|
||||
#: snikket_web/invite.py:122 snikket_web/invite.py:190
|
||||
msgid "Confirm password"
|
||||
msgstr "Confirm password"
|
||||
|
||||
#: snikket_web/invite.py:124 snikket_web/invite.py:192
|
||||
#: snikket_web/invite.py:126 snikket_web/invite.py:194
|
||||
#, fuzzy
|
||||
#| msgid "The passwords must match"
|
||||
msgid "The passwords must match."
|
||||
msgstr "The passwords must match"
|
||||
|
||||
#: snikket_web/invite.py:129
|
||||
#: snikket_web/invite.py:131
|
||||
msgid "Create account"
|
||||
msgstr "Create account"
|
||||
|
||||
#: snikket_web/invite.py:156
|
||||
#: snikket_web/invite.py:158
|
||||
#, fuzzy
|
||||
#| msgid "That username is already taken"
|
||||
msgid "That username is already taken."
|
||||
msgstr "That username is already taken"
|
||||
|
||||
#: snikket_web/invite.py:160 snikket_web/invite.py:225
|
||||
#: snikket_web/invite.py:162 snikket_web/invite.py:227
|
||||
#, fuzzy
|
||||
#| msgid "Registration was declined for unknown reasons"
|
||||
msgid "Registration was declined for unknown reasons."
|
||||
msgstr "Registration was declined for unknown reasons"
|
||||
|
||||
#: snikket_web/invite.py:164
|
||||
#: snikket_web/invite.py:166
|
||||
#, fuzzy
|
||||
#| msgid "The username is not valid"
|
||||
msgid "The username is not valid."
|
||||
msgstr "The username is not valid"
|
||||
|
||||
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/templates/user_passwd.html:29
|
||||
msgid "Change password"
|
||||
msgstr "Change password"
|
||||
|
||||
#: snikket_web/invite.py:244
|
||||
#: snikket_web/invite.py:246
|
||||
msgid "Account data file"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:248
|
||||
#: snikket_web/invite.py:250
|
||||
msgid "Import data"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:269
|
||||
#: snikket_web/invite.py:271
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The account data you tried to import is in an unknown format. Please upload "
|
||||
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/user.py:178
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/main.py:36
|
||||
#: snikket_web/main.py:38
|
||||
msgid "Address"
|
||||
msgstr "Address"
|
||||
|
||||
#: snikket_web/main.py:46
|
||||
#: snikket_web/main.py:48
|
||||
msgid "Sign in"
|
||||
msgstr "Sign in"
|
||||
|
||||
#: snikket_web/main.py:55
|
||||
#: snikket_web/main.py:57
|
||||
msgid "Invalid username or password."
|
||||
msgstr "Invalid username or password."
|
||||
|
||||
#: snikket_web/main.py:83
|
||||
#: snikket_web/main.py:85
|
||||
msgid "Login successful!"
|
||||
msgstr ""
|
||||
|
||||
@@ -509,7 +510,7 @@ msgstr ""
|
||||
msgid "Software Versions"
|
||||
msgstr "Software Versions"
|
||||
|
||||
#: snikket_web/templates/about.html:29
|
||||
#: snikket_web/templates/about.html:32
|
||||
msgid "Back to the main page"
|
||||
msgstr "Back to the main page"
|
||||
|
||||
@@ -625,6 +626,54 @@ msgstr "Raw debug dump"
|
||||
msgid "Copy complete output"
|
||||
msgstr "Copy complete output"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:4
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Edit circle %(circle_name)s"
|
||||
msgid "Delete circle %(circle_name)s"
|
||||
msgstr "Edit circle %(circle_name)s"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:6
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
#: snikket_web/templates/admin_edit_circle.html:51
|
||||
msgid "Delete circle"
|
||||
msgstr "Delete circle"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:8
|
||||
#, fuzzy
|
||||
#| msgid "Are you sure you want to delete the following user?"
|
||||
msgid "Are you sure you want to delete the following circle?"
|
||||
msgstr "Are you sure you want to delete the following user?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:13
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Danger"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:14
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "The user and their data will be deleted irrevocably, permanently and "
|
||||
#| "immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
#| "strong>"
|
||||
msgid ""
|
||||
"The circle and the corresponding chat will be deleted, permanently and "
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
msgstr ""
|
||||
"The user and their data will be deleted irrevocably, permanently and "
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:17
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_manage_data.html:14
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Back"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:4
|
||||
#, python-format
|
||||
msgid "Delete user %(user_name)s"
|
||||
@@ -639,10 +688,6 @@ msgstr "Delete user"
|
||||
msgid "Are you sure you want to delete the following user?"
|
||||
msgstr "Are you sure you want to delete the following user?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Danger"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:16
|
||||
msgid ""
|
||||
"The user and their data will be deleted irrevocably, permanently and "
|
||||
@@ -653,14 +698,6 @@ msgstr ""
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Back"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:14
|
||||
msgid "This is your main circle"
|
||||
msgstr "This is your main circle"
|
||||
@@ -693,10 +730,6 @@ msgstr "This circle has no group chat associated."
|
||||
msgid "Return to circle list"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
msgid "Delete circle"
|
||||
msgstr "Delete circle"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:49
|
||||
msgid "Deleting a circle does not delete any users in the circle."
|
||||
msgstr "Deleting a circle does not delete any users in the circle."
|
||||
@@ -1190,8 +1223,8 @@ msgstr "App already installed?"
|
||||
#: snikket_web/templates/invite_register.html:16
|
||||
#: snikket_web/templates/invite_reset_view.html:21
|
||||
#: snikket_web/templates/invite_view.html:41
|
||||
#: snikket_web/templates/invite_view.html:106
|
||||
#: snikket_web/templates/invite_view.html:134
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
msgid "Open the app"
|
||||
msgstr "Open the app"
|
||||
|
||||
@@ -1289,7 +1322,6 @@ msgstr ""
|
||||
"Scan button at the top."
|
||||
|
||||
#: snikket_web/templates/invite_reset_view.html:26
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"Your camera will turn on. Point it at the square code below until it is "
|
||||
"within the highlighted square on your screen, and wait until the app "
|
||||
@@ -1426,7 +1458,7 @@ msgid "Get it on Google Play"
|
||||
msgstr "Get it on Google Play"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:30
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:80
|
||||
msgid "Download on the App Store"
|
||||
msgstr "Download on the App Store"
|
||||
|
||||
@@ -1462,11 +1494,11 @@ msgid "Scan invite code"
|
||||
msgstr "Scan invite code"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:55
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:96
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
#: snikket_web/templates/invite_view.html:124
|
||||
#: snikket_web/templates/invite_view.html:140
|
||||
#: snikket_web/templates/invite_view.html:62
|
||||
#: snikket_web/templates/invite_view.html:74
|
||||
#: snikket_web/templates/invite_view.html:90
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:118
|
||||
msgid "Close"
|
||||
msgstr "Close"
|
||||
|
||||
@@ -1478,61 +1510,39 @@ msgstr ""
|
||||
"You can transfer this invite to your mobile device by scanning a code with "
|
||||
"your camera. You can use either a QR scanner app or the Snikket app itself."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:63
|
||||
msgid "Using a QR code scanner"
|
||||
msgstr "Using a QR code scanner"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:65
|
||||
msgid "Using the Snikket app"
|
||||
msgstr "Using the Snikket app"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:70
|
||||
msgid ""
|
||||
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
|
||||
msgstr ""
|
||||
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:76
|
||||
msgid ""
|
||||
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
|
||||
"button at the top."
|
||||
msgstr ""
|
||||
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
|
||||
"button at the top."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:93
|
||||
#: snikket_web/templates/invite_view.html:71
|
||||
msgid "Install on iOS"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"After downloading Snikket from the App Store, you have to return to this "
|
||||
"invite link and tap on \"Open the app\" to proceed."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:101
|
||||
#: snikket_web/templates/invite_view.html:79
|
||||
msgid "First download Snikket from the App Store using the button below:"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:103
|
||||
#: snikket_web/templates/invite_view.html:131
|
||||
#: snikket_web/templates/invite_view.html:81
|
||||
#: snikket_web/templates/invite_view.html:109
|
||||
msgid ""
|
||||
"After the installation is complete, you can return to this page and tap the "
|
||||
"\"Open the app\" button to continue with the setup:"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:121
|
||||
#: snikket_web/templates/invite_view.html:130
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:108
|
||||
msgid "Install via F-Droid"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:127
|
||||
#: snikket_web/templates/invite_view.html:105
|
||||
msgid ""
|
||||
"After installing Snikket via F-Droid, you have to return to this invite link "
|
||||
"and tap on \"Open the app\" to proceed."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:129
|
||||
#: snikket_web/templates/invite_view.html:107
|
||||
msgid "First install Snikket from F-Droid using the button below:"
|
||||
msgstr ""
|
||||
|
||||
@@ -1683,6 +1693,26 @@ msgstr ""
|
||||
"This section allows you to control who can see your profile information, "
|
||||
"like avatar and nickname."
|
||||
|
||||
#~ msgid "Using a QR code scanner"
|
||||
#~ msgstr "Using a QR code scanner"
|
||||
|
||||
#~ msgid "Using the Snikket app"
|
||||
#~ msgstr "Using the Snikket app"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Use a <em>QR code</em> scanner on your mobile device to scan the code "
|
||||
#~ "below:"
|
||||
#~ msgstr ""
|
||||
#~ "Use a <em>QR code</em> scanner on your mobile device to scan the code "
|
||||
#~ "below:"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Install the Snikket app on your mobile device, open it, and tap the "
|
||||
#~ "'Scan' button at the top."
|
||||
#~ msgstr ""
|
||||
#~ "Install the Snikket app on your mobile device, open it, and tap the "
|
||||
#~ "'Scan' button at the top."
|
||||
|
||||
#~ msgid "Create password reset link for %(user_name)s"
|
||||
#~ msgstr "Create password reset link for %(user_name)s"
|
||||
|
||||
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
|
||||
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
|
||||
"PO-Revision-Date: 2021-06-19 15:01+0000\n"
|
||||
"Last-Translator: Jonas Schäfer <jonas@zombofant.net>\n"
|
||||
"Language-Team: English (United Kingdom) <https://i18n.sotecware.net/projects/"
|
||||
@@ -20,322 +20,323 @@ msgstr ""
|
||||
"X-Generator: Weblate 4.5.1\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Login name"
|
||||
|
||||
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
|
||||
msgid "Display name"
|
||||
msgstr "Display name"
|
||||
|
||||
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
|
||||
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
|
||||
msgid "Access Level"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:78
|
||||
#: snikket_web/admin.py:79
|
||||
msgid "Limited"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:79
|
||||
#: snikket_web/admin.py:80
|
||||
msgid "Normal user"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:80
|
||||
#: snikket_web/admin.py:81
|
||||
#, fuzzy
|
||||
#| msgid "Admin dashboard"
|
||||
msgid "Administrator"
|
||||
msgstr "Admin dashboard"
|
||||
|
||||
#: snikket_web/admin.py:85
|
||||
#: snikket_web/admin.py:86
|
||||
#, fuzzy
|
||||
#| msgid "Create circle"
|
||||
msgid "Update user"
|
||||
msgstr "Create circle"
|
||||
|
||||
#: snikket_web/admin.py:89
|
||||
#: snikket_web/admin.py:90
|
||||
#, fuzzy
|
||||
#| msgid "Create password reset links or delete users."
|
||||
msgid "Create password reset link"
|
||||
msgstr "Create password reset links or delete users."
|
||||
|
||||
#: snikket_web/admin.py:107
|
||||
#: snikket_web/admin.py:108
|
||||
#, fuzzy
|
||||
#| msgid "Password reset link for %(user_name)s"
|
||||
msgid "Password reset link created"
|
||||
msgstr "Password reset link for %(user_name)s"
|
||||
|
||||
#: snikket_web/admin.py:122
|
||||
#: snikket_web/admin.py:123
|
||||
#, fuzzy
|
||||
#| msgid "User information"
|
||||
msgid "User information updated."
|
||||
msgstr "User information"
|
||||
|
||||
#: snikket_web/admin.py:144
|
||||
#: snikket_web/admin.py:145
|
||||
msgid "Delete user permanently"
|
||||
msgstr "Delete user permanently"
|
||||
|
||||
#: snikket_web/admin.py:157
|
||||
#: snikket_web/admin.py:158
|
||||
#, fuzzy
|
||||
#| msgid "deleted"
|
||||
msgid "User deleted"
|
||||
msgstr "deleted"
|
||||
|
||||
#: snikket_web/admin.py:195
|
||||
#: snikket_web/admin.py:196
|
||||
#, fuzzy
|
||||
#| msgid "Password reset link for %(user_name)s"
|
||||
msgid "Password reset link not found"
|
||||
msgstr "Password reset link for %(user_name)s"
|
||||
|
||||
#: snikket_web/admin.py:207
|
||||
#: snikket_web/admin.py:208
|
||||
#, fuzzy
|
||||
#| msgid "Create password reset links or delete users."
|
||||
msgid "Password reset link deleted"
|
||||
msgstr "Create password reset links or delete users."
|
||||
|
||||
#: snikket_web/admin.py:227
|
||||
#: snikket_web/admin.py:228
|
||||
msgid "Invite to circle"
|
||||
msgstr "Invite to circle"
|
||||
|
||||
#: snikket_web/admin.py:233
|
||||
#: snikket_web/admin.py:234
|
||||
msgid "At least one circle must be selected"
|
||||
msgstr "At least one circle must be selected"
|
||||
|
||||
#: snikket_web/admin.py:238
|
||||
#: snikket_web/admin.py:239
|
||||
msgid "Valid for"
|
||||
msgstr "Valid for"
|
||||
|
||||
#: snikket_web/admin.py:240
|
||||
#: snikket_web/admin.py:241
|
||||
msgid "One hour"
|
||||
msgstr "One hour"
|
||||
|
||||
#: snikket_web/admin.py:241
|
||||
#: snikket_web/admin.py:242
|
||||
msgid "Twelve hours"
|
||||
msgstr "Twelve hours"
|
||||
|
||||
#: snikket_web/admin.py:242
|
||||
#: snikket_web/admin.py:243
|
||||
msgid "One day"
|
||||
msgstr "One day"
|
||||
|
||||
#: snikket_web/admin.py:243
|
||||
#: snikket_web/admin.py:244
|
||||
msgid "One week"
|
||||
msgstr "One week"
|
||||
|
||||
#: snikket_web/admin.py:244
|
||||
#: snikket_web/admin.py:245
|
||||
msgid "Four weeks"
|
||||
msgstr "Four weeks"
|
||||
|
||||
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
|
||||
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
|
||||
msgid "Invitation type"
|
||||
msgstr "Invitation type"
|
||||
|
||||
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
|
||||
msgid "Individual"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
|
||||
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
|
||||
msgid "Group"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:259
|
||||
#: snikket_web/admin.py:260
|
||||
msgid "New invitation link"
|
||||
msgstr "New invitation link"
|
||||
|
||||
#: snikket_web/admin.py:321
|
||||
#: snikket_web/admin.py:322
|
||||
msgid "Revoke"
|
||||
msgstr "Revoke"
|
||||
|
||||
#: snikket_web/admin.py:345
|
||||
#: snikket_web/admin.py:346
|
||||
#, fuzzy
|
||||
#| msgid "Invitation type"
|
||||
msgid "Invitation created"
|
||||
msgstr "Invitation type"
|
||||
|
||||
#: snikket_web/admin.py:361
|
||||
#: snikket_web/admin.py:362
|
||||
#, fuzzy
|
||||
#| msgid "New invitation link"
|
||||
msgid "No such invitation exists"
|
||||
msgstr "New invitation link"
|
||||
|
||||
#: snikket_web/admin.py:376
|
||||
#: snikket_web/admin.py:377
|
||||
#, fuzzy
|
||||
#| msgid "Invitation type"
|
||||
msgid "Invitation revoked"
|
||||
msgstr "Invitation type"
|
||||
|
||||
#: snikket_web/admin.py:393 snikket_web/admin.py:441
|
||||
#: snikket_web/admin.py:394 snikket_web/admin.py:442
|
||||
#: snikket_web/templates/admin_delete_circle.html:10
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
|
||||
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
|
||||
msgid "Create circle"
|
||||
msgstr "Create circle"
|
||||
|
||||
#: snikket_web/admin.py:428
|
||||
#: snikket_web/admin.py:429
|
||||
#, fuzzy
|
||||
#| msgid "Circle name"
|
||||
msgid "Circle created"
|
||||
msgstr "Circle name"
|
||||
|
||||
#: snikket_web/admin.py:446
|
||||
#: snikket_web/admin.py:447
|
||||
msgid "Select user"
|
||||
msgstr "Select user"
|
||||
|
||||
#: snikket_web/admin.py:451
|
||||
#: snikket_web/admin.py:452
|
||||
#, fuzzy
|
||||
#| msgid "Create circle"
|
||||
msgid "Update circle"
|
||||
msgstr "Create circle"
|
||||
|
||||
#: snikket_web/admin.py:455
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Delete circle permanently"
|
||||
|
||||
#: snikket_web/admin.py:461
|
||||
#: snikket_web/admin.py:458
|
||||
msgid "Add user"
|
||||
msgstr "Add user"
|
||||
|
||||
#: snikket_web/admin.py:477
|
||||
#: snikket_web/admin.py:474 snikket_web/admin.py:563
|
||||
#, fuzzy
|
||||
#| msgid "No circles"
|
||||
msgid "No such circle exists"
|
||||
msgstr "No circles"
|
||||
|
||||
#: snikket_web/admin.py:514
|
||||
#: snikket_web/admin.py:511
|
||||
#, fuzzy
|
||||
#| msgid "Circle name"
|
||||
msgid "Circle data updated"
|
||||
msgstr "Circle name"
|
||||
|
||||
#: snikket_web/admin.py:520
|
||||
#, fuzzy
|
||||
#| msgid "deleted"
|
||||
msgid "Circle deleted"
|
||||
msgstr "deleted"
|
||||
|
||||
#: snikket_web/admin.py:531
|
||||
#: snikket_web/admin.py:521
|
||||
#, fuzzy
|
||||
#| msgid "Invite to circle"
|
||||
msgid "User added to circle"
|
||||
msgstr "Invite to circle"
|
||||
|
||||
#: snikket_web/admin.py:540
|
||||
#: snikket_web/admin.py:530
|
||||
#, fuzzy
|
||||
#| msgid "Remove user %(username)s from circle"
|
||||
msgid "User removed from circle"
|
||||
msgstr "Remove user %(username)s from circle"
|
||||
|
||||
#: snikket_web/admin.py:609
|
||||
#: snikket_web/admin.py:547
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Delete circle permanently"
|
||||
|
||||
#: snikket_web/admin.py:574
|
||||
#, fuzzy
|
||||
#| msgid "deleted"
|
||||
msgid "Circle deleted"
|
||||
msgstr "deleted"
|
||||
|
||||
#: snikket_web/admin.py:640
|
||||
msgid "Message contents"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:615
|
||||
#: snikket_web/admin.py:646
|
||||
msgid "Only send to online users"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:619
|
||||
#: snikket_web/admin.py:650
|
||||
msgid "Post to all users"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:623
|
||||
#: snikket_web/admin.py:654
|
||||
msgid "Send preview to yourself"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:645
|
||||
#: snikket_web/admin.py:676
|
||||
msgid "Announcement sent!"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
#: snikket_web/infra.py:53
|
||||
msgid "Main"
|
||||
msgstr "Main"
|
||||
|
||||
#: snikket_web/invite.py:33
|
||||
#: snikket_web/invite.py:35
|
||||
msgid ""
|
||||
"The account data you tried to import is too large to upload. Please contact "
|
||||
"your Snikket operator."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:112
|
||||
#: snikket_web/invite.py:114
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
|
||||
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
|
||||
msgid "Password"
|
||||
msgstr "Password"
|
||||
|
||||
#: snikket_web/invite.py:120 snikket_web/invite.py:188
|
||||
#: snikket_web/invite.py:122 snikket_web/invite.py:190
|
||||
#, fuzzy
|
||||
#| msgid "Confirm new password"
|
||||
msgid "Confirm password"
|
||||
msgstr "Confirm new password"
|
||||
|
||||
#: snikket_web/invite.py:124 snikket_web/invite.py:192
|
||||
#: snikket_web/invite.py:126 snikket_web/invite.py:194
|
||||
#, fuzzy
|
||||
#| msgid "The passwords must match"
|
||||
msgid "The passwords must match."
|
||||
msgstr "The passwords must match"
|
||||
|
||||
#: snikket_web/invite.py:129
|
||||
#: snikket_web/invite.py:131
|
||||
#, fuzzy
|
||||
#| msgid "Create circle"
|
||||
msgid "Create account"
|
||||
msgstr "Create circle"
|
||||
|
||||
#: snikket_web/invite.py:156
|
||||
#: snikket_web/invite.py:158
|
||||
msgid "That username is already taken."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:160 snikket_web/invite.py:225
|
||||
#: snikket_web/invite.py:162 snikket_web/invite.py:227
|
||||
msgid "Registration was declined for unknown reasons."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:164
|
||||
#: snikket_web/invite.py:166
|
||||
msgid "The username is not valid."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/templates/user_passwd.html:29
|
||||
msgid "Change password"
|
||||
msgstr "Change password"
|
||||
|
||||
#: snikket_web/invite.py:244
|
||||
#: snikket_web/invite.py:246
|
||||
msgid "Account data file"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:248
|
||||
#: snikket_web/invite.py:250
|
||||
msgid "Import data"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:269
|
||||
#: snikket_web/invite.py:271
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The account data you tried to import is in an unknown format. Please upload "
|
||||
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/user.py:178
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/main.py:36
|
||||
#: snikket_web/main.py:38
|
||||
msgid "Address"
|
||||
msgstr "Address"
|
||||
|
||||
#: snikket_web/main.py:46
|
||||
#: snikket_web/main.py:48
|
||||
msgid "Sign in"
|
||||
msgstr "Sign in"
|
||||
|
||||
#: snikket_web/main.py:55
|
||||
#: snikket_web/main.py:57
|
||||
#, fuzzy
|
||||
#| msgid "Invalid user name or password."
|
||||
msgid "Invalid username or password."
|
||||
msgstr "Invalid user name or password."
|
||||
|
||||
#: snikket_web/main.py:83
|
||||
#: snikket_web/main.py:85
|
||||
msgid "Login successful!"
|
||||
msgstr ""
|
||||
|
||||
@@ -511,7 +512,7 @@ msgstr ""
|
||||
msgid "Software Versions"
|
||||
msgstr "Software Versions"
|
||||
|
||||
#: snikket_web/templates/about.html:29
|
||||
#: snikket_web/templates/about.html:32
|
||||
msgid "Back to the main page"
|
||||
msgstr "Back to the main page"
|
||||
|
||||
@@ -625,6 +626,46 @@ msgstr "Raw debug dump"
|
||||
msgid "Copy complete output"
|
||||
msgstr "Copy complete output"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:4
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Edit circle %(circle_name)s"
|
||||
msgid "Delete circle %(circle_name)s"
|
||||
msgstr "Edit circle %(circle_name)s"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:6
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
#: snikket_web/templates/admin_edit_circle.html:51
|
||||
msgid "Delete circle"
|
||||
msgstr "Delete circle"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:8
|
||||
#, fuzzy
|
||||
#| msgid "Are you sure you want to delete the following user?"
|
||||
msgid "Are you sure you want to delete the following circle?"
|
||||
msgstr "Are you sure you want to delete the following user?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:13
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Danger"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:14
|
||||
msgid ""
|
||||
"The circle and the corresponding chat will be deleted, permanently and "
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:17
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_manage_data.html:14
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Back"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:4
|
||||
#, python-format
|
||||
msgid "Delete user %(user_name)s"
|
||||
@@ -639,10 +680,6 @@ msgstr "Delete user"
|
||||
msgid "Are you sure you want to delete the following user?"
|
||||
msgstr "Are you sure you want to delete the following user?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Danger"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:16
|
||||
msgid ""
|
||||
"The user and their data will be deleted irrevocably, permanently and "
|
||||
@@ -650,14 +687,6 @@ msgid ""
|
||||
"strong>"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Back"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:14
|
||||
msgid "This is your main circle"
|
||||
msgstr ""
|
||||
@@ -694,10 +723,6 @@ msgstr ""
|
||||
msgid "Return to circle list"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
msgid "Delete circle"
|
||||
msgstr "Delete circle"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:49
|
||||
msgid "Deleting a circle does not delete any users in the circle."
|
||||
msgstr "Deleting a circle does not delete any users in the circle."
|
||||
@@ -1195,8 +1220,8 @@ msgstr ""
|
||||
#: snikket_web/templates/invite_register.html:16
|
||||
#: snikket_web/templates/invite_reset_view.html:21
|
||||
#: snikket_web/templates/invite_view.html:41
|
||||
#: snikket_web/templates/invite_view.html:106
|
||||
#: snikket_web/templates/invite_view.html:134
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
msgid "Open the app"
|
||||
msgstr ""
|
||||
|
||||
@@ -1293,7 +1318,6 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_reset_view.html:26
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"Your camera will turn on. Point it at the square code below until it is "
|
||||
"within the highlighted square on your screen, and wait until the app "
|
||||
@@ -1418,7 +1442,7 @@ msgid "Get it on Google Play"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:30
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:80
|
||||
msgid "Download on the App Store"
|
||||
msgstr ""
|
||||
|
||||
@@ -1451,11 +1475,11 @@ msgid "Scan invite code"
|
||||
msgstr "Show invite details"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:55
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:96
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
#: snikket_web/templates/invite_view.html:124
|
||||
#: snikket_web/templates/invite_view.html:140
|
||||
#: snikket_web/templates/invite_view.html:62
|
||||
#: snikket_web/templates/invite_view.html:74
|
||||
#: snikket_web/templates/invite_view.html:90
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:118
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
@@ -1465,58 +1489,39 @@ msgid ""
|
||||
"your camera. You can use either a QR scanner app or the Snikket app itself."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:63
|
||||
msgid "Using a QR code scanner"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:65
|
||||
msgid "Using the Snikket app"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:70
|
||||
msgid ""
|
||||
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:76
|
||||
msgid ""
|
||||
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
|
||||
"button at the top."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:93
|
||||
#: snikket_web/templates/invite_view.html:71
|
||||
msgid "Install on iOS"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"After downloading Snikket from the App Store, you have to return to this "
|
||||
"invite link and tap on \"Open the app\" to proceed."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:101
|
||||
#: snikket_web/templates/invite_view.html:79
|
||||
msgid "First download Snikket from the App Store using the button below:"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:103
|
||||
#: snikket_web/templates/invite_view.html:131
|
||||
#: snikket_web/templates/invite_view.html:81
|
||||
#: snikket_web/templates/invite_view.html:109
|
||||
msgid ""
|
||||
"After the installation is complete, you can return to this page and tap the "
|
||||
"\"Open the app\" button to continue with the setup:"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:121
|
||||
#: snikket_web/templates/invite_view.html:130
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:108
|
||||
msgid "Install via F-Droid"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:127
|
||||
#: snikket_web/templates/invite_view.html:105
|
||||
msgid ""
|
||||
"After installing Snikket via F-Droid, you have to return to this invite link "
|
||||
"and tap on \"Open the app\" to proceed."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:129
|
||||
#: snikket_web/templates/invite_view.html:107
|
||||
msgid "First install Snikket from F-Droid using the button below:"
|
||||
msgstr ""
|
||||
|
||||
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
|
||||
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
|
||||
"PO-Revision-Date: 2021-03-31 13:00+0000\n"
|
||||
"Last-Translator: Tilman Jiménez <tilman.jimenez@tu-dortmund.de>\n"
|
||||
"Language-Team: Spanish (Mexico) <https://i18n.sotecware.net/projects/snikket/"
|
||||
@@ -20,308 +20,309 @@ msgstr ""
|
||||
"X-Generator: Weblate 4.5.1\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Nombre de ingreso del usuario"
|
||||
|
||||
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
|
||||
msgid "Display name"
|
||||
msgstr "Nombre mostrado"
|
||||
|
||||
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
|
||||
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
|
||||
msgid "Access Level"
|
||||
msgstr "Nivel de acceso"
|
||||
|
||||
#: snikket_web/admin.py:78
|
||||
#: snikket_web/admin.py:79
|
||||
msgid "Limited"
|
||||
msgstr "Limitado"
|
||||
|
||||
#: snikket_web/admin.py:79
|
||||
#: snikket_web/admin.py:80
|
||||
msgid "Normal user"
|
||||
msgstr "Usuario normal"
|
||||
|
||||
#: snikket_web/admin.py:80
|
||||
#: snikket_web/admin.py:81
|
||||
#, fuzzy
|
||||
#| msgid "Admin area"
|
||||
msgid "Administrator"
|
||||
msgstr "Administración"
|
||||
|
||||
#: snikket_web/admin.py:85
|
||||
#: snikket_web/admin.py:86
|
||||
msgid "Update user"
|
||||
msgstr "Actualizar usuario"
|
||||
|
||||
#: snikket_web/admin.py:89
|
||||
#: snikket_web/admin.py:90
|
||||
#, fuzzy
|
||||
#| msgid "Current password"
|
||||
msgid "Create password reset link"
|
||||
msgstr "Contraseña actual"
|
||||
|
||||
#: snikket_web/admin.py:107
|
||||
#: snikket_web/admin.py:108
|
||||
msgid "Password reset link created"
|
||||
msgstr "Un enlace para restablecer la contraseña ha sido creado"
|
||||
|
||||
#: snikket_web/admin.py:122
|
||||
#: snikket_web/admin.py:123
|
||||
#, fuzzy
|
||||
#| msgid "Circle information"
|
||||
msgid "User information updated."
|
||||
msgstr "Información del círculo"
|
||||
|
||||
#: snikket_web/admin.py:144
|
||||
#: snikket_web/admin.py:145
|
||||
msgid "Delete user permanently"
|
||||
msgstr "Eliminar usuario permanentemente"
|
||||
|
||||
#: snikket_web/admin.py:157
|
||||
#: snikket_web/admin.py:158
|
||||
msgid "User deleted"
|
||||
msgstr "Usuario eliminado"
|
||||
|
||||
#: snikket_web/admin.py:195
|
||||
#: snikket_web/admin.py:196
|
||||
msgid "Password reset link not found"
|
||||
msgstr "No hemos encontrado un enlace para restablecer la contraseña"
|
||||
|
||||
#: snikket_web/admin.py:207
|
||||
#: snikket_web/admin.py:208
|
||||
msgid "Password reset link deleted"
|
||||
msgstr "Enlace para restablecer la contraseña eliminado"
|
||||
|
||||
#: snikket_web/admin.py:227
|
||||
#: snikket_web/admin.py:228
|
||||
msgid "Invite to circle"
|
||||
msgstr "Invitar al círculo"
|
||||
|
||||
#: snikket_web/admin.py:233
|
||||
#: snikket_web/admin.py:234
|
||||
msgid "At least one circle must be selected"
|
||||
msgstr "Seleccione al menos un círculo"
|
||||
|
||||
#: snikket_web/admin.py:238
|
||||
#: snikket_web/admin.py:239
|
||||
msgid "Valid for"
|
||||
msgstr "Válido por"
|
||||
|
||||
#: snikket_web/admin.py:240
|
||||
#: snikket_web/admin.py:241
|
||||
msgid "One hour"
|
||||
msgstr "Una hora"
|
||||
|
||||
#: snikket_web/admin.py:241
|
||||
#: snikket_web/admin.py:242
|
||||
msgid "Twelve hours"
|
||||
msgstr "Doce horas"
|
||||
|
||||
#: snikket_web/admin.py:242
|
||||
#: snikket_web/admin.py:243
|
||||
msgid "One day"
|
||||
msgstr "Un día"
|
||||
|
||||
#: snikket_web/admin.py:243
|
||||
#: snikket_web/admin.py:244
|
||||
msgid "One week"
|
||||
msgstr "Una semana"
|
||||
|
||||
#: snikket_web/admin.py:244
|
||||
#: snikket_web/admin.py:245
|
||||
msgid "Four weeks"
|
||||
msgstr "Cuatro semanas"
|
||||
|
||||
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
|
||||
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
|
||||
msgid "Invitation type"
|
||||
msgstr "Tipo de invitación"
|
||||
|
||||
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
|
||||
msgid "Individual"
|
||||
msgstr "Individual"
|
||||
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
|
||||
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
|
||||
msgid "Group"
|
||||
msgstr "Grupo"
|
||||
|
||||
#: snikket_web/admin.py:259
|
||||
#: snikket_web/admin.py:260
|
||||
msgid "New invitation link"
|
||||
msgstr "Nuevo enlace de invitación"
|
||||
|
||||
#: snikket_web/admin.py:321
|
||||
#: snikket_web/admin.py:322
|
||||
msgid "Revoke"
|
||||
msgstr "Revocar/Eliminar"
|
||||
|
||||
#: snikket_web/admin.py:345
|
||||
#: snikket_web/admin.py:346
|
||||
#, fuzzy
|
||||
#| msgid "Invitation type"
|
||||
msgid "Invitation created"
|
||||
msgstr "Tipo de invitación"
|
||||
|
||||
#: snikket_web/admin.py:361
|
||||
#: snikket_web/admin.py:362
|
||||
#, fuzzy
|
||||
#| msgid "New invitation link"
|
||||
msgid "No such invitation exists"
|
||||
msgstr "Nuevo enlace de invitación"
|
||||
|
||||
#: snikket_web/admin.py:376
|
||||
#: snikket_web/admin.py:377
|
||||
#, fuzzy
|
||||
#| msgid "Invitation type"
|
||||
msgid "Invitation revoked"
|
||||
msgstr "Tipo de invitación"
|
||||
|
||||
#: snikket_web/admin.py:393 snikket_web/admin.py:441
|
||||
#: snikket_web/admin.py:394 snikket_web/admin.py:442
|
||||
#: snikket_web/templates/admin_delete_circle.html:10
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
|
||||
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
|
||||
msgid "Create circle"
|
||||
msgstr "Crear círculo"
|
||||
|
||||
#: snikket_web/admin.py:428
|
||||
#: snikket_web/admin.py:429
|
||||
#, fuzzy
|
||||
#| msgid "Circle name"
|
||||
msgid "Circle created"
|
||||
msgstr "Nombre del círculo"
|
||||
|
||||
#: snikket_web/admin.py:446
|
||||
#: snikket_web/admin.py:447
|
||||
msgid "Select user"
|
||||
msgstr "Seleccionar usuario"
|
||||
|
||||
#: snikket_web/admin.py:451
|
||||
#: snikket_web/admin.py:452
|
||||
msgid "Update circle"
|
||||
msgstr "Actualizar círculo"
|
||||
|
||||
#: snikket_web/admin.py:455
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Eliminar círculo permanentemente"
|
||||
|
||||
#: snikket_web/admin.py:461
|
||||
#: snikket_web/admin.py:458
|
||||
msgid "Add user"
|
||||
msgstr "Añadir usuario"
|
||||
|
||||
#: snikket_web/admin.py:477
|
||||
#: snikket_web/admin.py:474 snikket_web/admin.py:563
|
||||
#, fuzzy
|
||||
#| msgid "No circles"
|
||||
msgid "No such circle exists"
|
||||
msgstr "No hay círculos"
|
||||
|
||||
#: snikket_web/admin.py:514
|
||||
#: snikket_web/admin.py:511
|
||||
#, fuzzy
|
||||
#| msgid "Circle name"
|
||||
msgid "Circle data updated"
|
||||
msgstr "Nombre del círculo"
|
||||
|
||||
#: snikket_web/admin.py:520
|
||||
#, fuzzy
|
||||
#| msgid "Circle members"
|
||||
msgid "Circle deleted"
|
||||
msgstr "Miembros del círculo"
|
||||
|
||||
#: snikket_web/admin.py:531
|
||||
#: snikket_web/admin.py:521
|
||||
#, fuzzy
|
||||
#| msgid "Invite to circle"
|
||||
msgid "User added to circle"
|
||||
msgstr "Invitar al círculo"
|
||||
|
||||
#: snikket_web/admin.py:540
|
||||
#: snikket_web/admin.py:530
|
||||
msgid "User removed from circle"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:609
|
||||
#: snikket_web/admin.py:547
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Eliminar círculo permanentemente"
|
||||
|
||||
#: snikket_web/admin.py:574
|
||||
#, fuzzy
|
||||
#| msgid "Circle members"
|
||||
msgid "Circle deleted"
|
||||
msgstr "Miembros del círculo"
|
||||
|
||||
#: snikket_web/admin.py:640
|
||||
msgid "Message contents"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:615
|
||||
#: snikket_web/admin.py:646
|
||||
msgid "Only send to online users"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:619
|
||||
#: snikket_web/admin.py:650
|
||||
msgid "Post to all users"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:623
|
||||
#: snikket_web/admin.py:654
|
||||
msgid "Send preview to yourself"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:645
|
||||
#: snikket_web/admin.py:676
|
||||
msgid "Announcement sent!"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
#: snikket_web/infra.py:53
|
||||
msgid "Main"
|
||||
msgstr "Principal"
|
||||
|
||||
#: snikket_web/invite.py:33
|
||||
#: snikket_web/invite.py:35
|
||||
msgid ""
|
||||
"The account data you tried to import is too large to upload. Please contact "
|
||||
"your Snikket operator."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:112
|
||||
#: snikket_web/invite.py:114
|
||||
msgid "Username"
|
||||
msgstr "Usuario"
|
||||
|
||||
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
|
||||
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
|
||||
msgid "Password"
|
||||
msgstr "Contraseña"
|
||||
|
||||
#: snikket_web/invite.py:120 snikket_web/invite.py:188
|
||||
#: snikket_web/invite.py:122 snikket_web/invite.py:190
|
||||
msgid "Confirm password"
|
||||
msgstr "Confirmar contraseña"
|
||||
|
||||
#: snikket_web/invite.py:124 snikket_web/invite.py:192
|
||||
#: snikket_web/invite.py:126 snikket_web/invite.py:194
|
||||
#, fuzzy
|
||||
#| msgid "The passwords must match"
|
||||
msgid "The passwords must match."
|
||||
msgstr "Las contraseñas deben ser las mismas"
|
||||
|
||||
#: snikket_web/invite.py:129
|
||||
#: snikket_web/invite.py:131
|
||||
msgid "Create account"
|
||||
msgstr "Crear cuenta"
|
||||
|
||||
#: snikket_web/invite.py:156
|
||||
#: snikket_web/invite.py:158
|
||||
#, fuzzy
|
||||
#| msgid "That username is already taken"
|
||||
msgid "That username is already taken."
|
||||
msgstr "Ese nombre de usuario ya está siendo utilizado"
|
||||
|
||||
#: snikket_web/invite.py:160 snikket_web/invite.py:225
|
||||
#: snikket_web/invite.py:162 snikket_web/invite.py:227
|
||||
#, fuzzy
|
||||
#| msgid "Registration was declined for unknown reasons"
|
||||
msgid "Registration was declined for unknown reasons."
|
||||
msgstr "El registro ha sido declinado por razones no identificadas"
|
||||
|
||||
#: snikket_web/invite.py:164
|
||||
#: snikket_web/invite.py:166
|
||||
#, fuzzy
|
||||
#| msgid "The username is not valid"
|
||||
msgid "The username is not valid."
|
||||
msgstr "El nombre de usuario no es válido"
|
||||
|
||||
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/templates/user_passwd.html:29
|
||||
msgid "Change password"
|
||||
msgstr "Cambiar contraseña"
|
||||
|
||||
#: snikket_web/invite.py:244
|
||||
#: snikket_web/invite.py:246
|
||||
msgid "Account data file"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:248
|
||||
#: snikket_web/invite.py:250
|
||||
msgid "Import data"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:269
|
||||
#: snikket_web/invite.py:271
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The account data you tried to import is in an unknown format. Please upload "
|
||||
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/user.py:178
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/main.py:36
|
||||
#: snikket_web/main.py:38
|
||||
msgid "Address"
|
||||
msgstr "Dirección"
|
||||
|
||||
#: snikket_web/main.py:46
|
||||
#: snikket_web/main.py:48
|
||||
msgid "Sign in"
|
||||
msgstr "Ingresar"
|
||||
|
||||
#: snikket_web/main.py:55
|
||||
#: snikket_web/main.py:57
|
||||
msgid "Invalid username or password."
|
||||
msgstr "Nombre de usuario o contraseña no válidos."
|
||||
|
||||
#: snikket_web/main.py:83
|
||||
#: snikket_web/main.py:85
|
||||
msgid "Login successful!"
|
||||
msgstr ""
|
||||
|
||||
@@ -488,7 +489,7 @@ msgstr ""
|
||||
msgid "Software Versions"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/about.html:29
|
||||
#: snikket_web/templates/about.html:32
|
||||
msgid "Back to the main page"
|
||||
msgstr "Regresar a la página principal"
|
||||
|
||||
@@ -604,6 +605,54 @@ msgstr ""
|
||||
msgid "Copy complete output"
|
||||
msgstr "Copiar el todo el output"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:4
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Edit circle %(circle_name)s"
|
||||
msgid "Delete circle %(circle_name)s"
|
||||
msgstr "Editar el círculo %(circle_name)s"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:6
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
#: snikket_web/templates/admin_edit_circle.html:51
|
||||
msgid "Delete circle"
|
||||
msgstr "Eliminar círculo"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:8
|
||||
#, fuzzy
|
||||
#| msgid "Are you sure you want to delete the following user?"
|
||||
msgid "Are you sure you want to delete the following circle?"
|
||||
msgstr "¿Seguro que quieres eliminar al siguiente usuario?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:13
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Peligro"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:14
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "The user and their data will be deleted irrevocably, permanently and "
|
||||
#| "immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
#| "strong>"
|
||||
msgid ""
|
||||
"The circle and the corresponding chat will be deleted, permanently and "
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
msgstr ""
|
||||
"Este usuario y sus datos va a ser eliminados de manera irreversible, "
|
||||
"permanente e inmediatamente al presionar el botón. <strong>¡No hay forma de "
|
||||
"deshacer esto!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:17
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_manage_data.html:14
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Regresar"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:4
|
||||
#, python-format
|
||||
msgid "Delete user %(user_name)s"
|
||||
@@ -618,10 +667,6 @@ msgstr "Eliminar usuario"
|
||||
msgid "Are you sure you want to delete the following user?"
|
||||
msgstr "¿Seguro que quieres eliminar al siguiente usuario?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Peligro"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:16
|
||||
msgid ""
|
||||
"The user and their data will be deleted irrevocably, permanently and "
|
||||
@@ -632,14 +677,6 @@ msgstr ""
|
||||
"permanente e inmediatamente al presionar el botón. <strong>¡No hay forma de "
|
||||
"deshacer esto!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Regresar"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:14
|
||||
msgid "This is your main circle"
|
||||
msgstr "Este es el círculo principal"
|
||||
@@ -674,10 +711,6 @@ msgstr "Este círculo no está asociado con una conversación de grupo."
|
||||
msgid "Return to circle list"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
msgid "Delete circle"
|
||||
msgstr "Eliminar círculo"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:49
|
||||
msgid "Deleting a circle does not delete any users in the circle."
|
||||
msgstr "Eliminar un círculo no elimina a los usuarios que le pertenecen."
|
||||
@@ -1162,8 +1195,8 @@ msgstr ""
|
||||
#: snikket_web/templates/invite_register.html:16
|
||||
#: snikket_web/templates/invite_reset_view.html:21
|
||||
#: snikket_web/templates/invite_view.html:41
|
||||
#: snikket_web/templates/invite_view.html:106
|
||||
#: snikket_web/templates/invite_view.html:134
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
msgid "Open the app"
|
||||
msgstr ""
|
||||
|
||||
@@ -1252,7 +1285,6 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_reset_view.html:26
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"Your camera will turn on. Point it at the square code below until it is "
|
||||
"within the highlighted square on your screen, and wait until the app "
|
||||
@@ -1373,7 +1405,7 @@ msgid "Get it on Google Play"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:30
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:80
|
||||
msgid "Download on the App Store"
|
||||
msgstr ""
|
||||
|
||||
@@ -1404,11 +1436,11 @@ msgid "Scan invite code"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:55
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:96
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
#: snikket_web/templates/invite_view.html:124
|
||||
#: snikket_web/templates/invite_view.html:140
|
||||
#: snikket_web/templates/invite_view.html:62
|
||||
#: snikket_web/templates/invite_view.html:74
|
||||
#: snikket_web/templates/invite_view.html:90
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:118
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
@@ -1418,58 +1450,39 @@ msgid ""
|
||||
"your camera. You can use either a QR scanner app or the Snikket app itself."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:63
|
||||
msgid "Using a QR code scanner"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:65
|
||||
msgid "Using the Snikket app"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:70
|
||||
msgid ""
|
||||
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:76
|
||||
msgid ""
|
||||
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
|
||||
"button at the top."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:93
|
||||
#: snikket_web/templates/invite_view.html:71
|
||||
msgid "Install on iOS"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"After downloading Snikket from the App Store, you have to return to this "
|
||||
"invite link and tap on \"Open the app\" to proceed."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:101
|
||||
#: snikket_web/templates/invite_view.html:79
|
||||
msgid "First download Snikket from the App Store using the button below:"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:103
|
||||
#: snikket_web/templates/invite_view.html:131
|
||||
#: snikket_web/templates/invite_view.html:81
|
||||
#: snikket_web/templates/invite_view.html:109
|
||||
msgid ""
|
||||
"After the installation is complete, you can return to this page and tap the "
|
||||
"\"Open the app\" button to continue with the setup:"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:121
|
||||
#: snikket_web/templates/invite_view.html:130
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:108
|
||||
msgid "Install via F-Droid"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:127
|
||||
#: snikket_web/templates/invite_view.html:105
|
||||
msgid ""
|
||||
"After installing Snikket via F-Droid, you have to return to this invite link "
|
||||
"and tap on \"Open the app\" to proceed."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:129
|
||||
#: snikket_web/templates/invite_view.html:107
|
||||
msgid "First install Snikket from F-Droid using the button below:"
|
||||
msgstr ""
|
||||
|
||||
|
||||
Binary file not shown.
@@ -6,8 +6,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: translations@snikket.org\n"
|
||||
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
|
||||
"PO-Revision-Date: 2022-04-11 13:00+0000\n"
|
||||
"Last-Translator: David Baraniak <admin@chipmnk.dev>\n"
|
||||
"Language-Team: French <http://i18n.sotecware.net/projects/snikket/web-portal/"
|
||||
@@ -20,203 +20,204 @@ msgstr ""
|
||||
"X-Generator: Weblate 4.8.1\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Identifiant"
|
||||
|
||||
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
|
||||
msgid "Display name"
|
||||
msgstr "Nom à afficher"
|
||||
|
||||
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
|
||||
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
|
||||
msgid "Access Level"
|
||||
msgstr "Niveau d’accès"
|
||||
|
||||
#: snikket_web/admin.py:78
|
||||
#: snikket_web/admin.py:79
|
||||
msgid "Limited"
|
||||
msgstr "Limité"
|
||||
|
||||
#: snikket_web/admin.py:79
|
||||
#: snikket_web/admin.py:80
|
||||
msgid "Normal user"
|
||||
msgstr "Utilisateur normal"
|
||||
|
||||
#: snikket_web/admin.py:80
|
||||
#: snikket_web/admin.py:81
|
||||
msgid "Administrator"
|
||||
msgstr "Administrateur"
|
||||
|
||||
#: snikket_web/admin.py:85
|
||||
#: snikket_web/admin.py:86
|
||||
msgid "Update user"
|
||||
msgstr "Modifier l’utilisateur"
|
||||
|
||||
#: snikket_web/admin.py:89
|
||||
#: snikket_web/admin.py:90
|
||||
msgid "Create password reset link"
|
||||
msgstr "Créer le lien de réinitialisation de mot de passe"
|
||||
|
||||
#: snikket_web/admin.py:107
|
||||
#: snikket_web/admin.py:108
|
||||
msgid "Password reset link created"
|
||||
msgstr "Lien de réinitialisation du mot de passe créé"
|
||||
|
||||
#: snikket_web/admin.py:122
|
||||
#: snikket_web/admin.py:123
|
||||
msgid "User information updated."
|
||||
msgstr "Informations de l’utilisateur mises à jour."
|
||||
|
||||
#: snikket_web/admin.py:144
|
||||
#: snikket_web/admin.py:145
|
||||
msgid "Delete user permanently"
|
||||
msgstr "Désinscrire définitivement l’utilisateur"
|
||||
|
||||
#: snikket_web/admin.py:157
|
||||
#: snikket_web/admin.py:158
|
||||
msgid "User deleted"
|
||||
msgstr "Utilisateur supprimé"
|
||||
|
||||
#: snikket_web/admin.py:195
|
||||
#: snikket_web/admin.py:196
|
||||
msgid "Password reset link not found"
|
||||
msgstr "Lien de réinitialisation du mot de passe introuvable"
|
||||
|
||||
#: snikket_web/admin.py:207
|
||||
#: snikket_web/admin.py:208
|
||||
msgid "Password reset link deleted"
|
||||
msgstr "Liens de réinitialisation de mot de passe supprimé"
|
||||
|
||||
#: snikket_web/admin.py:227
|
||||
#: snikket_web/admin.py:228
|
||||
msgid "Invite to circle"
|
||||
msgstr "Inviter dans le cercle"
|
||||
|
||||
#: snikket_web/admin.py:233
|
||||
#: snikket_web/admin.py:234
|
||||
msgid "At least one circle must be selected"
|
||||
msgstr "Au moins un cercle doit être sélectionné"
|
||||
|
||||
#: snikket_web/admin.py:238
|
||||
#: snikket_web/admin.py:239
|
||||
msgid "Valid for"
|
||||
msgstr "Valide pour"
|
||||
|
||||
#: snikket_web/admin.py:240
|
||||
#: snikket_web/admin.py:241
|
||||
msgid "One hour"
|
||||
msgstr "Une heure"
|
||||
|
||||
#: snikket_web/admin.py:241
|
||||
#: snikket_web/admin.py:242
|
||||
msgid "Twelve hours"
|
||||
msgstr "Douze heures"
|
||||
|
||||
#: snikket_web/admin.py:242
|
||||
#: snikket_web/admin.py:243
|
||||
msgid "One day"
|
||||
msgstr "Une journée"
|
||||
|
||||
#: snikket_web/admin.py:243
|
||||
#: snikket_web/admin.py:244
|
||||
msgid "One week"
|
||||
msgstr "Une semaine"
|
||||
|
||||
#: snikket_web/admin.py:244
|
||||
#: snikket_web/admin.py:245
|
||||
msgid "Four weeks"
|
||||
msgstr "Quatre semaines"
|
||||
|
||||
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
|
||||
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
|
||||
msgid "Invitation type"
|
||||
msgstr "Type d’invitation"
|
||||
|
||||
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
|
||||
msgid "Individual"
|
||||
msgstr "Individuelle"
|
||||
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
|
||||
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
|
||||
msgid "Group"
|
||||
msgstr "Groupe"
|
||||
|
||||
#: snikket_web/admin.py:259
|
||||
#: snikket_web/admin.py:260
|
||||
msgid "New invitation link"
|
||||
msgstr "Nouveau lien d’invitation"
|
||||
|
||||
#: snikket_web/admin.py:321
|
||||
#: snikket_web/admin.py:322
|
||||
msgid "Revoke"
|
||||
msgstr "Révoquer"
|
||||
|
||||
#: snikket_web/admin.py:345
|
||||
#: snikket_web/admin.py:346
|
||||
msgid "Invitation created"
|
||||
msgstr "Invitation créée"
|
||||
|
||||
#: snikket_web/admin.py:361
|
||||
#: snikket_web/admin.py:362
|
||||
msgid "No such invitation exists"
|
||||
msgstr "Cette invitation n’existe pas"
|
||||
|
||||
#: snikket_web/admin.py:376
|
||||
#: snikket_web/admin.py:377
|
||||
msgid "Invitation revoked"
|
||||
msgstr "Invitation révoquée"
|
||||
|
||||
#: snikket_web/admin.py:393 snikket_web/admin.py:441
|
||||
#: snikket_web/admin.py:394 snikket_web/admin.py:442
|
||||
#: snikket_web/templates/admin_delete_circle.html:10
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
|
||||
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
|
||||
msgid "Create circle"
|
||||
msgstr "Créer un cercle"
|
||||
|
||||
#: snikket_web/admin.py:428
|
||||
#: snikket_web/admin.py:429
|
||||
msgid "Circle created"
|
||||
msgstr "Cercle créé"
|
||||
|
||||
#: snikket_web/admin.py:446
|
||||
#: snikket_web/admin.py:447
|
||||
msgid "Select user"
|
||||
msgstr "Sélectionner un utilisateur"
|
||||
|
||||
#: snikket_web/admin.py:451
|
||||
#: snikket_web/admin.py:452
|
||||
msgid "Update circle"
|
||||
msgstr "Mettre à jour le cercle"
|
||||
|
||||
#: snikket_web/admin.py:455
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Supprimer le cercle définitivement"
|
||||
|
||||
#: snikket_web/admin.py:461
|
||||
#: snikket_web/admin.py:458
|
||||
msgid "Add user"
|
||||
msgstr "Ajouter un utilisateur"
|
||||
|
||||
#: snikket_web/admin.py:477
|
||||
#: snikket_web/admin.py:474 snikket_web/admin.py:563
|
||||
msgid "No such circle exists"
|
||||
msgstr "Ce cercle n’existe pas"
|
||||
|
||||
#: snikket_web/admin.py:514
|
||||
#: snikket_web/admin.py:511
|
||||
msgid "Circle data updated"
|
||||
msgstr "Données du cercle mises à jour"
|
||||
|
||||
#: snikket_web/admin.py:520
|
||||
msgid "Circle deleted"
|
||||
msgstr "Cercle supprimé"
|
||||
|
||||
#: snikket_web/admin.py:531
|
||||
#: snikket_web/admin.py:521
|
||||
msgid "User added to circle"
|
||||
msgstr "Utilisateur ajouté à ce cercle"
|
||||
|
||||
#: snikket_web/admin.py:540
|
||||
#: snikket_web/admin.py:530
|
||||
msgid "User removed from circle"
|
||||
msgstr "Utilisateur retiré du cercle"
|
||||
|
||||
#: snikket_web/admin.py:609
|
||||
#: snikket_web/admin.py:547
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Supprimer le cercle définitivement"
|
||||
|
||||
#: snikket_web/admin.py:574
|
||||
msgid "Circle deleted"
|
||||
msgstr "Cercle supprimé"
|
||||
|
||||
#: snikket_web/admin.py:640
|
||||
msgid "Message contents"
|
||||
msgstr "Contenu du message"
|
||||
|
||||
#: snikket_web/admin.py:615
|
||||
#: snikket_web/admin.py:646
|
||||
msgid "Only send to online users"
|
||||
msgstr "Envoyer uniquement aux utilisateurs connectés"
|
||||
|
||||
#: snikket_web/admin.py:619
|
||||
#: snikket_web/admin.py:650
|
||||
msgid "Post to all users"
|
||||
msgstr "Envoyer aux utilisateurs"
|
||||
|
||||
#: snikket_web/admin.py:623
|
||||
#: snikket_web/admin.py:654
|
||||
msgid "Send preview to yourself"
|
||||
msgstr "Envoyer une prévisualisation à vous-mêmes"
|
||||
|
||||
#: snikket_web/admin.py:645
|
||||
#: snikket_web/admin.py:676
|
||||
msgid "Announcement sent!"
|
||||
msgstr "Annonce envoyée !"
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
#: snikket_web/infra.py:53
|
||||
msgid "Main"
|
||||
msgstr "Principal"
|
||||
|
||||
#: snikket_web/invite.py:33
|
||||
#: snikket_web/invite.py:35
|
||||
msgid ""
|
||||
"The account data you tried to import is too large to upload. Please contact "
|
||||
"your Snikket operator."
|
||||
@@ -224,52 +225,52 @@ msgstr ""
|
||||
"Les données du compte que vous avez essayé d'importer sont trop volumineuses "
|
||||
"pour être téléchargées. Veuillez contacter votre opérateur Snikket."
|
||||
|
||||
#: snikket_web/invite.py:112
|
||||
#: snikket_web/invite.py:114
|
||||
msgid "Username"
|
||||
msgstr "Nom d’utilisateur"
|
||||
|
||||
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
|
||||
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
|
||||
msgid "Password"
|
||||
msgstr "Mot de passe"
|
||||
|
||||
#: snikket_web/invite.py:120 snikket_web/invite.py:188
|
||||
#: snikket_web/invite.py:122 snikket_web/invite.py:190
|
||||
msgid "Confirm password"
|
||||
msgstr "Confirmer le mot de passe"
|
||||
|
||||
#: snikket_web/invite.py:124 snikket_web/invite.py:192
|
||||
#: snikket_web/invite.py:126 snikket_web/invite.py:194
|
||||
msgid "The passwords must match."
|
||||
msgstr "Les mots de passe doivent être identiques."
|
||||
|
||||
#: snikket_web/invite.py:129
|
||||
#: snikket_web/invite.py:131
|
||||
msgid "Create account"
|
||||
msgstr "Créer un compte"
|
||||
|
||||
#: snikket_web/invite.py:156
|
||||
#: snikket_web/invite.py:158
|
||||
msgid "That username is already taken."
|
||||
msgstr "Ce nom d’utilisateur est déjà utilisé."
|
||||
|
||||
#: snikket_web/invite.py:160 snikket_web/invite.py:225
|
||||
#: snikket_web/invite.py:162 snikket_web/invite.py:227
|
||||
msgid "Registration was declined for unknown reasons."
|
||||
msgstr "L’enregistrement a été refusé pour des raisons inconnues."
|
||||
|
||||
#: snikket_web/invite.py:164
|
||||
#: snikket_web/invite.py:166
|
||||
msgid "The username is not valid."
|
||||
msgstr "Le nom d’utilisateur n’est pas valide."
|
||||
|
||||
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/templates/user_passwd.html:29
|
||||
msgid "Change password"
|
||||
msgstr "Changer de mot de passe"
|
||||
|
||||
#: snikket_web/invite.py:244
|
||||
#: snikket_web/invite.py:246
|
||||
msgid "Account data file"
|
||||
msgstr "Fichier de données du compte"
|
||||
|
||||
#: snikket_web/invite.py:248
|
||||
#: snikket_web/invite.py:250
|
||||
msgid "Import data"
|
||||
msgstr "Importer les données"
|
||||
|
||||
#: snikket_web/invite.py:269
|
||||
#: snikket_web/invite.py:271
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The account data you tried to import is in an unknown format. Please upload "
|
||||
@@ -279,24 +280,24 @@ msgstr ""
|
||||
"inconnu. Veuillez télécharger un fichier XML au format XEP-0227 (format "
|
||||
"fourni : %(mimetype)s)."
|
||||
|
||||
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/user.py:178
|
||||
msgid "Error"
|
||||
msgstr "Erreur"
|
||||
|
||||
#: snikket_web/main.py:36
|
||||
#: snikket_web/main.py:38
|
||||
msgid "Address"
|
||||
msgstr "Adresse"
|
||||
|
||||
#: snikket_web/main.py:46
|
||||
#: snikket_web/main.py:48
|
||||
msgid "Sign in"
|
||||
msgstr "S’identifier"
|
||||
|
||||
#: snikket_web/main.py:55
|
||||
#: snikket_web/main.py:57
|
||||
msgid "Invalid username or password."
|
||||
msgstr "Nom d’utilisateur ou mot de passe incorrect."
|
||||
|
||||
#: snikket_web/main.py:83
|
||||
#: snikket_web/main.py:85
|
||||
msgid "Login successful!"
|
||||
msgstr "Connexion réussie !"
|
||||
|
||||
@@ -470,7 +471,7 @@ msgstr ""
|
||||
msgid "Software Versions"
|
||||
msgstr "Version des logiciels"
|
||||
|
||||
#: snikket_web/templates/about.html:29
|
||||
#: snikket_web/templates/about.html:32
|
||||
msgid "Back to the main page"
|
||||
msgstr "Retour à la page principale"
|
||||
|
||||
@@ -586,6 +587,54 @@ msgstr "Journal de débogage brut"
|
||||
msgid "Copy complete output"
|
||||
msgstr "Copier le journal entier"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:4
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Edit circle %(circle_name)s"
|
||||
msgid "Delete circle %(circle_name)s"
|
||||
msgstr "Éditer le cercle %(circle_name)s"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:6
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
#: snikket_web/templates/admin_edit_circle.html:51
|
||||
msgid "Delete circle"
|
||||
msgstr "Supprimer le cercle"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:8
|
||||
#, fuzzy
|
||||
#| msgid "Are you sure you want to delete the following user?"
|
||||
msgid "Are you sure you want to delete the following circle?"
|
||||
msgstr "Êtes-vous certain(e) de vouloir désinscrire l’utilisateur suivant ?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:13
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Danger"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:14
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "The user and their data will be deleted irrevocably, permanently and "
|
||||
#| "immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
#| "strong>"
|
||||
msgid ""
|
||||
"The circle and the corresponding chat will be deleted, permanently and "
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
msgstr ""
|
||||
"L’utilisateur et ses données vont être irrévocablement supprimées, "
|
||||
"immédiatement après avoir pressé le bouton ci-dessous. <strong>Il est "
|
||||
"impossible de revenir en arrière !</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:17
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_manage_data.html:14
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Retour"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:4
|
||||
#, python-format
|
||||
msgid "Delete user %(user_name)s"
|
||||
@@ -600,10 +649,6 @@ msgstr "Désinscrire un utilisateur"
|
||||
msgid "Are you sure you want to delete the following user?"
|
||||
msgstr "Êtes-vous certain(e) de vouloir désinscrire l’utilisateur suivant ?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Danger"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:16
|
||||
msgid ""
|
||||
"The user and their data will be deleted irrevocably, permanently and "
|
||||
@@ -614,14 +659,6 @@ msgstr ""
|
||||
"immédiatement après avoir pressé le bouton ci-dessous. <strong>Il est "
|
||||
"impossible de revenir en arrière !</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Retour"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:14
|
||||
msgid "This is your main circle"
|
||||
msgstr "Ceci est votre cercle principal"
|
||||
@@ -655,10 +692,6 @@ msgstr "Ce cercle n’a pas de conversation de groupe associée."
|
||||
msgid "Return to circle list"
|
||||
msgstr "Revenir à la liste des cercles"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
msgid "Delete circle"
|
||||
msgstr "Supprimer le cercle"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:49
|
||||
msgid "Deleting a circle does not delete any users in the circle."
|
||||
msgstr "Supprimer un cercle ne supprime aucun utilisateur dans le cercle."
|
||||
@@ -1148,8 +1181,8 @@ msgstr "L’application est déjà installée ?"
|
||||
#: snikket_web/templates/invite_register.html:16
|
||||
#: snikket_web/templates/invite_reset_view.html:21
|
||||
#: snikket_web/templates/invite_view.html:41
|
||||
#: snikket_web/templates/invite_view.html:106
|
||||
#: snikket_web/templates/invite_view.html:134
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
msgid "Open the app"
|
||||
msgstr "Ouvrir l’application"
|
||||
|
||||
@@ -1252,7 +1285,6 @@ msgstr ""
|
||||
"utilisant le bouton Scan tout en haut."
|
||||
|
||||
#: snikket_web/templates/invite_reset_view.html:26
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"Your camera will turn on. Point it at the square code below until it is "
|
||||
"within the highlighted square on your screen, and wait until the app "
|
||||
@@ -1320,8 +1352,8 @@ msgid ""
|
||||
"\"%(login_url)s\">manage your account</a>."
|
||||
msgstr ""
|
||||
"Vous pouvez maintenant fermer cette page en toute sécurité, ou vous "
|
||||
"connecter au portail web pour <a href=\"%(login_url)s\">gérer votre "
|
||||
"compte</a>."
|
||||
"connecter au portail web pour <a href=\"%(login_url)s\">gérer votre compte</"
|
||||
"a>."
|
||||
|
||||
#: snikket_web/templates/invite_success.html:21
|
||||
msgid "Import successful"
|
||||
@@ -1400,7 +1432,7 @@ msgid "Get it on Google Play"
|
||||
msgstr "Obtenez-la sur Google Play"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:30
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:80
|
||||
msgid "Download on the App Store"
|
||||
msgstr "Télécharger sur l’App Store"
|
||||
|
||||
@@ -1438,11 +1470,11 @@ msgid "Scan invite code"
|
||||
msgstr "Scanner le code d’invitation"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:55
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:96
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
#: snikket_web/templates/invite_view.html:124
|
||||
#: snikket_web/templates/invite_view.html:140
|
||||
#: snikket_web/templates/invite_view.html:62
|
||||
#: snikket_web/templates/invite_view.html:74
|
||||
#: snikket_web/templates/invite_view.html:90
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:118
|
||||
msgid "Close"
|
||||
msgstr "Fermer"
|
||||
|
||||
@@ -1455,34 +1487,11 @@ msgstr ""
|
||||
"scannant un code avec votre appareil photo. Vous pouvez utiliser soit une "
|
||||
"application de scanner de QR code, soit l’application Snikket elle-même."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:63
|
||||
msgid "Using a QR code scanner"
|
||||
msgstr "En utilisant un scanner de QR code"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:65
|
||||
msgid "Using the Snikket app"
|
||||
msgstr "En utilisant l’application Snikket"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:70
|
||||
msgid ""
|
||||
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
|
||||
msgstr ""
|
||||
"Utilisez un scanner de <em>QR code</em> sur votre appareil mobile pour "
|
||||
"scanner le code ci-dessous :"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:76
|
||||
msgid ""
|
||||
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
|
||||
"button at the top."
|
||||
msgstr ""
|
||||
"Installez l’application Snikket sur votre appareil mobile, ouvrez-la et "
|
||||
"appuyez sur le bouton « Scan » en haut."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:93
|
||||
#: snikket_web/templates/invite_view.html:71
|
||||
msgid "Install on iOS"
|
||||
msgstr "Installer sur iOS"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"After downloading Snikket from the App Store, you have to return to this "
|
||||
"invite link and tap on \"Open the app\" to proceed."
|
||||
@@ -1490,14 +1499,14 @@ msgstr ""
|
||||
"Après avoir téléchargé Snikket depuis l'App Store, vous devez revenir à ce "
|
||||
"lien d'invitation et cliquer sur \"Ouvrir l'application\" pour continuer."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:101
|
||||
#: snikket_web/templates/invite_view.html:79
|
||||
msgid "First download Snikket from the App Store using the button below:"
|
||||
msgstr ""
|
||||
"Téléchargez d'abord Snikket depuis l'App Store en utilisant le bouton ci-"
|
||||
"dessous :"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:103
|
||||
#: snikket_web/templates/invite_view.html:131
|
||||
#: snikket_web/templates/invite_view.html:81
|
||||
#: snikket_web/templates/invite_view.html:109
|
||||
msgid ""
|
||||
"After the installation is complete, you can return to this page and tap the "
|
||||
"\"Open the app\" button to continue with the setup:"
|
||||
@@ -1506,12 +1515,12 @@ msgstr ""
|
||||
"appuyer sur le bouton \"Ouvrir l'application\" pour poursuivre la "
|
||||
"configuration :"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:121
|
||||
#: snikket_web/templates/invite_view.html:130
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:108
|
||||
msgid "Install via F-Droid"
|
||||
msgstr "Installer via F-Droid"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:127
|
||||
#: snikket_web/templates/invite_view.html:105
|
||||
msgid ""
|
||||
"After installing Snikket via F-Droid, you have to return to this invite link "
|
||||
"and tap on \"Open the app\" to proceed."
|
||||
@@ -1519,7 +1528,7 @@ msgstr ""
|
||||
"Après avoir installé Snikket via F-Droid, vous devez revenir à ce lien "
|
||||
"d'invitation et appuyer sur \"Ouvrir l'application\" pour continuer."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:129
|
||||
#: snikket_web/templates/invite_view.html:107
|
||||
msgid "First install Snikket from F-Droid using the button below:"
|
||||
msgstr ""
|
||||
"Installez d'abord Snikket depuis F-Droid en utilisant le bouton ci-dessous :"
|
||||
@@ -1671,6 +1680,26 @@ msgstr ""
|
||||
"Cette section permet de configurer qui peut voir votre profil, comme par "
|
||||
"exemple votre avatar et votre pseudonyme."
|
||||
|
||||
#~ msgid "Using a QR code scanner"
|
||||
#~ msgstr "En utilisant un scanner de QR code"
|
||||
|
||||
#~ msgid "Using the Snikket app"
|
||||
#~ msgstr "En utilisant l’application Snikket"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Use a <em>QR code</em> scanner on your mobile device to scan the code "
|
||||
#~ "below:"
|
||||
#~ msgstr ""
|
||||
#~ "Utilisez un scanner de <em>QR code</em> sur votre appareil mobile pour "
|
||||
#~ "scanner le code ci-dessous :"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Install the Snikket app on your mobile device, open it, and tap the "
|
||||
#~ "'Scan' button at the top."
|
||||
#~ msgstr ""
|
||||
#~ "Installez l’application Snikket sur votre appareil mobile, ouvrez-la et "
|
||||
#~ "appuyez sur le bouton « Scan » en haut."
|
||||
|
||||
#~ msgid "Create password reset link for %(user_name)s"
|
||||
#~ msgstr "Crée un lien de réinitialisation de mot de passe pour %(user_name)s"
|
||||
|
||||
|
||||
Binary file not shown.
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: translations@snikket.org\n"
|
||||
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
|
||||
"PO-Revision-Date: 2022-01-18 14:59+0000\n"
|
||||
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
|
||||
"PO-Revision-Date: 2023-04-02 15:17+0000\n"
|
||||
"Last-Translator: uira <inboxriau@andriana.id>\n"
|
||||
"Language-Team: Indonesian <http://i18n.sotecware.net/projects/snikket/"
|
||||
"web-portal/id/>\n"
|
||||
@@ -17,206 +17,207 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 4.8.1\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Nama login"
|
||||
|
||||
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
|
||||
msgid "Display name"
|
||||
msgstr "Nama tampilan"
|
||||
|
||||
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
|
||||
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
|
||||
msgid "Access Level"
|
||||
msgstr "Level akses"
|
||||
|
||||
#: snikket_web/admin.py:78
|
||||
#: snikket_web/admin.py:79
|
||||
msgid "Limited"
|
||||
msgstr "Terbatas"
|
||||
|
||||
#: snikket_web/admin.py:79
|
||||
#: snikket_web/admin.py:80
|
||||
msgid "Normal user"
|
||||
msgstr "Pengguna normal"
|
||||
|
||||
#: snikket_web/admin.py:80
|
||||
#: snikket_web/admin.py:81
|
||||
msgid "Administrator"
|
||||
msgstr "Administrator"
|
||||
|
||||
#: snikket_web/admin.py:85
|
||||
#: snikket_web/admin.py:86
|
||||
msgid "Update user"
|
||||
msgstr "Memperbarui pengguna"
|
||||
|
||||
#: snikket_web/admin.py:89
|
||||
#: snikket_web/admin.py:90
|
||||
msgid "Create password reset link"
|
||||
msgstr "Buat tautan setel ulang kata sandi"
|
||||
|
||||
#: snikket_web/admin.py:107
|
||||
#: snikket_web/admin.py:108
|
||||
msgid "Password reset link created"
|
||||
msgstr "Tautan setel ulang kata sandi dibuat"
|
||||
|
||||
#: snikket_web/admin.py:122
|
||||
#: snikket_web/admin.py:123
|
||||
msgid "User information updated."
|
||||
msgstr "Informasi pengguna diperbarui."
|
||||
|
||||
#: snikket_web/admin.py:144
|
||||
#: snikket_web/admin.py:145
|
||||
msgid "Delete user permanently"
|
||||
msgstr "Hapus permanen pengguna"
|
||||
|
||||
#: snikket_web/admin.py:157
|
||||
#: snikket_web/admin.py:158
|
||||
msgid "User deleted"
|
||||
msgstr "Pengguna dihapus"
|
||||
|
||||
#: snikket_web/admin.py:195
|
||||
#: snikket_web/admin.py:196
|
||||
msgid "Password reset link not found"
|
||||
msgstr "Tautan setel ulang kata sandi tidak ditemukan"
|
||||
|
||||
#: snikket_web/admin.py:207
|
||||
#: snikket_web/admin.py:208
|
||||
msgid "Password reset link deleted"
|
||||
msgstr "Tautan setel ulang kata sandi dihapus"
|
||||
|
||||
#: snikket_web/admin.py:227
|
||||
#: snikket_web/admin.py:228
|
||||
msgid "Invite to circle"
|
||||
msgstr "Undang masuk kelompok"
|
||||
|
||||
#: snikket_web/admin.py:233
|
||||
#: snikket_web/admin.py:234
|
||||
msgid "At least one circle must be selected"
|
||||
msgstr "Minimal satu kelompok harus dipilih"
|
||||
|
||||
#: snikket_web/admin.py:238
|
||||
#: snikket_web/admin.py:239
|
||||
msgid "Valid for"
|
||||
msgstr "Valid selama"
|
||||
|
||||
#: snikket_web/admin.py:240
|
||||
#: snikket_web/admin.py:241
|
||||
msgid "One hour"
|
||||
msgstr "Satu jam"
|
||||
|
||||
#: snikket_web/admin.py:241
|
||||
#: snikket_web/admin.py:242
|
||||
msgid "Twelve hours"
|
||||
msgstr "Dua belas jam"
|
||||
|
||||
#: snikket_web/admin.py:242
|
||||
#: snikket_web/admin.py:243
|
||||
msgid "One day"
|
||||
msgstr "Satu hari"
|
||||
|
||||
#: snikket_web/admin.py:243
|
||||
#: snikket_web/admin.py:244
|
||||
msgid "One week"
|
||||
msgstr "Satu minggu"
|
||||
|
||||
#: snikket_web/admin.py:244
|
||||
#: snikket_web/admin.py:245
|
||||
msgid "Four weeks"
|
||||
msgstr "Empat minggu"
|
||||
|
||||
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
|
||||
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
|
||||
msgid "Invitation type"
|
||||
msgstr "Jenis undangan"
|
||||
|
||||
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
|
||||
msgid "Individual"
|
||||
msgstr "Individu"
|
||||
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
|
||||
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
|
||||
msgid "Group"
|
||||
msgstr "Grup"
|
||||
|
||||
#: snikket_web/admin.py:259
|
||||
#: snikket_web/admin.py:260
|
||||
msgid "New invitation link"
|
||||
msgstr "Tautan undangan baru"
|
||||
|
||||
#: snikket_web/admin.py:321
|
||||
#: snikket_web/admin.py:322
|
||||
msgid "Revoke"
|
||||
msgstr "Batalkan"
|
||||
|
||||
#: snikket_web/admin.py:345
|
||||
#: snikket_web/admin.py:346
|
||||
msgid "Invitation created"
|
||||
msgstr "Undangan dibuat"
|
||||
|
||||
#: snikket_web/admin.py:361
|
||||
#: snikket_web/admin.py:362
|
||||
msgid "No such invitation exists"
|
||||
msgstr "Undangan tidak tersedia"
|
||||
|
||||
#: snikket_web/admin.py:376
|
||||
#: snikket_web/admin.py:377
|
||||
msgid "Invitation revoked"
|
||||
msgstr "Undangan dibatalkan"
|
||||
|
||||
#: snikket_web/admin.py:393 snikket_web/admin.py:441
|
||||
#: snikket_web/admin.py:394 snikket_web/admin.py:442
|
||||
#: snikket_web/templates/admin_delete_circle.html:10
|
||||
msgid "Name"
|
||||
msgstr "Nama"
|
||||
|
||||
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
|
||||
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
|
||||
msgid "Create circle"
|
||||
msgstr "Buat kelompok"
|
||||
|
||||
#: snikket_web/admin.py:428
|
||||
#: snikket_web/admin.py:429
|
||||
msgid "Circle created"
|
||||
msgstr "Kelompok dibuat"
|
||||
|
||||
#: snikket_web/admin.py:446
|
||||
#: snikket_web/admin.py:447
|
||||
msgid "Select user"
|
||||
msgstr "Pilih pengguna"
|
||||
|
||||
#: snikket_web/admin.py:451
|
||||
#: snikket_web/admin.py:452
|
||||
msgid "Update circle"
|
||||
msgstr "Memperbarui kelompok"
|
||||
|
||||
#: snikket_web/admin.py:455
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Hapus kelompok secara permanen"
|
||||
|
||||
#: snikket_web/admin.py:461
|
||||
#: snikket_web/admin.py:458
|
||||
msgid "Add user"
|
||||
msgstr "Tambah pengguna"
|
||||
|
||||
#: snikket_web/admin.py:477
|
||||
#: snikket_web/admin.py:474 snikket_web/admin.py:563
|
||||
msgid "No such circle exists"
|
||||
msgstr "Kelompok tersebut tidak ada"
|
||||
|
||||
#: snikket_web/admin.py:514
|
||||
#: snikket_web/admin.py:511
|
||||
msgid "Circle data updated"
|
||||
msgstr "Data kelompok diperbarui"
|
||||
|
||||
#: snikket_web/admin.py:520
|
||||
msgid "Circle deleted"
|
||||
msgstr "Kelompok dihapus"
|
||||
|
||||
#: snikket_web/admin.py:531
|
||||
#: snikket_web/admin.py:521
|
||||
msgid "User added to circle"
|
||||
msgstr "Pengguna ditambahkan ke kelompok"
|
||||
|
||||
#: snikket_web/admin.py:540
|
||||
#: snikket_web/admin.py:530
|
||||
msgid "User removed from circle"
|
||||
msgstr "Pengguna dihapus dari kelompok"
|
||||
|
||||
#: snikket_web/admin.py:609
|
||||
#: snikket_web/admin.py:547
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Hapus kelompok secara permanen"
|
||||
|
||||
#: snikket_web/admin.py:574
|
||||
msgid "Circle deleted"
|
||||
msgstr "Kelompok dihapus"
|
||||
|
||||
#: snikket_web/admin.py:640
|
||||
msgid "Message contents"
|
||||
msgstr "Isi pesan"
|
||||
|
||||
#: snikket_web/admin.py:615
|
||||
#: snikket_web/admin.py:646
|
||||
msgid "Only send to online users"
|
||||
msgstr "Hanya kirim ke pengguna online"
|
||||
|
||||
#: snikket_web/admin.py:619
|
||||
#: snikket_web/admin.py:650
|
||||
msgid "Post to all users"
|
||||
msgstr "Kirim ke semua pengguna"
|
||||
|
||||
#: snikket_web/admin.py:623
|
||||
#: snikket_web/admin.py:654
|
||||
msgid "Send preview to yourself"
|
||||
msgstr "Kirim pratinjau ke diri sendiri"
|
||||
|
||||
#: snikket_web/admin.py:645
|
||||
#: snikket_web/admin.py:676
|
||||
msgid "Announcement sent!"
|
||||
msgstr "Pengumuman terkirim!"
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
#: snikket_web/infra.py:53
|
||||
msgid "Main"
|
||||
msgstr "Utama"
|
||||
|
||||
#: snikket_web/invite.py:33
|
||||
#: snikket_web/invite.py:35
|
||||
msgid ""
|
||||
"The account data you tried to import is too large to upload. Please contact "
|
||||
"your Snikket operator."
|
||||
@@ -224,52 +225,52 @@ msgstr ""
|
||||
"Data akun yang coba diimpor terlalu besar untuk diunggah. Silakan hubungi "
|
||||
"operator Snikket Anda."
|
||||
|
||||
#: snikket_web/invite.py:112
|
||||
#: snikket_web/invite.py:114
|
||||
msgid "Username"
|
||||
msgstr "Nama pengguna"
|
||||
|
||||
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
|
||||
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
|
||||
msgid "Password"
|
||||
msgstr "Kata sandi"
|
||||
|
||||
#: snikket_web/invite.py:120 snikket_web/invite.py:188
|
||||
#: snikket_web/invite.py:122 snikket_web/invite.py:190
|
||||
msgid "Confirm password"
|
||||
msgstr "Konfirmasi kata sandi"
|
||||
|
||||
#: snikket_web/invite.py:124 snikket_web/invite.py:192
|
||||
#: snikket_web/invite.py:126 snikket_web/invite.py:194
|
||||
msgid "The passwords must match."
|
||||
msgstr "Kata sandi harus cocok."
|
||||
|
||||
#: snikket_web/invite.py:129
|
||||
#: snikket_web/invite.py:131
|
||||
msgid "Create account"
|
||||
msgstr "Buat akun"
|
||||
|
||||
#: snikket_web/invite.py:156
|
||||
#: snikket_web/invite.py:158
|
||||
msgid "That username is already taken."
|
||||
msgstr "Nama pengguna itu sudah dipakai."
|
||||
|
||||
#: snikket_web/invite.py:160 snikket_web/invite.py:225
|
||||
#: snikket_web/invite.py:162 snikket_web/invite.py:227
|
||||
msgid "Registration was declined for unknown reasons."
|
||||
msgstr "Pendaftaran ditolak karena alasan yang tidak diketahui."
|
||||
|
||||
#: snikket_web/invite.py:164
|
||||
#: snikket_web/invite.py:166
|
||||
msgid "The username is not valid."
|
||||
msgstr "Nama pengguna tidak valid."
|
||||
|
||||
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/templates/user_passwd.html:29
|
||||
msgid "Change password"
|
||||
msgstr "Ganti kata sandi"
|
||||
|
||||
#: snikket_web/invite.py:244
|
||||
#: snikket_web/invite.py:246
|
||||
msgid "Account data file"
|
||||
msgstr "File data akun"
|
||||
|
||||
#: snikket_web/invite.py:248
|
||||
#: snikket_web/invite.py:250
|
||||
msgid "Import data"
|
||||
msgstr "Impor data"
|
||||
|
||||
#: snikket_web/invite.py:269
|
||||
#: snikket_web/invite.py:271
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The account data you tried to import is in an unknown format. Please upload "
|
||||
@@ -278,24 +279,24 @@ msgstr ""
|
||||
"Data akun yang coba diimpor dalam format yang tidak dikenal. Harap unggah "
|
||||
"file XML dalam format XEP-0227 (format yang disediakan: %(mimetype)s)."
|
||||
|
||||
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/user.py:178
|
||||
msgid "Error"
|
||||
msgstr "Kesalahan"
|
||||
|
||||
#: snikket_web/main.py:36
|
||||
#: snikket_web/main.py:38
|
||||
msgid "Address"
|
||||
msgstr "Alamat"
|
||||
|
||||
#: snikket_web/main.py:46
|
||||
#: snikket_web/main.py:48
|
||||
msgid "Sign in"
|
||||
msgstr "Masuk"
|
||||
|
||||
#: snikket_web/main.py:55
|
||||
#: snikket_web/main.py:57
|
||||
msgid "Invalid username or password."
|
||||
msgstr "Nama pengguna atau kata sandi salah."
|
||||
|
||||
#: snikket_web/main.py:83
|
||||
#: snikket_web/main.py:85
|
||||
msgid "Login successful!"
|
||||
msgstr "Login berhasil!"
|
||||
|
||||
@@ -471,7 +472,7 @@ msgstr ""
|
||||
msgid "Software Versions"
|
||||
msgstr "Versi perangkat lunak"
|
||||
|
||||
#: snikket_web/templates/about.html:29
|
||||
#: snikket_web/templates/about.html:32
|
||||
msgid "Back to the main page"
|
||||
msgstr "Kembali ke halaman depan"
|
||||
|
||||
@@ -587,6 +588,46 @@ msgstr "Kumpulan data debug mentah"
|
||||
msgid "Copy complete output"
|
||||
msgstr "Salin keluaran lengkap"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:4
|
||||
#, python-format
|
||||
msgid "Delete circle %(circle_name)s"
|
||||
msgstr "Hapus kelompok %(circle_name)s"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:6
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
#: snikket_web/templates/admin_edit_circle.html:51
|
||||
msgid "Delete circle"
|
||||
msgstr "Hapus kelompok"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:8
|
||||
msgid "Are you sure you want to delete the following circle?"
|
||||
msgstr "Apakah anda yakin mau menghapus circle tersebut?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:13
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Berbahaya"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:14
|
||||
msgid ""
|
||||
"The circle and the corresponding chat will be deleted, permanently and "
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
msgstr ""
|
||||
"Circle dan datanya akan dihapus secara permanen, tidak bisa dibatalkan, "
|
||||
"segera setelah menekan tombol di bawah. <strong>Tidak ada jalan "
|
||||
"kembali!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:17
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_manage_data.html:14
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Kembali"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:4
|
||||
#, python-format
|
||||
msgid "Delete user %(user_name)s"
|
||||
@@ -601,10 +642,6 @@ msgstr "Hapus pengguna"
|
||||
msgid "Are you sure you want to delete the following user?"
|
||||
msgstr "Apakah anda yakin mau menghapus pengguna tersebut?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Berbahaya"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:16
|
||||
msgid ""
|
||||
"The user and their data will be deleted irrevocably, permanently and "
|
||||
@@ -615,14 +652,6 @@ msgstr ""
|
||||
"segera setelah menekan tombol di bawah. <strong>Tidak ada jalan kembali!</"
|
||||
"strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Kembali"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:14
|
||||
msgid "This is your main circle"
|
||||
msgstr "Ini kelompok utama anda"
|
||||
@@ -656,10 +685,6 @@ msgstr "Kelompok ini tidak memiliki percakapan grup."
|
||||
msgid "Return to circle list"
|
||||
msgstr "Kembali ke daftar circle"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
msgid "Delete circle"
|
||||
msgstr "Hapus kelompok"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:49
|
||||
msgid "Deleting a circle does not delete any users in the circle."
|
||||
msgstr ""
|
||||
@@ -1147,8 +1172,8 @@ msgstr "Aplikasi sudah dipasang?"
|
||||
#: snikket_web/templates/invite_register.html:16
|
||||
#: snikket_web/templates/invite_reset_view.html:21
|
||||
#: snikket_web/templates/invite_view.html:41
|
||||
#: snikket_web/templates/invite_view.html:106
|
||||
#: snikket_web/templates/invite_view.html:134
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
msgid "Open the app"
|
||||
msgstr "Buka aplikasi"
|
||||
|
||||
@@ -1250,7 +1275,6 @@ msgstr ""
|
||||
"tombol Pindai di bagian atas."
|
||||
|
||||
#: snikket_web/templates/invite_reset_view.html:26
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"Your camera will turn on. Point it at the square code below until it is "
|
||||
"within the highlighted square on your screen, and wait until the app "
|
||||
@@ -1389,7 +1413,7 @@ msgid "Get it on Google Play"
|
||||
msgstr "Dapatkan di Google Play"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:30
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:80
|
||||
msgid "Download on the App Store"
|
||||
msgstr "Unduh di App Store"
|
||||
|
||||
@@ -1425,11 +1449,11 @@ msgid "Scan invite code"
|
||||
msgstr "Pindai kode undangan"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:55
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:96
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
#: snikket_web/templates/invite_view.html:124
|
||||
#: snikket_web/templates/invite_view.html:140
|
||||
#: snikket_web/templates/invite_view.html:62
|
||||
#: snikket_web/templates/invite_view.html:74
|
||||
#: snikket_web/templates/invite_view.html:90
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:118
|
||||
msgid "Close"
|
||||
msgstr "Tutup"
|
||||
|
||||
@@ -1442,34 +1466,11 @@ msgstr ""
|
||||
"kode dengan kamera. Anda dapat menggunakan aplikasi pemindai QR atau "
|
||||
"aplikasi Snikket."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:63
|
||||
msgid "Using a QR code scanner"
|
||||
msgstr "Menggunakan pemindai kode QR"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:65
|
||||
msgid "Using the Snikket app"
|
||||
msgstr "Menggunakan Snikket"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:70
|
||||
msgid ""
|
||||
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
|
||||
msgstr ""
|
||||
"Gunakan pemindai <em>kode QR</em> di perangkat seluler Anda untuk memindai "
|
||||
"kode di bawah:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:76
|
||||
msgid ""
|
||||
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
|
||||
"button at the top."
|
||||
msgstr ""
|
||||
"Instal aplikasi Snikket di perangkat seluler Anda, buka, dan ketuk tombol "
|
||||
"'Pindai'."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:93
|
||||
#: snikket_web/templates/invite_view.html:71
|
||||
msgid "Install on iOS"
|
||||
msgstr "Pasang di iOS"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"After downloading Snikket from the App Store, you have to return to this "
|
||||
"invite link and tap on \"Open the app\" to proceed."
|
||||
@@ -1477,12 +1478,12 @@ msgstr ""
|
||||
"Setelah mengunduh Snikket dari App Store, Anda harus kembali ke tautan "
|
||||
"undangan ini dan klik \"Buka aplikasi\" untuk melanjutkan."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:101
|
||||
#: snikket_web/templates/invite_view.html:79
|
||||
msgid "First download Snikket from the App Store using the button below:"
|
||||
msgstr "Pertama, unduh Snikket dari App Store menggunakan tombol di bawah ini:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:103
|
||||
#: snikket_web/templates/invite_view.html:131
|
||||
#: snikket_web/templates/invite_view.html:81
|
||||
#: snikket_web/templates/invite_view.html:109
|
||||
msgid ""
|
||||
"After the installation is complete, you can return to this page and tap the "
|
||||
"\"Open the app\" button to continue with the setup:"
|
||||
@@ -1490,12 +1491,12 @@ msgstr ""
|
||||
"Setelah instalasi selesai, Anda dapat kembali ke halaman ini dan mengetuk "
|
||||
"tombol \"Buka aplikasi\" untuk melanjutkan pemasangan:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:121
|
||||
#: snikket_web/templates/invite_view.html:130
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:108
|
||||
msgid "Install via F-Droid"
|
||||
msgstr "Install melalui F-Droid"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:127
|
||||
#: snikket_web/templates/invite_view.html:105
|
||||
msgid ""
|
||||
"After installing Snikket via F-Droid, you have to return to this invite link "
|
||||
"and tap on \"Open the app\" to proceed."
|
||||
@@ -1503,7 +1504,7 @@ msgstr ""
|
||||
"Setelah menginstal Snikket melalui F-Droid, Anda harus kembali ke tautan "
|
||||
"undangan ini dan ketuk \"Buka aplikasi\" untuk melanjutkan."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:129
|
||||
#: snikket_web/templates/invite_view.html:107
|
||||
msgid "First install Snikket from F-Droid using the button below:"
|
||||
msgstr "Pertama install Snikket dari F-Droid menggunakan tombol di bawah ini:"
|
||||
|
||||
@@ -1653,6 +1654,26 @@ msgstr ""
|
||||
"Bagian ini memungkinkan Anda untuk mengontrol siapa yang bisa melihat profil "
|
||||
"Anda, seperti avatar dan nama panggilan."
|
||||
|
||||
#~ msgid "Using a QR code scanner"
|
||||
#~ msgstr "Menggunakan pemindai kode QR"
|
||||
|
||||
#~ msgid "Using the Snikket app"
|
||||
#~ msgstr "Menggunakan Snikket"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Use a <em>QR code</em> scanner on your mobile device to scan the code "
|
||||
#~ "below:"
|
||||
#~ msgstr ""
|
||||
#~ "Gunakan pemindai <em>kode QR</em> di perangkat seluler Anda untuk "
|
||||
#~ "memindai kode di bawah:"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Install the Snikket app on your mobile device, open it, and tap the "
|
||||
#~ "'Scan' button at the top."
|
||||
#~ msgstr ""
|
||||
#~ "Instal aplikasi Snikket di perangkat seluler Anda, buka, dan ketuk tombol "
|
||||
#~ "'Pindai'."
|
||||
|
||||
#~ msgid "Create password reset link for %(user_name)s"
|
||||
#~ msgstr "Buat tautan setel ulang kata sandi untuk %(user_name)s"
|
||||
|
||||
|
||||
Binary file not shown.
@@ -6,292 +6,298 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
|
||||
"PO-Revision-Date: 2021-05-19 15:12+0000\n"
|
||||
"Report-Msgid-Bugs-To: translations@snikket.org\n"
|
||||
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
|
||||
"PO-Revision-Date: 2023-07-13 11:17+0000\n"
|
||||
"Last-Translator: Roberto Resoli <roberto@resolutions.it>\n"
|
||||
"Language-Team: Italian <https://i18n.sotecware.net/projects/snikket/web-"
|
||||
"portal/it/>\n"
|
||||
"Language-Team: Italian <http://i18n.sotecware.net/projects/snikket/"
|
||||
"web-portal/it/>\n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.5.1\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Nome utente"
|
||||
|
||||
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
|
||||
msgid "Display name"
|
||||
msgstr "Nome visualizzato"
|
||||
|
||||
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
|
||||
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
|
||||
msgid "Access Level"
|
||||
msgstr "Livello di accesso"
|
||||
|
||||
#: snikket_web/admin.py:78
|
||||
#: snikket_web/admin.py:79
|
||||
msgid "Limited"
|
||||
msgstr "Limitato"
|
||||
|
||||
#: snikket_web/admin.py:79
|
||||
#: snikket_web/admin.py:80
|
||||
msgid "Normal user"
|
||||
msgstr "Utente normale"
|
||||
|
||||
#: snikket_web/admin.py:80
|
||||
#: snikket_web/admin.py:81
|
||||
msgid "Administrator"
|
||||
msgstr "Amministratore"
|
||||
|
||||
#: snikket_web/admin.py:85
|
||||
#: snikket_web/admin.py:86
|
||||
msgid "Update user"
|
||||
msgstr "Aggiorna utente"
|
||||
|
||||
#: snikket_web/admin.py:89
|
||||
#: snikket_web/admin.py:90
|
||||
msgid "Create password reset link"
|
||||
msgstr "Crea collegamento per reimpostare la password"
|
||||
|
||||
#: snikket_web/admin.py:107
|
||||
#: snikket_web/admin.py:108
|
||||
msgid "Password reset link created"
|
||||
msgstr "Creato collegamento per reimpostare la password"
|
||||
|
||||
#: snikket_web/admin.py:122
|
||||
#: snikket_web/admin.py:123
|
||||
msgid "User information updated."
|
||||
msgstr "Informazioni utente aggiornate."
|
||||
|
||||
#: snikket_web/admin.py:144
|
||||
#: snikket_web/admin.py:145
|
||||
msgid "Delete user permanently"
|
||||
msgstr "Elimina definitivamente l'utente"
|
||||
|
||||
#: snikket_web/admin.py:157
|
||||
#: snikket_web/admin.py:158
|
||||
msgid "User deleted"
|
||||
msgstr "Utente rimosso"
|
||||
|
||||
#: snikket_web/admin.py:195
|
||||
#: snikket_web/admin.py:196
|
||||
msgid "Password reset link not found"
|
||||
msgstr "Collegamento per reimpostare la password non trovato"
|
||||
|
||||
#: snikket_web/admin.py:207
|
||||
#: snikket_web/admin.py:208
|
||||
msgid "Password reset link deleted"
|
||||
msgstr "Eliminato collegamento per reimpostare la password"
|
||||
|
||||
#: snikket_web/admin.py:227
|
||||
#: snikket_web/admin.py:228
|
||||
msgid "Invite to circle"
|
||||
msgstr "Invita nella cerchia"
|
||||
|
||||
#: snikket_web/admin.py:233
|
||||
#: snikket_web/admin.py:234
|
||||
msgid "At least one circle must be selected"
|
||||
msgstr "Devi selezionare almeno una cerchia"
|
||||
|
||||
#: snikket_web/admin.py:238
|
||||
#: snikket_web/admin.py:239
|
||||
msgid "Valid for"
|
||||
msgstr "Valido per"
|
||||
|
||||
#: snikket_web/admin.py:240
|
||||
#: snikket_web/admin.py:241
|
||||
msgid "One hour"
|
||||
msgstr "Un'ora"
|
||||
|
||||
#: snikket_web/admin.py:241
|
||||
#: snikket_web/admin.py:242
|
||||
msgid "Twelve hours"
|
||||
msgstr "Dodici ore"
|
||||
|
||||
#: snikket_web/admin.py:242
|
||||
#: snikket_web/admin.py:243
|
||||
msgid "One day"
|
||||
msgstr "Un giorno"
|
||||
|
||||
#: snikket_web/admin.py:243
|
||||
#: snikket_web/admin.py:244
|
||||
msgid "One week"
|
||||
msgstr "Una settimana"
|
||||
|
||||
#: snikket_web/admin.py:244
|
||||
#: snikket_web/admin.py:245
|
||||
msgid "Four weeks"
|
||||
msgstr "Quattro settimane"
|
||||
|
||||
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
|
||||
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
|
||||
msgid "Invitation type"
|
||||
msgstr "Tipo di invito"
|
||||
|
||||
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
|
||||
msgid "Individual"
|
||||
msgstr "Individuale"
|
||||
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
|
||||
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
|
||||
msgid "Group"
|
||||
msgstr "Gruppo"
|
||||
|
||||
#: snikket_web/admin.py:259
|
||||
#: snikket_web/admin.py:260
|
||||
msgid "New invitation link"
|
||||
msgstr "Nuovo collegamento di invito"
|
||||
|
||||
#: snikket_web/admin.py:321
|
||||
#: snikket_web/admin.py:322
|
||||
msgid "Revoke"
|
||||
msgstr "Revoca"
|
||||
|
||||
#: snikket_web/admin.py:345
|
||||
#: snikket_web/admin.py:346
|
||||
msgid "Invitation created"
|
||||
msgstr "Invito creato"
|
||||
|
||||
#: snikket_web/admin.py:361
|
||||
#: snikket_web/admin.py:362
|
||||
msgid "No such invitation exists"
|
||||
msgstr "Questo invito non esiste"
|
||||
|
||||
#: snikket_web/admin.py:376
|
||||
#: snikket_web/admin.py:377
|
||||
msgid "Invitation revoked"
|
||||
msgstr "Invito revocato"
|
||||
|
||||
#: snikket_web/admin.py:393 snikket_web/admin.py:441
|
||||
#: snikket_web/admin.py:394 snikket_web/admin.py:442
|
||||
#: snikket_web/templates/admin_delete_circle.html:10
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
|
||||
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
|
||||
msgid "Create circle"
|
||||
msgstr "Crea cerchia"
|
||||
|
||||
#: snikket_web/admin.py:428
|
||||
#: snikket_web/admin.py:429
|
||||
msgid "Circle created"
|
||||
msgstr "Cerchia creata"
|
||||
|
||||
#: snikket_web/admin.py:446
|
||||
#: snikket_web/admin.py:447
|
||||
msgid "Select user"
|
||||
msgstr "Seleziona utente"
|
||||
|
||||
#: snikket_web/admin.py:451
|
||||
#: snikket_web/admin.py:452
|
||||
msgid "Update circle"
|
||||
msgstr "Modifica cerchia"
|
||||
|
||||
#: snikket_web/admin.py:455
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Elimina cerchia definitivamente"
|
||||
|
||||
#: snikket_web/admin.py:461
|
||||
#: snikket_web/admin.py:458
|
||||
msgid "Add user"
|
||||
msgstr "Aggiungi utente"
|
||||
|
||||
#: snikket_web/admin.py:477
|
||||
#: snikket_web/admin.py:474 snikket_web/admin.py:563
|
||||
msgid "No such circle exists"
|
||||
msgstr "Questa cerchia non esiste"
|
||||
|
||||
#: snikket_web/admin.py:514
|
||||
#: snikket_web/admin.py:511
|
||||
msgid "Circle data updated"
|
||||
msgstr "Dati della cerchia aggiornati"
|
||||
|
||||
#: snikket_web/admin.py:520
|
||||
msgid "Circle deleted"
|
||||
msgstr "Cerchia eliminata"
|
||||
|
||||
#: snikket_web/admin.py:531
|
||||
#: snikket_web/admin.py:521
|
||||
msgid "User added to circle"
|
||||
msgstr "Utente aggiunto alla cerchia"
|
||||
|
||||
#: snikket_web/admin.py:540
|
||||
#: snikket_web/admin.py:530
|
||||
msgid "User removed from circle"
|
||||
msgstr "Utente rimosso dalla cerchia"
|
||||
|
||||
#: snikket_web/admin.py:609
|
||||
#: snikket_web/admin.py:547
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Elimina cerchia definitivamente"
|
||||
|
||||
#: snikket_web/admin.py:574
|
||||
msgid "Circle deleted"
|
||||
msgstr "Cerchia eliminata"
|
||||
|
||||
#: snikket_web/admin.py:640
|
||||
msgid "Message contents"
|
||||
msgstr ""
|
||||
msgstr "Contenuto dei messaggi"
|
||||
|
||||
#: snikket_web/admin.py:615
|
||||
#: snikket_web/admin.py:646
|
||||
msgid "Only send to online users"
|
||||
msgstr ""
|
||||
msgstr "Inviare solo agli utenti online"
|
||||
|
||||
#: snikket_web/admin.py:619
|
||||
#: snikket_web/admin.py:650
|
||||
msgid "Post to all users"
|
||||
msgstr ""
|
||||
msgstr "Inviare a tutti gli utenti"
|
||||
|
||||
#: snikket_web/admin.py:623
|
||||
#: snikket_web/admin.py:654
|
||||
msgid "Send preview to yourself"
|
||||
msgstr ""
|
||||
msgstr "Inviare una anteprima a te stesso"
|
||||
|
||||
#: snikket_web/admin.py:645
|
||||
#: snikket_web/admin.py:676
|
||||
msgid "Announcement sent!"
|
||||
msgstr ""
|
||||
msgstr "Annuncio inviato!"
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
#: snikket_web/infra.py:53
|
||||
msgid "Main"
|
||||
msgstr "Principale"
|
||||
|
||||
#: snikket_web/invite.py:33
|
||||
#: snikket_web/invite.py:35
|
||||
msgid ""
|
||||
"The account data you tried to import is too large to upload. Please contact "
|
||||
"your Snikket operator."
|
||||
msgstr ""
|
||||
"I dati dell'utenza che hai provato ad importare sono troppo grandi per "
|
||||
"essere caricati. Contatta il tuo operatore Snikket."
|
||||
|
||||
#: snikket_web/invite.py:112
|
||||
#: snikket_web/invite.py:114
|
||||
msgid "Username"
|
||||
msgstr "Nome utente"
|
||||
|
||||
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
|
||||
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
|
||||
msgid "Password"
|
||||
msgstr "Password"
|
||||
|
||||
#: snikket_web/invite.py:120 snikket_web/invite.py:188
|
||||
#: snikket_web/invite.py:122 snikket_web/invite.py:190
|
||||
msgid "Confirm password"
|
||||
msgstr "Conferma password"
|
||||
|
||||
#: snikket_web/invite.py:124 snikket_web/invite.py:192
|
||||
#: snikket_web/invite.py:126 snikket_web/invite.py:194
|
||||
msgid "The passwords must match."
|
||||
msgstr "Le password devono essere identiche."
|
||||
|
||||
#: snikket_web/invite.py:129
|
||||
#: snikket_web/invite.py:131
|
||||
msgid "Create account"
|
||||
msgstr "Crea utenza"
|
||||
|
||||
#: snikket_web/invite.py:156
|
||||
#: snikket_web/invite.py:158
|
||||
msgid "That username is already taken."
|
||||
msgstr "Nome utente già in uso."
|
||||
|
||||
#: snikket_web/invite.py:160 snikket_web/invite.py:225
|
||||
#: snikket_web/invite.py:162 snikket_web/invite.py:227
|
||||
msgid "Registration was declined for unknown reasons."
|
||||
msgstr "Registrazione rifiutata per motivi sconosciuti."
|
||||
|
||||
#: snikket_web/invite.py:164
|
||||
#: snikket_web/invite.py:166
|
||||
msgid "The username is not valid."
|
||||
msgstr "Nome utente non valido."
|
||||
|
||||
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/templates/user_passwd.html:29
|
||||
msgid "Change password"
|
||||
msgstr "Cambia password"
|
||||
|
||||
#: snikket_web/invite.py:244
|
||||
#: snikket_web/invite.py:246
|
||||
msgid "Account data file"
|
||||
msgstr ""
|
||||
msgstr "File con i dati dell'utenza"
|
||||
|
||||
#: snikket_web/invite.py:248
|
||||
#: snikket_web/invite.py:250
|
||||
msgid "Import data"
|
||||
msgstr ""
|
||||
msgstr "Importa i dati"
|
||||
|
||||
#: snikket_web/invite.py:269
|
||||
#: snikket_web/invite.py:271
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The account data you tried to import is in an unknown format. Please upload "
|
||||
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
|
||||
msgstr ""
|
||||
"I dati dell'utenza che stai cercando di importare sono in un formato "
|
||||
"sconosciuto. Per favore, carica un file XML in formato XEP-0227 (formato "
|
||||
"fornito: %(mimetype)s)."
|
||||
|
||||
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/user.py:178
|
||||
msgid "Error"
|
||||
msgstr "Errore"
|
||||
|
||||
#: snikket_web/main.py:36
|
||||
#: snikket_web/main.py:38
|
||||
msgid "Address"
|
||||
msgstr "Indirizzo"
|
||||
|
||||
#: snikket_web/main.py:46
|
||||
#: snikket_web/main.py:48
|
||||
msgid "Sign in"
|
||||
msgstr "Accedi"
|
||||
|
||||
#: snikket_web/main.py:55
|
||||
#: snikket_web/main.py:57
|
||||
msgid "Invalid username or password."
|
||||
msgstr "Nome utente o password non validi."
|
||||
|
||||
#: snikket_web/main.py:83
|
||||
#: snikket_web/main.py:85
|
||||
msgid "Login successful!"
|
||||
msgstr "Accesso riuscito!"
|
||||
|
||||
@@ -341,11 +347,11 @@ msgstr "Modifica profilo"
|
||||
|
||||
#: snikket_web/user.py:82
|
||||
msgid "Account data"
|
||||
msgstr ""
|
||||
msgstr "Dati dell'utenza"
|
||||
|
||||
#: snikket_web/user.py:86
|
||||
msgid "Upload"
|
||||
msgstr ""
|
||||
msgstr "Caricare"
|
||||
|
||||
#: snikket_web/user.py:111
|
||||
msgid "Incorrect password."
|
||||
@@ -369,11 +375,11 @@ msgstr "Profilo aggiornato"
|
||||
|
||||
#: snikket_web/user.py:184
|
||||
msgid "Export"
|
||||
msgstr ""
|
||||
msgstr "Esportare"
|
||||
|
||||
#: snikket_web/user.py:202
|
||||
msgid "You currently have no account data to export."
|
||||
msgstr ""
|
||||
msgstr "Al momento non hai dati utente da esportare."
|
||||
|
||||
#: snikket_web/templates/_footer.html:4
|
||||
#, python-format
|
||||
@@ -466,7 +472,7 @@ msgstr ""
|
||||
msgid "Software Versions"
|
||||
msgstr "Versioni dei programmi"
|
||||
|
||||
#: snikket_web/templates/about.html:29
|
||||
#: snikket_web/templates/about.html:32
|
||||
msgid "Back to the main page"
|
||||
msgstr "Torna alla pagina principale"
|
||||
|
||||
@@ -582,6 +588,46 @@ msgstr "Dati diagnostici grezzi"
|
||||
msgid "Copy complete output"
|
||||
msgstr "Copia l'intero output"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:4
|
||||
#, python-format
|
||||
msgid "Delete circle %(circle_name)s"
|
||||
msgstr "Elimina la cerchia %(circle_name)s"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:6
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
#: snikket_web/templates/admin_edit_circle.html:51
|
||||
msgid "Delete circle"
|
||||
msgstr "Elimina cerchia"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:8
|
||||
msgid "Are you sure you want to delete the following circle?"
|
||||
msgstr "Vuoi veramente eliminare la seguente cerchia?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:13
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Pericolo"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:14
|
||||
msgid ""
|
||||
"The circle and the corresponding chat will be deleted, permanently and "
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
msgstr ""
|
||||
"La cerchia e la relativa chat verranno eliminate in modo permanente ed "
|
||||
"irreversibile non appena verrà premuto il pulsante sottostante. <strong>Non "
|
||||
"sarà possibile tornare indietro!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:17
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_manage_data.html:14
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Indietro"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:4
|
||||
#, python-format
|
||||
msgid "Delete user %(user_name)s"
|
||||
@@ -596,10 +642,6 @@ msgstr "Elimina utente"
|
||||
msgid "Are you sure you want to delete the following user?"
|
||||
msgstr "Sei sicura/o di volere eliminare il seguente utente?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Pericolo"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:16
|
||||
msgid ""
|
||||
"The user and their data will be deleted irrevocably, permanently and "
|
||||
@@ -610,14 +652,6 @@ msgstr ""
|
||||
"irreversibile non appena verrà premuto il pulsante sottostante. <strong>Non "
|
||||
"sarà possibile tornare sui propri passi!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Indietro"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:14
|
||||
msgid "This is your main circle"
|
||||
msgstr "Questa è la vostra cerchia principale"
|
||||
@@ -652,10 +686,6 @@ msgstr "Questa cerchia non è collegata ad una chat di gruppo."
|
||||
msgid "Return to circle list"
|
||||
msgstr "Ritorna alle lista delle cerchie"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
msgid "Delete circle"
|
||||
msgstr "Elimina cerchia"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:49
|
||||
msgid "Deleting a circle does not delete any users in the circle."
|
||||
msgstr "Eliminare una cerchia non elimina nessuno dei suoi utenti."
|
||||
@@ -666,7 +696,7 @@ msgstr "Membri della cerchia"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
msgid "The user has been deleted from the server."
|
||||
msgstr ""
|
||||
msgstr "L'utenza è stata eliminata dal server."
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:71
|
||||
#: snikket_web/templates/library.j2:108
|
||||
@@ -880,11 +910,12 @@ msgstr "Gestisci inviti"
|
||||
|
||||
#: snikket_web/templates/admin_home.html:35
|
||||
msgid "System health"
|
||||
msgstr ""
|
||||
msgstr "Stato di salute del sistema"
|
||||
|
||||
#: snikket_web/templates/admin_home.html:38
|
||||
msgid "View the server status or send a broadcast message to all users."
|
||||
msgstr ""
|
||||
"Veder e lo stato del server e trasmettere un messaggio a tutti gli utenti."
|
||||
|
||||
#: snikket_web/templates/admin_home.html:40
|
||||
msgid "Send a broadcast message to all users."
|
||||
@@ -1142,8 +1173,8 @@ msgstr "Applicazione già installata?"
|
||||
#: snikket_web/templates/invite_register.html:16
|
||||
#: snikket_web/templates/invite_reset_view.html:21
|
||||
#: snikket_web/templates/invite_view.html:41
|
||||
#: snikket_web/templates/invite_view.html:106
|
||||
#: snikket_web/templates/invite_view.html:134
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
msgid "Open the app"
|
||||
msgstr "Apri l'applicazione"
|
||||
|
||||
@@ -1245,7 +1276,6 @@ msgstr ""
|
||||
"Snikket utilizzando il pulsante di scansione in alto."
|
||||
|
||||
#: snikket_web/templates/invite_reset_view.html:26
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"Your camera will turn on. Point it at the square code below until it is "
|
||||
"within the highlighted square on your screen, and wait until the app "
|
||||
@@ -1385,7 +1415,7 @@ msgid "Get it on Google Play"
|
||||
msgstr "Scarica da Google Play"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:30
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:80
|
||||
msgid "Download on the App Store"
|
||||
msgstr "Scarica dall'App Store"
|
||||
|
||||
@@ -1422,11 +1452,11 @@ msgid "Scan invite code"
|
||||
msgstr "Scansiona il codice di invito"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:55
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:96
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
#: snikket_web/templates/invite_view.html:124
|
||||
#: snikket_web/templates/invite_view.html:140
|
||||
#: snikket_web/templates/invite_view.html:62
|
||||
#: snikket_web/templates/invite_view.html:74
|
||||
#: snikket_web/templates/invite_view.html:90
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:118
|
||||
msgid "Close"
|
||||
msgstr "Chiudi"
|
||||
|
||||
@@ -1439,34 +1469,11 @@ msgstr ""
|
||||
"con la fotocamera. Puoi usare un lettore di codici QR o l'applicazione "
|
||||
"Snikket stessa."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:63
|
||||
msgid "Using a QR code scanner"
|
||||
msgstr "Usa un lettore di codici QR"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:65
|
||||
msgid "Using the Snikket app"
|
||||
msgstr "Usa l'applicazione Snikket"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:70
|
||||
msgid ""
|
||||
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
|
||||
msgstr ""
|
||||
"Usa un lettore di <em>codici QR</em> sul tuo dispositivo mobile per "
|
||||
"scansionare il seguente codice:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:76
|
||||
msgid ""
|
||||
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
|
||||
"button at the top."
|
||||
msgstr ""
|
||||
"Installa l'applicazione Snikket sul tuo dispositivo mobile, aprila e poi "
|
||||
"premi il pulsante di scansione in alto."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:93
|
||||
#: snikket_web/templates/invite_view.html:71
|
||||
msgid "Install on iOS"
|
||||
msgstr "Installa su iOS"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"After downloading Snikket from the App Store, you have to return to this "
|
||||
"invite link and tap on \"Open the app\" to proceed."
|
||||
@@ -1474,14 +1481,14 @@ msgstr ""
|
||||
"Dopo aver scaricato Snikket dall'App Store, devi tornare a questo link di "
|
||||
"invito e toccare \"Apri nell'app\" per procedere."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:101
|
||||
#: snikket_web/templates/invite_view.html:79
|
||||
msgid "First download Snikket from the App Store using the button below:"
|
||||
msgstr ""
|
||||
"Per prima cosa, scarica Snikket dall'App Store utilizzando il pulsante qui "
|
||||
"sotto:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:103
|
||||
#: snikket_web/templates/invite_view.html:131
|
||||
#: snikket_web/templates/invite_view.html:81
|
||||
#: snikket_web/templates/invite_view.html:109
|
||||
msgid ""
|
||||
"After the installation is complete, you can return to this page and tap the "
|
||||
"\"Open the app\" button to continue with the setup:"
|
||||
@@ -1489,12 +1496,12 @@ msgstr ""
|
||||
"Dopo che l'installazione è completa, puoi tornare a questa pagina e toccare "
|
||||
"il pulsante \"Apri nell'app\" per continuare con la configurazione:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:121
|
||||
#: snikket_web/templates/invite_view.html:130
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:108
|
||||
msgid "Install via F-Droid"
|
||||
msgstr "Installa da F-Droid"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:127
|
||||
#: snikket_web/templates/invite_view.html:105
|
||||
msgid ""
|
||||
"After installing Snikket via F-Droid, you have to return to this invite link "
|
||||
"and tap on \"Open the app\" to proceed."
|
||||
@@ -1502,7 +1509,7 @@ msgstr ""
|
||||
"Dopo aver installato Snikket da F-Droid, devi tornare a questo link di "
|
||||
"invito e toccare su \"Apri nell'app\" per procedere."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:129
|
||||
#: snikket_web/templates/invite_view.html:107
|
||||
msgid "First install Snikket from F-Droid using the button below:"
|
||||
msgstr ""
|
||||
"Per prima cosa installa Snikket da F-Droid utilizzando il pulsante qui sotto:"
|
||||
@@ -1658,6 +1665,26 @@ msgstr ""
|
||||
"Questa sezione ti permette di controllare chi può visualizzare i dettagli "
|
||||
"del tuo profilo, come ad esempio l'avatar o il soprannome."
|
||||
|
||||
#~ msgid "Using a QR code scanner"
|
||||
#~ msgstr "Usa un lettore di codici QR"
|
||||
|
||||
#~ msgid "Using the Snikket app"
|
||||
#~ msgstr "Usa l'applicazione Snikket"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Use a <em>QR code</em> scanner on your mobile device to scan the code "
|
||||
#~ "below:"
|
||||
#~ msgstr ""
|
||||
#~ "Usa un lettore di <em>codici QR</em> sul tuo dispositivo mobile per "
|
||||
#~ "scansionare il seguente codice:"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Install the Snikket app on your mobile device, open it, and tap the "
|
||||
#~ "'Scan' button at the top."
|
||||
#~ msgstr ""
|
||||
#~ "Installa l'applicazione Snikket sul tuo dispositivo mobile, aprila e poi "
|
||||
#~ "premi il pulsante di scansione in alto."
|
||||
|
||||
#~ msgid "Create password reset link for %(user_name)s"
|
||||
#~ msgstr "Crea collegamento per reimpostare la password di %(user_name)s"
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
|
||||
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
|
||||
"PO-Revision-Date: 2021-01-28 17:55+0000\n"
|
||||
"Last-Translator: pep <pep@bouah.net>\n"
|
||||
"Language-Team: Japanese <https://i18n.sotecware.net/projects/snikket/web-"
|
||||
@@ -20,318 +20,319 @@ msgstr ""
|
||||
"X-Generator: Weblate 4.4.2\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "ロゲイン名"
|
||||
|
||||
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
|
||||
msgid "Display name"
|
||||
msgstr "表示名"
|
||||
|
||||
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
|
||||
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
|
||||
msgid "Access Level"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:78
|
||||
#: snikket_web/admin.py:79
|
||||
msgid "Limited"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:79
|
||||
#: snikket_web/admin.py:80
|
||||
msgid "Normal user"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:80
|
||||
#: snikket_web/admin.py:81
|
||||
#, fuzzy
|
||||
#| msgid "Admin area"
|
||||
msgid "Administrator"
|
||||
msgstr "管理"
|
||||
|
||||
#: snikket_web/admin.py:85
|
||||
#: snikket_web/admin.py:86
|
||||
#, fuzzy
|
||||
#| msgid "Update circle"
|
||||
msgid "Update user"
|
||||
msgstr "サークルを更新"
|
||||
|
||||
#: snikket_web/admin.py:89
|
||||
#: snikket_web/admin.py:90
|
||||
#, fuzzy
|
||||
#| msgid "Password reset link for %(user_name)s"
|
||||
msgid "Create password reset link"
|
||||
msgstr "%(user_name)s のパスワード再設定リンク"
|
||||
|
||||
#: snikket_web/admin.py:107
|
||||
#: snikket_web/admin.py:108
|
||||
#, fuzzy
|
||||
#| msgid "Password reset link for %(user_name)s"
|
||||
msgid "Password reset link created"
|
||||
msgstr "%(user_name)s のパスワード再設定リンク"
|
||||
|
||||
#: snikket_web/admin.py:122
|
||||
#: snikket_web/admin.py:123
|
||||
#, fuzzy
|
||||
#| msgid "User information"
|
||||
msgid "User information updated."
|
||||
msgstr "ユーザー詳細"
|
||||
|
||||
#: snikket_web/admin.py:144
|
||||
#: snikket_web/admin.py:145
|
||||
msgid "Delete user permanently"
|
||||
msgstr "ユーザーを削除する"
|
||||
|
||||
#: snikket_web/admin.py:157
|
||||
#: snikket_web/admin.py:158
|
||||
msgid "User deleted"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:195
|
||||
#: snikket_web/admin.py:196
|
||||
#, fuzzy
|
||||
#| msgid "Password reset link for %(user_name)s"
|
||||
msgid "Password reset link not found"
|
||||
msgstr "%(user_name)s のパスワード再設定リンク"
|
||||
|
||||
#: snikket_web/admin.py:207
|
||||
#: snikket_web/admin.py:208
|
||||
#, fuzzy
|
||||
#| msgid "Password reset link for %(user_name)s"
|
||||
msgid "Password reset link deleted"
|
||||
msgstr "%(user_name)s のパスワード再設定リンク"
|
||||
|
||||
#: snikket_web/admin.py:227
|
||||
#: snikket_web/admin.py:228
|
||||
msgid "Invite to circle"
|
||||
msgstr "サークルに紹介する"
|
||||
|
||||
#: snikket_web/admin.py:233
|
||||
#: snikket_web/admin.py:234
|
||||
msgid "At least one circle must be selected"
|
||||
msgstr "サークルを選択してください"
|
||||
|
||||
#: snikket_web/admin.py:238
|
||||
#: snikket_web/admin.py:239
|
||||
msgid "Valid for"
|
||||
msgstr "有効期限"
|
||||
|
||||
#: snikket_web/admin.py:240
|
||||
#: snikket_web/admin.py:241
|
||||
msgid "One hour"
|
||||
msgstr "一時間"
|
||||
|
||||
#: snikket_web/admin.py:241
|
||||
#: snikket_web/admin.py:242
|
||||
msgid "Twelve hours"
|
||||
msgstr "12時間"
|
||||
|
||||
#: snikket_web/admin.py:242
|
||||
#: snikket_web/admin.py:243
|
||||
msgid "One day"
|
||||
msgstr "一日"
|
||||
|
||||
#: snikket_web/admin.py:243
|
||||
#: snikket_web/admin.py:244
|
||||
msgid "One week"
|
||||
msgstr "一週間"
|
||||
|
||||
#: snikket_web/admin.py:244
|
||||
#: snikket_web/admin.py:245
|
||||
msgid "Four weeks"
|
||||
msgstr "4週間"
|
||||
|
||||
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
|
||||
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
|
||||
msgid "Invitation type"
|
||||
msgstr "紹介の種類"
|
||||
|
||||
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
|
||||
msgid "Individual"
|
||||
msgstr "一回"
|
||||
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
|
||||
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
|
||||
msgid "Group"
|
||||
msgstr "複数回"
|
||||
|
||||
#: snikket_web/admin.py:259
|
||||
#: snikket_web/admin.py:260
|
||||
msgid "New invitation link"
|
||||
msgstr "新しい紹介状"
|
||||
|
||||
#: snikket_web/admin.py:321
|
||||
#: snikket_web/admin.py:322
|
||||
msgid "Revoke"
|
||||
msgstr "取り消す"
|
||||
|
||||
#: snikket_web/admin.py:345
|
||||
#: snikket_web/admin.py:346
|
||||
#, fuzzy
|
||||
#| msgid "Invitation type"
|
||||
msgid "Invitation created"
|
||||
msgstr "紹介の種類"
|
||||
|
||||
#: snikket_web/admin.py:361
|
||||
#: snikket_web/admin.py:362
|
||||
#, fuzzy
|
||||
#| msgid "New invitation link"
|
||||
msgid "No such invitation exists"
|
||||
msgstr "新しい紹介状"
|
||||
|
||||
#: snikket_web/admin.py:376
|
||||
#: snikket_web/admin.py:377
|
||||
#, fuzzy
|
||||
#| msgid "Invitation type"
|
||||
msgid "Invitation revoked"
|
||||
msgstr "紹介の種類"
|
||||
|
||||
#: snikket_web/admin.py:393 snikket_web/admin.py:441
|
||||
#: snikket_web/admin.py:394 snikket_web/admin.py:442
|
||||
#: snikket_web/templates/admin_delete_circle.html:10
|
||||
msgid "Name"
|
||||
msgstr "名"
|
||||
|
||||
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
|
||||
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
|
||||
msgid "Create circle"
|
||||
msgstr "サークルを作成"
|
||||
|
||||
#: snikket_web/admin.py:428
|
||||
#: snikket_web/admin.py:429
|
||||
#, fuzzy
|
||||
#| msgid "Circle name"
|
||||
msgid "Circle created"
|
||||
msgstr "サークル名"
|
||||
|
||||
#: snikket_web/admin.py:446
|
||||
#: snikket_web/admin.py:447
|
||||
msgid "Select user"
|
||||
msgstr "ユーザー選択"
|
||||
|
||||
#: snikket_web/admin.py:451
|
||||
#: snikket_web/admin.py:452
|
||||
msgid "Update circle"
|
||||
msgstr "サークルを更新"
|
||||
|
||||
#: snikket_web/admin.py:455
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "サークルを削除"
|
||||
|
||||
#: snikket_web/admin.py:461
|
||||
#: snikket_web/admin.py:458
|
||||
msgid "Add user"
|
||||
msgstr "ユーザーを追加する"
|
||||
|
||||
#: snikket_web/admin.py:477
|
||||
#: snikket_web/admin.py:474 snikket_web/admin.py:563
|
||||
#, fuzzy
|
||||
#| msgid "No circles"
|
||||
msgid "No such circle exists"
|
||||
msgstr "なし"
|
||||
|
||||
#: snikket_web/admin.py:514
|
||||
#: snikket_web/admin.py:511
|
||||
#, fuzzy
|
||||
#| msgid "Circle name"
|
||||
msgid "Circle data updated"
|
||||
msgstr "サークル名"
|
||||
|
||||
#: snikket_web/admin.py:520
|
||||
#, fuzzy
|
||||
#| msgid "Circle members"
|
||||
msgid "Circle deleted"
|
||||
msgstr "サークル会員"
|
||||
|
||||
#: snikket_web/admin.py:531
|
||||
#: snikket_web/admin.py:521
|
||||
#, fuzzy
|
||||
#| msgid "Invite to circle"
|
||||
msgid "User added to circle"
|
||||
msgstr "サークルに紹介する"
|
||||
|
||||
#: snikket_web/admin.py:540
|
||||
#: snikket_web/admin.py:530
|
||||
#, fuzzy
|
||||
#| msgid "Remove user %(username)s from circle"
|
||||
msgid "User removed from circle"
|
||||
msgstr "%(username)s をサークルから外す"
|
||||
|
||||
#: snikket_web/admin.py:609
|
||||
#: snikket_web/admin.py:547
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "サークルを削除"
|
||||
|
||||
#: snikket_web/admin.py:574
|
||||
#, fuzzy
|
||||
#| msgid "Circle members"
|
||||
msgid "Circle deleted"
|
||||
msgstr "サークル会員"
|
||||
|
||||
#: snikket_web/admin.py:640
|
||||
msgid "Message contents"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:615
|
||||
#: snikket_web/admin.py:646
|
||||
msgid "Only send to online users"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:619
|
||||
#: snikket_web/admin.py:650
|
||||
msgid "Post to all users"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:623
|
||||
#: snikket_web/admin.py:654
|
||||
msgid "Send preview to yourself"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:645
|
||||
#: snikket_web/admin.py:676
|
||||
msgid "Announcement sent!"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
#: snikket_web/infra.py:53
|
||||
msgid "Main"
|
||||
msgstr "第一サークル"
|
||||
|
||||
#: snikket_web/invite.py:33
|
||||
#: snikket_web/invite.py:35
|
||||
msgid ""
|
||||
"The account data you tried to import is too large to upload. Please contact "
|
||||
"your Snikket operator."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:112
|
||||
#: snikket_web/invite.py:114
|
||||
msgid "Username"
|
||||
msgstr "ユーザー名"
|
||||
|
||||
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
|
||||
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
|
||||
msgid "Password"
|
||||
msgstr "パスワード"
|
||||
|
||||
#: snikket_web/invite.py:120 snikket_web/invite.py:188
|
||||
#: snikket_web/invite.py:122 snikket_web/invite.py:190
|
||||
msgid "Confirm password"
|
||||
msgstr "確認用パスワード"
|
||||
|
||||
#: snikket_web/invite.py:124 snikket_web/invite.py:192
|
||||
#: snikket_web/invite.py:126 snikket_web/invite.py:194
|
||||
#, fuzzy
|
||||
#| msgid "The passwords must match"
|
||||
msgid "The passwords must match."
|
||||
msgstr "確認用パスワードが一致しません"
|
||||
|
||||
#: snikket_web/invite.py:129
|
||||
#: snikket_web/invite.py:131
|
||||
msgid "Create account"
|
||||
msgstr "アカウント作成"
|
||||
|
||||
#: snikket_web/invite.py:156
|
||||
#: snikket_web/invite.py:158
|
||||
#, fuzzy
|
||||
#| msgid "That username is already taken"
|
||||
msgid "That username is already taken."
|
||||
msgstr "このユーザー名は存在しています"
|
||||
|
||||
#: snikket_web/invite.py:160 snikket_web/invite.py:225
|
||||
#: snikket_web/invite.py:162 snikket_web/invite.py:227
|
||||
#, fuzzy
|
||||
#| msgid "Registration was declined for unknown reasons"
|
||||
msgid "Registration was declined for unknown reasons."
|
||||
msgstr "理由不明の登録エラー"
|
||||
|
||||
#: snikket_web/invite.py:164
|
||||
#: snikket_web/invite.py:166
|
||||
#, fuzzy
|
||||
#| msgid "The username is not valid"
|
||||
msgid "The username is not valid."
|
||||
msgstr "ユーザー名が不正"
|
||||
|
||||
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/templates/user_passwd.html:29
|
||||
msgid "Change password"
|
||||
msgstr "パスワード変更"
|
||||
|
||||
#: snikket_web/invite.py:244
|
||||
#: snikket_web/invite.py:246
|
||||
msgid "Account data file"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:248
|
||||
#: snikket_web/invite.py:250
|
||||
msgid "Import data"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:269
|
||||
#: snikket_web/invite.py:271
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The account data you tried to import is in an unknown format. Please upload "
|
||||
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/user.py:178
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/main.py:36
|
||||
#: snikket_web/main.py:38
|
||||
msgid "Address"
|
||||
msgstr "アドレス"
|
||||
|
||||
#: snikket_web/main.py:46
|
||||
#: snikket_web/main.py:48
|
||||
msgid "Sign in"
|
||||
msgstr "サインイン"
|
||||
|
||||
#: snikket_web/main.py:55
|
||||
#: snikket_web/main.py:57
|
||||
msgid "Invalid username or password."
|
||||
msgstr "ユーザー名またはパスワードが不正。"
|
||||
|
||||
#: snikket_web/main.py:83
|
||||
#: snikket_web/main.py:85
|
||||
msgid "Login successful!"
|
||||
msgstr ""
|
||||
|
||||
@@ -498,7 +499,7 @@ msgstr ""
|
||||
msgid "Software Versions"
|
||||
msgstr "ソフトウェアバーション"
|
||||
|
||||
#: snikket_web/templates/about.html:29
|
||||
#: snikket_web/templates/about.html:32
|
||||
msgid "Back to the main page"
|
||||
msgstr "戻る"
|
||||
|
||||
@@ -605,6 +606,53 @@ msgstr ""
|
||||
msgid "Copy complete output"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:4
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Edit circle %(circle_name)s"
|
||||
msgid "Delete circle %(circle_name)s"
|
||||
msgstr "%(circle_name)s を管理"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:6
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
#: snikket_web/templates/admin_edit_circle.html:51
|
||||
msgid "Delete circle"
|
||||
msgstr "サークル削除"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:8
|
||||
#, fuzzy
|
||||
#| msgid "Are you sure you want to delete the following user?"
|
||||
msgid "Are you sure you want to delete the following circle?"
|
||||
msgstr "本当にこのユーザーを削除していいですか?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:13
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "警告"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:14
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "The user and their data will be deleted irrevocably, permanently and "
|
||||
#| "immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
#| "strong>"
|
||||
msgid ""
|
||||
"The circle and the corresponding chat will be deleted, permanently and "
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
msgstr ""
|
||||
"ユーザーとそのユーザーのデータが削除されます。<strong>戻ることができません</"
|
||||
"strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:17
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_manage_data.html:14
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "戻る"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:4
|
||||
#, python-format
|
||||
msgid "Delete user %(user_name)s"
|
||||
@@ -619,10 +667,6 @@ msgstr "ユーザー削除"
|
||||
msgid "Are you sure you want to delete the following user?"
|
||||
msgstr "本当にこのユーザーを削除していいですか?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "警告"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:16
|
||||
msgid ""
|
||||
"The user and their data will be deleted irrevocably, permanently and "
|
||||
@@ -632,14 +676,6 @@ msgstr ""
|
||||
"ユーザーとそのユーザーのデータが削除されます。<strong>戻ることができません</"
|
||||
"strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "戻る"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:14
|
||||
msgid "This is your main circle"
|
||||
msgstr ""
|
||||
@@ -672,10 +708,6 @@ msgstr ""
|
||||
msgid "Return to circle list"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
msgid "Delete circle"
|
||||
msgstr "サークル削除"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:49
|
||||
msgid "Deleting a circle does not delete any users in the circle."
|
||||
msgstr "サークルを削除しても会員は削除されまんせん。"
|
||||
@@ -1167,8 +1199,8 @@ msgstr ""
|
||||
#: snikket_web/templates/invite_register.html:16
|
||||
#: snikket_web/templates/invite_reset_view.html:21
|
||||
#: snikket_web/templates/invite_view.html:41
|
||||
#: snikket_web/templates/invite_view.html:106
|
||||
#: snikket_web/templates/invite_view.html:134
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
msgid "Open the app"
|
||||
msgstr ""
|
||||
|
||||
@@ -1265,7 +1297,6 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_reset_view.html:26
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"Your camera will turn on. Point it at the square code below until it is "
|
||||
"within the highlighted square on your screen, and wait until the app "
|
||||
@@ -1391,7 +1422,7 @@ msgid "Get it on Google Play"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:30
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:80
|
||||
msgid "Download on the App Store"
|
||||
msgstr ""
|
||||
|
||||
@@ -1422,11 +1453,11 @@ msgid "Scan invite code"
|
||||
msgstr "紹介状をスキャン"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:55
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:96
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
#: snikket_web/templates/invite_view.html:124
|
||||
#: snikket_web/templates/invite_view.html:140
|
||||
#: snikket_web/templates/invite_view.html:62
|
||||
#: snikket_web/templates/invite_view.html:74
|
||||
#: snikket_web/templates/invite_view.html:90
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:118
|
||||
msgid "Close"
|
||||
msgstr "閉める"
|
||||
|
||||
@@ -1436,58 +1467,39 @@ msgid ""
|
||||
"your camera. You can use either a QR scanner app or the Snikket app itself."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:63
|
||||
msgid "Using a QR code scanner"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:65
|
||||
msgid "Using the Snikket app"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:70
|
||||
msgid ""
|
||||
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:76
|
||||
msgid ""
|
||||
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
|
||||
"button at the top."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:93
|
||||
#: snikket_web/templates/invite_view.html:71
|
||||
msgid "Install on iOS"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"After downloading Snikket from the App Store, you have to return to this "
|
||||
"invite link and tap on \"Open the app\" to proceed."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:101
|
||||
#: snikket_web/templates/invite_view.html:79
|
||||
msgid "First download Snikket from the App Store using the button below:"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:103
|
||||
#: snikket_web/templates/invite_view.html:131
|
||||
#: snikket_web/templates/invite_view.html:81
|
||||
#: snikket_web/templates/invite_view.html:109
|
||||
msgid ""
|
||||
"After the installation is complete, you can return to this page and tap the "
|
||||
"\"Open the app\" button to continue with the setup:"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:121
|
||||
#: snikket_web/templates/invite_view.html:130
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:108
|
||||
msgid "Install via F-Droid"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:127
|
||||
#: snikket_web/templates/invite_view.html:105
|
||||
msgid ""
|
||||
"After installing Snikket via F-Droid, you have to return to this invite link "
|
||||
"and tap on \"Open the app\" to proceed."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:129
|
||||
#: snikket_web/templates/invite_view.html:107
|
||||
msgid "First install Snikket from F-Droid using the button below:"
|
||||
msgstr ""
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: translations@snikket.org\n"
|
||||
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
|
||||
"PO-Revision-Date: 2022-01-21 15:00+0000\n"
|
||||
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
|
||||
"PO-Revision-Date: 2023-04-04 14:11+0000\n"
|
||||
"Last-Translator: misiek <migelazur@mailbox.org>\n"
|
||||
"Language-Team: Polish <http://i18n.sotecware.net/projects/snikket/web-portal/"
|
||||
"pl/>\n"
|
||||
@@ -18,206 +18,207 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||
"|| n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 4.8.1\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Login"
|
||||
|
||||
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
|
||||
msgid "Display name"
|
||||
msgstr "Nazwa wyświetlana"
|
||||
|
||||
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
|
||||
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
|
||||
msgid "Access Level"
|
||||
msgstr "Poziom dostępu"
|
||||
|
||||
#: snikket_web/admin.py:78
|
||||
#: snikket_web/admin.py:79
|
||||
msgid "Limited"
|
||||
msgstr "Ograniczony"
|
||||
|
||||
#: snikket_web/admin.py:79
|
||||
#: snikket_web/admin.py:80
|
||||
msgid "Normal user"
|
||||
msgstr "Zwykły użytkownik"
|
||||
|
||||
#: snikket_web/admin.py:80
|
||||
#: snikket_web/admin.py:81
|
||||
msgid "Administrator"
|
||||
msgstr "Administrator"
|
||||
|
||||
#: snikket_web/admin.py:85
|
||||
#: snikket_web/admin.py:86
|
||||
msgid "Update user"
|
||||
msgstr "Zapisz ustawienia użytkownika"
|
||||
|
||||
#: snikket_web/admin.py:89
|
||||
#: snikket_web/admin.py:90
|
||||
msgid "Create password reset link"
|
||||
msgstr "Stwórz link do zresetowania hasła"
|
||||
|
||||
#: snikket_web/admin.py:107
|
||||
#: snikket_web/admin.py:108
|
||||
msgid "Password reset link created"
|
||||
msgstr "Utworzono link resetowania hasła"
|
||||
|
||||
#: snikket_web/admin.py:122
|
||||
#: snikket_web/admin.py:123
|
||||
msgid "User information updated."
|
||||
msgstr "Zaktualizowano informacje o użytkowniku."
|
||||
|
||||
#: snikket_web/admin.py:144
|
||||
#: snikket_web/admin.py:145
|
||||
msgid "Delete user permanently"
|
||||
msgstr "Usuń użytkownika bezpowrotnie"
|
||||
|
||||
#: snikket_web/admin.py:157
|
||||
#: snikket_web/admin.py:158
|
||||
msgid "User deleted"
|
||||
msgstr "Użytkownik został usunięty"
|
||||
|
||||
#: snikket_web/admin.py:195
|
||||
#: snikket_web/admin.py:196
|
||||
msgid "Password reset link not found"
|
||||
msgstr "Nie znaleziono linku do zresetowania hasła"
|
||||
|
||||
#: snikket_web/admin.py:207
|
||||
#: snikket_web/admin.py:208
|
||||
msgid "Password reset link deleted"
|
||||
msgstr "Usunięto link resetowania hasła"
|
||||
|
||||
#: snikket_web/admin.py:227
|
||||
#: snikket_web/admin.py:228
|
||||
msgid "Invite to circle"
|
||||
msgstr "Zaproś do kręgu"
|
||||
|
||||
#: snikket_web/admin.py:233
|
||||
#: snikket_web/admin.py:234
|
||||
msgid "At least one circle must be selected"
|
||||
msgstr "Należy wybrać przynajmniej jeden krąg"
|
||||
|
||||
#: snikket_web/admin.py:238
|
||||
#: snikket_web/admin.py:239
|
||||
msgid "Valid for"
|
||||
msgstr "Ważne przez"
|
||||
|
||||
#: snikket_web/admin.py:240
|
||||
#: snikket_web/admin.py:241
|
||||
msgid "One hour"
|
||||
msgstr "Godzinę"
|
||||
|
||||
#: snikket_web/admin.py:241
|
||||
#: snikket_web/admin.py:242
|
||||
msgid "Twelve hours"
|
||||
msgstr "Dwanaście godzin"
|
||||
|
||||
#: snikket_web/admin.py:242
|
||||
#: snikket_web/admin.py:243
|
||||
msgid "One day"
|
||||
msgstr "Dzień"
|
||||
|
||||
#: snikket_web/admin.py:243
|
||||
#: snikket_web/admin.py:244
|
||||
msgid "One week"
|
||||
msgstr "Tydzień"
|
||||
|
||||
#: snikket_web/admin.py:244
|
||||
#: snikket_web/admin.py:245
|
||||
msgid "Four weeks"
|
||||
msgstr "Cztery tygodnie"
|
||||
|
||||
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
|
||||
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
|
||||
msgid "Invitation type"
|
||||
msgstr "Typ zaproszenia"
|
||||
|
||||
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
|
||||
msgid "Individual"
|
||||
msgstr "Indywidualne"
|
||||
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
|
||||
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
|
||||
msgid "Group"
|
||||
msgstr "Grupowe"
|
||||
|
||||
#: snikket_web/admin.py:259
|
||||
#: snikket_web/admin.py:260
|
||||
msgid "New invitation link"
|
||||
msgstr "Nowy link z zaproszeniem"
|
||||
|
||||
#: snikket_web/admin.py:321
|
||||
#: snikket_web/admin.py:322
|
||||
msgid "Revoke"
|
||||
msgstr "Unieważnij"
|
||||
|
||||
#: snikket_web/admin.py:345
|
||||
#: snikket_web/admin.py:346
|
||||
msgid "Invitation created"
|
||||
msgstr "Utworzono zaproszenie"
|
||||
|
||||
#: snikket_web/admin.py:361
|
||||
#: snikket_web/admin.py:362
|
||||
msgid "No such invitation exists"
|
||||
msgstr "Takie zaproszenie nie istnieje"
|
||||
|
||||
#: snikket_web/admin.py:376
|
||||
#: snikket_web/admin.py:377
|
||||
msgid "Invitation revoked"
|
||||
msgstr "Unieważniono zaproszenie"
|
||||
|
||||
#: snikket_web/admin.py:393 snikket_web/admin.py:441
|
||||
#: snikket_web/admin.py:394 snikket_web/admin.py:442
|
||||
#: snikket_web/templates/admin_delete_circle.html:10
|
||||
msgid "Name"
|
||||
msgstr "Nazwa"
|
||||
|
||||
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
|
||||
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
|
||||
msgid "Create circle"
|
||||
msgstr "Utwórz krąg"
|
||||
|
||||
#: snikket_web/admin.py:428
|
||||
#: snikket_web/admin.py:429
|
||||
msgid "Circle created"
|
||||
msgstr "Utworzono krąg"
|
||||
|
||||
#: snikket_web/admin.py:446
|
||||
#: snikket_web/admin.py:447
|
||||
msgid "Select user"
|
||||
msgstr "Wybierz użytkownika"
|
||||
|
||||
#: snikket_web/admin.py:451
|
||||
#: snikket_web/admin.py:452
|
||||
msgid "Update circle"
|
||||
msgstr "Zaktualizuj ustawienia kręgu"
|
||||
|
||||
#: snikket_web/admin.py:455
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Usuń krąg bezpowrotnie"
|
||||
|
||||
#: snikket_web/admin.py:461
|
||||
#: snikket_web/admin.py:458
|
||||
msgid "Add user"
|
||||
msgstr "Dodaj użytkownika"
|
||||
|
||||
#: snikket_web/admin.py:477
|
||||
#: snikket_web/admin.py:474 snikket_web/admin.py:563
|
||||
msgid "No such circle exists"
|
||||
msgstr "Taki krąg nie istnieje"
|
||||
|
||||
#: snikket_web/admin.py:514
|
||||
#: snikket_web/admin.py:511
|
||||
msgid "Circle data updated"
|
||||
msgstr "Zaktualizowano dane kręgu"
|
||||
|
||||
#: snikket_web/admin.py:520
|
||||
msgid "Circle deleted"
|
||||
msgstr "Krąg został usunięty"
|
||||
|
||||
#: snikket_web/admin.py:531
|
||||
#: snikket_web/admin.py:521
|
||||
msgid "User added to circle"
|
||||
msgstr "Dodano użytkownika do kręgu"
|
||||
|
||||
#: snikket_web/admin.py:540
|
||||
#: snikket_web/admin.py:530
|
||||
msgid "User removed from circle"
|
||||
msgstr "Usunięto użytkownika z kręgu"
|
||||
|
||||
#: snikket_web/admin.py:609
|
||||
#: snikket_web/admin.py:547
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Usuń krąg bezpowrotnie"
|
||||
|
||||
#: snikket_web/admin.py:574
|
||||
msgid "Circle deleted"
|
||||
msgstr "Krąg został usunięty"
|
||||
|
||||
#: snikket_web/admin.py:640
|
||||
msgid "Message contents"
|
||||
msgstr "Treść wiadomości"
|
||||
|
||||
#: snikket_web/admin.py:615
|
||||
#: snikket_web/admin.py:646
|
||||
msgid "Only send to online users"
|
||||
msgstr "Wyślij jedynie do użytkowników online"
|
||||
|
||||
#: snikket_web/admin.py:619
|
||||
#: snikket_web/admin.py:650
|
||||
msgid "Post to all users"
|
||||
msgstr "Wyślij do wszystkich użytkowników"
|
||||
|
||||
#: snikket_web/admin.py:623
|
||||
#: snikket_web/admin.py:654
|
||||
msgid "Send preview to yourself"
|
||||
msgstr "Prześlij do siebie podgląd wiadomości"
|
||||
|
||||
#: snikket_web/admin.py:645
|
||||
#: snikket_web/admin.py:676
|
||||
msgid "Announcement sent!"
|
||||
msgstr "Komunikat wysłany!"
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
#: snikket_web/infra.py:53
|
||||
msgid "Main"
|
||||
msgstr "Główny"
|
||||
|
||||
#: snikket_web/invite.py:33
|
||||
#: snikket_web/invite.py:35
|
||||
msgid ""
|
||||
"The account data you tried to import is too large to upload. Please contact "
|
||||
"your Snikket operator."
|
||||
@@ -225,52 +226,52 @@ msgstr ""
|
||||
"Plik z danymi konta, które próbujesz zaimportować, jest zbyt duży. "
|
||||
"Skontaktuj się z administratorem twojego serwera Snikket."
|
||||
|
||||
#: snikket_web/invite.py:112
|
||||
#: snikket_web/invite.py:114
|
||||
msgid "Username"
|
||||
msgstr "Nazwa użytkownika"
|
||||
|
||||
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
|
||||
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
|
||||
msgid "Password"
|
||||
msgstr "Hasło"
|
||||
|
||||
#: snikket_web/invite.py:120 snikket_web/invite.py:188
|
||||
#: snikket_web/invite.py:122 snikket_web/invite.py:190
|
||||
msgid "Confirm password"
|
||||
msgstr "Potwierdź hasło"
|
||||
|
||||
#: snikket_web/invite.py:124 snikket_web/invite.py:192
|
||||
#: snikket_web/invite.py:126 snikket_web/invite.py:194
|
||||
msgid "The passwords must match."
|
||||
msgstr "Hasła muszą się zgadzać."
|
||||
|
||||
#: snikket_web/invite.py:129
|
||||
#: snikket_web/invite.py:131
|
||||
msgid "Create account"
|
||||
msgstr "Utwórz konto"
|
||||
|
||||
#: snikket_web/invite.py:156
|
||||
#: snikket_web/invite.py:158
|
||||
msgid "That username is already taken."
|
||||
msgstr "Ta nazwa użytkownika jest już zajęta."
|
||||
|
||||
#: snikket_web/invite.py:160 snikket_web/invite.py:225
|
||||
#: snikket_web/invite.py:162 snikket_web/invite.py:227
|
||||
msgid "Registration was declined for unknown reasons."
|
||||
msgstr "Z nieznanych przyczyn rejestracja została odrzucona."
|
||||
|
||||
#: snikket_web/invite.py:164
|
||||
#: snikket_web/invite.py:166
|
||||
msgid "The username is not valid."
|
||||
msgstr "Ta nazwa użytkownika jest nieprawidłowa."
|
||||
|
||||
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/templates/user_passwd.html:29
|
||||
msgid "Change password"
|
||||
msgstr "Zmień hasło"
|
||||
|
||||
#: snikket_web/invite.py:244
|
||||
#: snikket_web/invite.py:246
|
||||
msgid "Account data file"
|
||||
msgstr "Plik z danymi konta"
|
||||
|
||||
#: snikket_web/invite.py:248
|
||||
#: snikket_web/invite.py:250
|
||||
msgid "Import data"
|
||||
msgstr "Importuj dane"
|
||||
|
||||
#: snikket_web/invite.py:269
|
||||
#: snikket_web/invite.py:271
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The account data you tried to import is in an unknown format. Please upload "
|
||||
@@ -279,24 +280,24 @@ msgstr ""
|
||||
"Dane konta, które próbujesz zaimportować, mają nieznany format. Proszę "
|
||||
"wybrać plik w formacie XML zgodnym z XEP-0227 (podany format: %(mimetype)s)."
|
||||
|
||||
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/user.py:178
|
||||
msgid "Error"
|
||||
msgstr "Błąd"
|
||||
|
||||
#: snikket_web/main.py:36
|
||||
#: snikket_web/main.py:38
|
||||
msgid "Address"
|
||||
msgstr "Adres"
|
||||
|
||||
#: snikket_web/main.py:46
|
||||
#: snikket_web/main.py:48
|
||||
msgid "Sign in"
|
||||
msgstr "Zaloguj się"
|
||||
|
||||
#: snikket_web/main.py:55
|
||||
#: snikket_web/main.py:57
|
||||
msgid "Invalid username or password."
|
||||
msgstr "Nieprawidłowa nazwa użytkownika lub hasło."
|
||||
|
||||
#: snikket_web/main.py:83
|
||||
#: snikket_web/main.py:85
|
||||
msgid "Login successful!"
|
||||
msgstr "Zalogowano się pomyślnie!"
|
||||
|
||||
@@ -471,7 +472,7 @@ msgstr ""
|
||||
msgid "Software Versions"
|
||||
msgstr "Wersje oprogramowania"
|
||||
|
||||
#: snikket_web/templates/about.html:29
|
||||
#: snikket_web/templates/about.html:32
|
||||
msgid "Back to the main page"
|
||||
msgstr "Wróć do strony głównej"
|
||||
|
||||
@@ -587,6 +588,45 @@ msgstr "Surowy zrzut debugowania"
|
||||
msgid "Copy complete output"
|
||||
msgstr "Skopiuj całą zawartość"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:4
|
||||
#, python-format
|
||||
msgid "Delete circle %(circle_name)s"
|
||||
msgstr "Usuń krąg %(circle_name)s"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:6
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
#: snikket_web/templates/admin_edit_circle.html:51
|
||||
msgid "Delete circle"
|
||||
msgstr "Usuń krąg"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:8
|
||||
msgid "Are you sure you want to delete the following circle?"
|
||||
msgstr "Czy na pewno chcesz usunąć ten krąg?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:13
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Uwaga"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:14
|
||||
msgid ""
|
||||
"The circle and the corresponding chat will be deleted, permanently and "
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
msgstr ""
|
||||
"Krąg oraz jego dane zostaną trwale i natychmiastowo usunięte po naciśnięciu "
|
||||
"poniższego przycisku. <strong>Nie będzie można tego cofnąć!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:17
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_manage_data.html:14
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Wstecz"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:4
|
||||
#, python-format
|
||||
msgid "Delete user %(user_name)s"
|
||||
@@ -601,10 +641,6 @@ msgstr "Usuń użytkownika"
|
||||
msgid "Are you sure you want to delete the following user?"
|
||||
msgstr "Czy na pewno chcesz usunąć tego użytkownika?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Uwaga"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:16
|
||||
msgid ""
|
||||
"The user and their data will be deleted irrevocably, permanently and "
|
||||
@@ -615,14 +651,6 @@ msgstr ""
|
||||
"usunięte po naciśnięciu poniższego przycisku. <strong>Nie będzie można tego "
|
||||
"cofnąć!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Wstecz"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:14
|
||||
msgid "This is your main circle"
|
||||
msgstr "To twój główny krąg"
|
||||
@@ -657,10 +685,6 @@ msgstr "Ten krąg nie jest powiązany z żadnym czatem grupowym."
|
||||
msgid "Return to circle list"
|
||||
msgstr "Wróć do listy kręgów"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
msgid "Delete circle"
|
||||
msgstr "Usuń krąg"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:49
|
||||
msgid "Deleting a circle does not delete any users in the circle."
|
||||
msgstr "Usunięcie kręgu nie usunie z serwera jego użytkowników."
|
||||
@@ -1151,8 +1175,8 @@ msgstr "Aplikacja jest już zainstalowana?"
|
||||
#: snikket_web/templates/invite_register.html:16
|
||||
#: snikket_web/templates/invite_reset_view.html:21
|
||||
#: snikket_web/templates/invite_view.html:41
|
||||
#: snikket_web/templates/invite_view.html:106
|
||||
#: snikket_web/templates/invite_view.html:134
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
msgid "Open the app"
|
||||
msgstr "Otwórz aplikację"
|
||||
|
||||
@@ -1254,7 +1278,6 @@ msgstr ""
|
||||
"przycisku Skanowania, który znajduje się u góry."
|
||||
|
||||
#: snikket_web/templates/invite_reset_view.html:26
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"Your camera will turn on. Point it at the square code below until it is "
|
||||
"within the highlighted square on your screen, and wait until the app "
|
||||
@@ -1319,8 +1342,8 @@ msgid ""
|
||||
"\"%(login_url)s\">manage your account</a>."
|
||||
msgstr ""
|
||||
"Możesz bezpiecznie zamknąć tę stronę lub zalogować się do Portalu "
|
||||
"Użytkownika Snikket, aby <a href=\"%(login_url)s\">zarządzać swoim "
|
||||
"kontem</a>."
|
||||
"Użytkownika Snikket, aby <a href=\"%(login_url)s\">zarządzać swoim kontem</"
|
||||
"a>."
|
||||
|
||||
#: snikket_web/templates/invite_success.html:21
|
||||
msgid "Import successful"
|
||||
@@ -1398,7 +1421,7 @@ msgid "Get it on Google Play"
|
||||
msgstr "Pobierz w Google Play"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:30
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:80
|
||||
msgid "Download on the App Store"
|
||||
msgstr "Pobierz w App Store"
|
||||
|
||||
@@ -1435,11 +1458,11 @@ msgid "Scan invite code"
|
||||
msgstr "Zeskanuj kod zaproszenia"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:55
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:96
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
#: snikket_web/templates/invite_view.html:124
|
||||
#: snikket_web/templates/invite_view.html:140
|
||||
#: snikket_web/templates/invite_view.html:62
|
||||
#: snikket_web/templates/invite_view.html:74
|
||||
#: snikket_web/templates/invite_view.html:90
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:118
|
||||
msgid "Close"
|
||||
msgstr "Zamknij"
|
||||
|
||||
@@ -1452,34 +1475,11 @@ msgstr ""
|
||||
"poniższy kod aparatem. Możesz również skorzystać ze skanera kodów QR lub "
|
||||
"samej aplikacji Snikket."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:63
|
||||
msgid "Using a QR code scanner"
|
||||
msgstr "Używając skanera kodów QR"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:65
|
||||
msgid "Using the Snikket app"
|
||||
msgstr "Używając aplikacji Snikket"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:70
|
||||
msgid ""
|
||||
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
|
||||
msgstr ""
|
||||
"Użyj skanera <em>kodów QR</em> na swoim urządzeniu mobilnym, by zeskanować "
|
||||
"poniższy kod:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:76
|
||||
msgid ""
|
||||
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
|
||||
"button at the top."
|
||||
msgstr ""
|
||||
"Zainstaluj aplikację Snikket na swoim urządzeniu mobilnym, otwórz ją, "
|
||||
"następnie wciśnij przycisk \"Skanuj\" u góry."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:93
|
||||
#: snikket_web/templates/invite_view.html:71
|
||||
msgid "Install on iOS"
|
||||
msgstr "Zainstaluj na iOS"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"After downloading Snikket from the App Store, you have to return to this "
|
||||
"invite link and tap on \"Open the app\" to proceed."
|
||||
@@ -1487,14 +1487,14 @@ msgstr ""
|
||||
"Po pobraniu aplikacji Snikket z App Store musisz wrócić do tego linku z "
|
||||
"zaproszeniem, następnie kliknąć \"Otwórz aplikację\", aby kontynuować."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:101
|
||||
#: snikket_web/templates/invite_view.html:79
|
||||
msgid "First download Snikket from the App Store using the button below:"
|
||||
msgstr ""
|
||||
"Najpierw pobierz aplikację Snikket z App Store za pomocą poniższego "
|
||||
"przycisku:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:103
|
||||
#: snikket_web/templates/invite_view.html:131
|
||||
#: snikket_web/templates/invite_view.html:81
|
||||
#: snikket_web/templates/invite_view.html:109
|
||||
msgid ""
|
||||
"After the installation is complete, you can return to this page and tap the "
|
||||
"\"Open the app\" button to continue with the setup:"
|
||||
@@ -1502,12 +1502,12 @@ msgstr ""
|
||||
"Po zakończeniu instalacji możesz wrócić do tej strony i kliknąć przycisk "
|
||||
"\"Otwórz aplikację\", aby kontynuować:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:121
|
||||
#: snikket_web/templates/invite_view.html:130
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:108
|
||||
msgid "Install via F-Droid"
|
||||
msgstr "Zainstaluj przez F-Droid"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:127
|
||||
#: snikket_web/templates/invite_view.html:105
|
||||
msgid ""
|
||||
"After installing Snikket via F-Droid, you have to return to this invite link "
|
||||
"and tap on \"Open the app\" to proceed."
|
||||
@@ -1516,7 +1516,7 @@ msgstr ""
|
||||
"linku z zaproszeniem, następnie kliknąć \"Otwórz aplikację\", aby "
|
||||
"kontynuować."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:129
|
||||
#: snikket_web/templates/invite_view.html:107
|
||||
msgid "First install Snikket from F-Droid using the button below:"
|
||||
msgstr ""
|
||||
"Najpierw zainstaluj aplikację Snikket z F-Droid, korzystając z poniższego "
|
||||
@@ -1669,6 +1669,26 @@ msgstr ""
|
||||
"Ta sekcja pozwoli ci na zarządzenie widocznością informacji o twoim profilu "
|
||||
"przez innych, jak awatar lub pseudonim."
|
||||
|
||||
#~ msgid "Using a QR code scanner"
|
||||
#~ msgstr "Używając skanera kodów QR"
|
||||
|
||||
#~ msgid "Using the Snikket app"
|
||||
#~ msgstr "Używając aplikacji Snikket"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Use a <em>QR code</em> scanner on your mobile device to scan the code "
|
||||
#~ "below:"
|
||||
#~ msgstr ""
|
||||
#~ "Użyj skanera <em>kodów QR</em> na swoim urządzeniu mobilnym, by "
|
||||
#~ "zeskanować poniższy kod:"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Install the Snikket app on your mobile device, open it, and tap the "
|
||||
#~ "'Scan' button at the top."
|
||||
#~ msgstr ""
|
||||
#~ "Zainstaluj aplikację Snikket na swoim urządzeniu mobilnym, otwórz ją, "
|
||||
#~ "następnie wciśnij przycisk \"Skanuj\" u góry."
|
||||
|
||||
#~ msgid "Create password reset link for %(user_name)s"
|
||||
#~ msgstr "Utwórz link resetowania hasła dla %(user_name)s"
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
|
||||
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
|
||||
"PO-Revision-Date: 2021-03-12 23:04+0000\n"
|
||||
"Last-Translator: GodGoldfish <godgoldfish@pm.me>\n"
|
||||
"Language-Team: Russian <https://i18n.sotecware.net/projects/snikket/web-"
|
||||
@@ -21,296 +21,297 @@ msgstr ""
|
||||
"X-Generator: Weblate 4.5.1\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Логин"
|
||||
|
||||
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
|
||||
msgid "Display name"
|
||||
msgstr "Отображаемое имя"
|
||||
|
||||
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
|
||||
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
|
||||
msgid "Access Level"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:78
|
||||
#: snikket_web/admin.py:79
|
||||
msgid "Limited"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:79
|
||||
#: snikket_web/admin.py:80
|
||||
msgid "Normal user"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:80
|
||||
#: snikket_web/admin.py:81
|
||||
#, fuzzy
|
||||
#| msgid "Admin area"
|
||||
msgid "Administrator"
|
||||
msgstr "Административная зона"
|
||||
|
||||
#: snikket_web/admin.py:85
|
||||
#: snikket_web/admin.py:86
|
||||
#, fuzzy
|
||||
#| msgid "Update circle"
|
||||
msgid "Update user"
|
||||
msgstr "Обновить крук"
|
||||
|
||||
#: snikket_web/admin.py:89
|
||||
#: snikket_web/admin.py:90
|
||||
#, fuzzy
|
||||
#| msgid "Create password reset links or delete users."
|
||||
msgid "Create password reset link"
|
||||
msgstr "Создайте ссылки для сброса пароля или удалите пользователей."
|
||||
|
||||
#: snikket_web/admin.py:107
|
||||
#: snikket_web/admin.py:108
|
||||
msgid "Password reset link created"
|
||||
msgstr "Ссылка на сброс пароля для %(user_name)s"
|
||||
|
||||
#: snikket_web/admin.py:122
|
||||
#: snikket_web/admin.py:123
|
||||
#, fuzzy
|
||||
#| msgid "Circle information"
|
||||
msgid "User information updated."
|
||||
msgstr "Информация о круге"
|
||||
|
||||
#: snikket_web/admin.py:144
|
||||
#: snikket_web/admin.py:145
|
||||
msgid "Delete user permanently"
|
||||
msgstr "Удалить пользователя навсегда"
|
||||
|
||||
#: snikket_web/admin.py:157
|
||||
#: snikket_web/admin.py:158
|
||||
msgid "User deleted"
|
||||
msgstr "удалённый"
|
||||
|
||||
#: snikket_web/admin.py:195
|
||||
#: snikket_web/admin.py:196
|
||||
#, fuzzy
|
||||
#| msgid "Password reset link created"
|
||||
msgid "Password reset link not found"
|
||||
msgstr "Ссылка на сброс пароля для %(user_name)s"
|
||||
|
||||
#: snikket_web/admin.py:207
|
||||
#: snikket_web/admin.py:208
|
||||
msgid "Password reset link deleted"
|
||||
msgstr "Создайте ссылки для сброса пароля или удалите пользователей"
|
||||
|
||||
#: snikket_web/admin.py:227
|
||||
#: snikket_web/admin.py:228
|
||||
msgid "Invite to circle"
|
||||
msgstr "Пригласить в круг"
|
||||
|
||||
#: snikket_web/admin.py:233
|
||||
#: snikket_web/admin.py:234
|
||||
msgid "At least one circle must be selected"
|
||||
msgstr "Необходимо выбрать хотя бы один круг"
|
||||
|
||||
#: snikket_web/admin.py:238
|
||||
#: snikket_web/admin.py:239
|
||||
msgid "Valid for"
|
||||
msgstr "Действителен в течении"
|
||||
|
||||
#: snikket_web/admin.py:240
|
||||
#: snikket_web/admin.py:241
|
||||
msgid "One hour"
|
||||
msgstr "Один час"
|
||||
|
||||
#: snikket_web/admin.py:241
|
||||
#: snikket_web/admin.py:242
|
||||
msgid "Twelve hours"
|
||||
msgstr "Двенадцать часов"
|
||||
|
||||
#: snikket_web/admin.py:242
|
||||
#: snikket_web/admin.py:243
|
||||
msgid "One day"
|
||||
msgstr "Один день"
|
||||
|
||||
#: snikket_web/admin.py:243
|
||||
#: snikket_web/admin.py:244
|
||||
msgid "One week"
|
||||
msgstr "Одна неделя"
|
||||
|
||||
#: snikket_web/admin.py:244
|
||||
#: snikket_web/admin.py:245
|
||||
msgid "Four weeks"
|
||||
msgstr "Четыре недели"
|
||||
|
||||
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
|
||||
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
|
||||
msgid "Invitation type"
|
||||
msgstr "Вид приглашения"
|
||||
|
||||
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
|
||||
msgid "Individual"
|
||||
msgstr "Индивидуальный"
|
||||
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
|
||||
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
|
||||
msgid "Group"
|
||||
msgstr "Группа"
|
||||
|
||||
#: snikket_web/admin.py:259
|
||||
#: snikket_web/admin.py:260
|
||||
msgid "New invitation link"
|
||||
msgstr "Новая ссылка на приглашение"
|
||||
|
||||
#: snikket_web/admin.py:321
|
||||
#: snikket_web/admin.py:322
|
||||
msgid "Revoke"
|
||||
msgstr "Aннулировать"
|
||||
|
||||
#: snikket_web/admin.py:345
|
||||
#: snikket_web/admin.py:346
|
||||
msgid "Invitation created"
|
||||
msgstr "Вид приглашения"
|
||||
|
||||
#: snikket_web/admin.py:361
|
||||
#: snikket_web/admin.py:362
|
||||
msgid "No such invitation exists"
|
||||
msgstr "Новая ссылка на приглашение"
|
||||
|
||||
#: snikket_web/admin.py:376
|
||||
#: snikket_web/admin.py:377
|
||||
msgid "Invitation revoked"
|
||||
msgstr "Вид приглашения"
|
||||
|
||||
#: snikket_web/admin.py:393 snikket_web/admin.py:441
|
||||
#: snikket_web/admin.py:394 snikket_web/admin.py:442
|
||||
#: snikket_web/templates/admin_delete_circle.html:10
|
||||
msgid "Name"
|
||||
msgstr "Имя"
|
||||
|
||||
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
|
||||
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
|
||||
msgid "Create circle"
|
||||
msgstr "Создать крук"
|
||||
|
||||
#: snikket_web/admin.py:428
|
||||
#: snikket_web/admin.py:429
|
||||
msgid "Circle created"
|
||||
msgstr "Имя круга"
|
||||
|
||||
#: snikket_web/admin.py:446
|
||||
#: snikket_web/admin.py:447
|
||||
msgid "Select user"
|
||||
msgstr "Выврать пользователя"
|
||||
|
||||
#: snikket_web/admin.py:451
|
||||
#: snikket_web/admin.py:452
|
||||
msgid "Update circle"
|
||||
msgstr "Обновить крук"
|
||||
|
||||
#: snikket_web/admin.py:455
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Удалить круг навсегда"
|
||||
|
||||
#: snikket_web/admin.py:461
|
||||
#: snikket_web/admin.py:458
|
||||
msgid "Add user"
|
||||
msgstr "Добавить пользователя"
|
||||
|
||||
#: snikket_web/admin.py:477
|
||||
#: snikket_web/admin.py:474 snikket_web/admin.py:563
|
||||
msgid "No such circle exists"
|
||||
msgstr "Нет кругов"
|
||||
|
||||
#: snikket_web/admin.py:514
|
||||
#: snikket_web/admin.py:511
|
||||
msgid "Circle data updated"
|
||||
msgstr "Имя круга"
|
||||
|
||||
#: snikket_web/admin.py:520
|
||||
msgid "Circle deleted"
|
||||
msgstr "удалённый"
|
||||
|
||||
#: snikket_web/admin.py:531
|
||||
#: snikket_web/admin.py:521
|
||||
msgid "User added to circle"
|
||||
msgstr "Пригласить в круг"
|
||||
|
||||
#: snikket_web/admin.py:540
|
||||
#: snikket_web/admin.py:530
|
||||
msgid "User removed from circle"
|
||||
msgstr "Удалить пользователя %(username)s из круга"
|
||||
|
||||
#: snikket_web/admin.py:609
|
||||
#: snikket_web/admin.py:547
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Удалить круг навсегда"
|
||||
|
||||
#: snikket_web/admin.py:574
|
||||
msgid "Circle deleted"
|
||||
msgstr "удалённый"
|
||||
|
||||
#: snikket_web/admin.py:640
|
||||
msgid "Message contents"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:615
|
||||
#: snikket_web/admin.py:646
|
||||
msgid "Only send to online users"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:619
|
||||
#: snikket_web/admin.py:650
|
||||
msgid "Post to all users"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:623
|
||||
#: snikket_web/admin.py:654
|
||||
msgid "Send preview to yourself"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/admin.py:645
|
||||
#: snikket_web/admin.py:676
|
||||
msgid "Announcement sent!"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
#: snikket_web/infra.py:53
|
||||
msgid "Main"
|
||||
msgstr "Основное"
|
||||
|
||||
#: snikket_web/invite.py:33
|
||||
#: snikket_web/invite.py:35
|
||||
msgid ""
|
||||
"The account data you tried to import is too large to upload. Please contact "
|
||||
"your Snikket operator."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:112
|
||||
#: snikket_web/invite.py:114
|
||||
msgid "Username"
|
||||
msgstr "Имя пользователя"
|
||||
|
||||
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
|
||||
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
|
||||
msgid "Password"
|
||||
msgstr "Пароль"
|
||||
|
||||
#: snikket_web/invite.py:120 snikket_web/invite.py:188
|
||||
#: snikket_web/invite.py:122 snikket_web/invite.py:190
|
||||
msgid "Confirm password"
|
||||
msgstr "Повторите пароль"
|
||||
|
||||
#: snikket_web/invite.py:124 snikket_web/invite.py:192
|
||||
#: snikket_web/invite.py:126 snikket_web/invite.py:194
|
||||
#, fuzzy
|
||||
#| msgid "The passwords must match"
|
||||
msgid "The passwords must match."
|
||||
msgstr "Паролт должны совпадать"
|
||||
|
||||
#: snikket_web/invite.py:129
|
||||
#: snikket_web/invite.py:131
|
||||
msgid "Create account"
|
||||
msgstr "Создать аккунт"
|
||||
|
||||
#: snikket_web/invite.py:156
|
||||
#: snikket_web/invite.py:158
|
||||
#, fuzzy
|
||||
#| msgid "That username is already taken"
|
||||
msgid "That username is already taken."
|
||||
msgstr "Это имя пользователя уже используется"
|
||||
|
||||
#: snikket_web/invite.py:160 snikket_web/invite.py:225
|
||||
#: snikket_web/invite.py:162 snikket_web/invite.py:227
|
||||
#, fuzzy
|
||||
#| msgid "Registration was declined for unknown reasons"
|
||||
msgid "Registration was declined for unknown reasons."
|
||||
msgstr "Регистрация была отклонена по неизвестным причинам"
|
||||
|
||||
#: snikket_web/invite.py:164
|
||||
#: snikket_web/invite.py:166
|
||||
#, fuzzy
|
||||
#| msgid "The username is not valid"
|
||||
msgid "The username is not valid."
|
||||
msgstr "Имя пользователя недействительно"
|
||||
|
||||
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/templates/user_passwd.html:29
|
||||
msgid "Change password"
|
||||
msgstr "Изменить пароль"
|
||||
|
||||
#: snikket_web/invite.py:244
|
||||
#: snikket_web/invite.py:246
|
||||
msgid "Account data file"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:248
|
||||
#: snikket_web/invite.py:250
|
||||
msgid "Import data"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:269
|
||||
#: snikket_web/invite.py:271
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The account data you tried to import is in an unknown format. Please upload "
|
||||
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/user.py:178
|
||||
msgid "Error"
|
||||
msgstr "Ошибка"
|
||||
|
||||
#: snikket_web/main.py:36
|
||||
#: snikket_web/main.py:38
|
||||
msgid "Address"
|
||||
msgstr "Адрес"
|
||||
|
||||
#: snikket_web/main.py:46
|
||||
#: snikket_web/main.py:48
|
||||
msgid "Sign in"
|
||||
msgstr "Войти"
|
||||
|
||||
#: snikket_web/main.py:55
|
||||
#: snikket_web/main.py:57
|
||||
msgid "Invalid username or password."
|
||||
msgstr "Неверное имя пользователя или пароль."
|
||||
|
||||
#: snikket_web/main.py:83
|
||||
#: snikket_web/main.py:85
|
||||
msgid "Login successful!"
|
||||
msgstr "Войти успешно!"
|
||||
|
||||
@@ -488,7 +489,7 @@ msgstr ""
|
||||
msgid "Software Versions"
|
||||
msgstr "Версии программного обеспечения"
|
||||
|
||||
#: snikket_web/templates/about.html:29
|
||||
#: snikket_web/templates/about.html:32
|
||||
msgid "Back to the main page"
|
||||
msgstr "Назад на главную страницу"
|
||||
|
||||
@@ -605,6 +606,53 @@ msgstr "Исходная отладка переполнения"
|
||||
msgid "Copy complete output"
|
||||
msgstr "Копировать полный вывод"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:4
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Edit circle %(circle_name)s"
|
||||
msgid "Delete circle %(circle_name)s"
|
||||
msgstr "Редактировать круг %(circle_name)s"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:6
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
#: snikket_web/templates/admin_edit_circle.html:51
|
||||
msgid "Delete circle"
|
||||
msgstr "Удалить круг"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:8
|
||||
#, fuzzy
|
||||
#| msgid "Are you sure you want to delete the following user?"
|
||||
msgid "Are you sure you want to delete the following circle?"
|
||||
msgstr "Вы уверены, что хотите удалить следующего пользователя?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:13
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Опасность"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:14
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "The user and their data will be deleted irrevocably, permanently and "
|
||||
#| "immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
#| "strong>"
|
||||
msgid ""
|
||||
"The circle and the corresponding chat will be deleted, permanently and "
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
msgstr ""
|
||||
"Пользователь и его данные будут удалены безвозвратно, навсегда и сразу же "
|
||||
"после нажатия нижней кнопки. <strong>Назад дороги нет!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:17
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_manage_data.html:14
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Вернуть"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:4
|
||||
#, python-format
|
||||
msgid "Delete user %(user_name)s"
|
||||
@@ -619,10 +667,6 @@ msgstr "Удалить пользователя"
|
||||
msgid "Are you sure you want to delete the following user?"
|
||||
msgstr "Вы уверены, что хотите удалить следующего пользователя?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Опасность"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:16
|
||||
msgid ""
|
||||
"The user and their data will be deleted irrevocably, permanently and "
|
||||
@@ -632,14 +676,6 @@ msgstr ""
|
||||
"Пользователь и его данные будут удалены безвозвратно, навсегда и сразу же "
|
||||
"после нажатия нижней кнопки. <strong>Назад дороги нет!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Вернуть"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:14
|
||||
msgid "This is your main circle"
|
||||
msgstr "Это ваш основной круг"
|
||||
@@ -673,10 +709,6 @@ msgstr "С этим кругом не связан ни один группов
|
||||
msgid "Return to circle list"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
msgid "Delete circle"
|
||||
msgstr "Удалить круг"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:49
|
||||
msgid "Deleting a circle does not delete any users in the circle."
|
||||
msgstr "Удаление круга не приводит к удалению пользователей из круга."
|
||||
@@ -1171,8 +1203,8 @@ msgstr "Приложение уже установлено?"
|
||||
#: snikket_web/templates/invite_register.html:16
|
||||
#: snikket_web/templates/invite_reset_view.html:21
|
||||
#: snikket_web/templates/invite_view.html:41
|
||||
#: snikket_web/templates/invite_view.html:106
|
||||
#: snikket_web/templates/invite_view.html:134
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
msgid "Open the app"
|
||||
msgstr "Откройте приложение"
|
||||
|
||||
@@ -1275,7 +1307,6 @@ msgstr ""
|
||||
"помощью приложения Snikket App, используя кнопку Сканировать в верхней части."
|
||||
|
||||
#: snikket_web/templates/invite_reset_view.html:26
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"Your camera will turn on. Point it at the square code below until it is "
|
||||
"within the highlighted square on your screen, and wait until the app "
|
||||
@@ -1414,7 +1445,7 @@ msgid "Get it on Google Play"
|
||||
msgstr "Получить его в Гугл Игры"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:30
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:80
|
||||
msgid "Download on the App Store"
|
||||
msgstr "Скачать в Магазин Приложений"
|
||||
|
||||
@@ -1451,11 +1482,11 @@ msgid "Scan invite code"
|
||||
msgstr "Сканировать код приглашения"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:55
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:96
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
#: snikket_web/templates/invite_view.html:124
|
||||
#: snikket_web/templates/invite_view.html:140
|
||||
#: snikket_web/templates/invite_view.html:62
|
||||
#: snikket_web/templates/invite_view.html:74
|
||||
#: snikket_web/templates/invite_view.html:90
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:118
|
||||
msgid "Close"
|
||||
msgstr "близко"
|
||||
|
||||
@@ -1468,62 +1499,39 @@ msgstr ""
|
||||
"отсканировав код с помощью камеры. Вы можете использовать как приложение QR-"
|
||||
"сканера, так и само приложение Сниккет."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:63
|
||||
msgid "Using a QR code scanner"
|
||||
msgstr "Используя сканер QR-кода"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:65
|
||||
msgid "Using the Snikket app"
|
||||
msgstr "Использование приложения Сниккет"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:70
|
||||
msgid ""
|
||||
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
|
||||
msgstr ""
|
||||
"Используйте сканер <em>QR-кода</em> на вашем мобильном устройстве для "
|
||||
"сканирования кода, приведенного ниже:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:76
|
||||
msgid ""
|
||||
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
|
||||
"button at the top."
|
||||
msgstr ""
|
||||
"Установите приложение Сниккет на мобильное устройство, откройте его и "
|
||||
"нажмите кнопку 'Сканировать' сверху."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:93
|
||||
#: snikket_web/templates/invite_view.html:71
|
||||
msgid "Install on iOS"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"After downloading Snikket from the App Store, you have to return to this "
|
||||
"invite link and tap on \"Open the app\" to proceed."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:101
|
||||
#: snikket_web/templates/invite_view.html:79
|
||||
msgid "First download Snikket from the App Store using the button below:"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:103
|
||||
#: snikket_web/templates/invite_view.html:131
|
||||
#: snikket_web/templates/invite_view.html:81
|
||||
#: snikket_web/templates/invite_view.html:109
|
||||
msgid ""
|
||||
"After the installation is complete, you can return to this page and tap the "
|
||||
"\"Open the app\" button to continue with the setup:"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:121
|
||||
#: snikket_web/templates/invite_view.html:130
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:108
|
||||
msgid "Install via F-Droid"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:127
|
||||
#: snikket_web/templates/invite_view.html:105
|
||||
msgid ""
|
||||
"After installing Snikket via F-Droid, you have to return to this invite link "
|
||||
"and tap on \"Open the app\" to proceed."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:129
|
||||
#: snikket_web/templates/invite_view.html:107
|
||||
msgid "First install Snikket from F-Droid using the button below:"
|
||||
msgstr ""
|
||||
|
||||
@@ -1679,6 +1687,26 @@ msgstr ""
|
||||
"Этот раздел позволяет вам контролировать, кто может видеть информацию вашего "
|
||||
"профиля, например, аватар и ник."
|
||||
|
||||
#~ msgid "Using a QR code scanner"
|
||||
#~ msgstr "Используя сканер QR-кода"
|
||||
|
||||
#~ msgid "Using the Snikket app"
|
||||
#~ msgstr "Использование приложения Сниккет"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Use a <em>QR code</em> scanner on your mobile device to scan the code "
|
||||
#~ "below:"
|
||||
#~ msgstr ""
|
||||
#~ "Используйте сканер <em>QR-кода</em> на вашем мобильном устройстве для "
|
||||
#~ "сканирования кода, приведенного ниже:"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Install the Snikket app on your mobile device, open it, and tap the "
|
||||
#~ "'Scan' button at the top."
|
||||
#~ msgstr ""
|
||||
#~ "Установите приложение Сниккет на мобильное устройство, откройте его и "
|
||||
#~ "нажмите кнопку 'Сканировать' сверху."
|
||||
|
||||
#~ msgid "Create password reset link for %(user_name)s"
|
||||
#~ msgstr "Создать ссылку сброса пароля для %(user_name)s"
|
||||
|
||||
|
||||
Binary file not shown.
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: translations@snikket.org\n"
|
||||
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
|
||||
"PO-Revision-Date: 2022-01-18 09:21+0000\n"
|
||||
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
|
||||
"PO-Revision-Date: 2023-04-02 15:17+0000\n"
|
||||
"Last-Translator: Kim Alvefur <zash@zash.se>\n"
|
||||
"Language-Team: Swedish <http://i18n.sotecware.net/projects/snikket/"
|
||||
"web-portal/sv/>\n"
|
||||
@@ -17,206 +17,207 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.8.1\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "Inloggningsnamn"
|
||||
|
||||
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
|
||||
msgid "Display name"
|
||||
msgstr "Visningsnamn"
|
||||
|
||||
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
|
||||
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
|
||||
msgid "Access Level"
|
||||
msgstr "Användarnivåer"
|
||||
|
||||
#: snikket_web/admin.py:78
|
||||
#: snikket_web/admin.py:79
|
||||
msgid "Limited"
|
||||
msgstr "Begränsad"
|
||||
|
||||
#: snikket_web/admin.py:79
|
||||
#: snikket_web/admin.py:80
|
||||
msgid "Normal user"
|
||||
msgstr "Vanlig användare"
|
||||
|
||||
#: snikket_web/admin.py:80
|
||||
#: snikket_web/admin.py:81
|
||||
msgid "Administrator"
|
||||
msgstr "Administratör"
|
||||
|
||||
#: snikket_web/admin.py:85
|
||||
#: snikket_web/admin.py:86
|
||||
msgid "Update user"
|
||||
msgstr "Uppdatera användare"
|
||||
|
||||
#: snikket_web/admin.py:89
|
||||
#: snikket_web/admin.py:90
|
||||
msgid "Create password reset link"
|
||||
msgstr "Skapa länk för återställning av lösenord"
|
||||
|
||||
#: snikket_web/admin.py:107
|
||||
#: snikket_web/admin.py:108
|
||||
msgid "Password reset link created"
|
||||
msgstr "Skapade länk för att återställa lösenord"
|
||||
|
||||
#: snikket_web/admin.py:122
|
||||
#: snikket_web/admin.py:123
|
||||
msgid "User information updated."
|
||||
msgstr "Användarinformation uppdaterad."
|
||||
|
||||
#: snikket_web/admin.py:144
|
||||
#: snikket_web/admin.py:145
|
||||
msgid "Delete user permanently"
|
||||
msgstr "Radera användare permanent"
|
||||
|
||||
#: snikket_web/admin.py:157
|
||||
#: snikket_web/admin.py:158
|
||||
msgid "User deleted"
|
||||
msgstr "Användare raderad"
|
||||
|
||||
#: snikket_web/admin.py:195
|
||||
#: snikket_web/admin.py:196
|
||||
msgid "Password reset link not found"
|
||||
msgstr "Länk för återställning av lösenord hittades inte"
|
||||
|
||||
#: snikket_web/admin.py:207
|
||||
#: snikket_web/admin.py:208
|
||||
msgid "Password reset link deleted"
|
||||
msgstr "Länk för återställning av lösenord raderad"
|
||||
|
||||
#: snikket_web/admin.py:227
|
||||
#: snikket_web/admin.py:228
|
||||
msgid "Invite to circle"
|
||||
msgstr "Bjud in till krets"
|
||||
|
||||
#: snikket_web/admin.py:233
|
||||
#: snikket_web/admin.py:234
|
||||
msgid "At least one circle must be selected"
|
||||
msgstr "Minst en krets behöver väljas"
|
||||
|
||||
#: snikket_web/admin.py:238
|
||||
#: snikket_web/admin.py:239
|
||||
msgid "Valid for"
|
||||
msgstr "Giltig i"
|
||||
|
||||
#: snikket_web/admin.py:240
|
||||
#: snikket_web/admin.py:241
|
||||
msgid "One hour"
|
||||
msgstr "En timme"
|
||||
|
||||
#: snikket_web/admin.py:241
|
||||
#: snikket_web/admin.py:242
|
||||
msgid "Twelve hours"
|
||||
msgstr "Tolv timmar"
|
||||
|
||||
#: snikket_web/admin.py:242
|
||||
#: snikket_web/admin.py:243
|
||||
msgid "One day"
|
||||
msgstr "En dag"
|
||||
|
||||
#: snikket_web/admin.py:243
|
||||
#: snikket_web/admin.py:244
|
||||
msgid "One week"
|
||||
msgstr "En vecka"
|
||||
|
||||
#: snikket_web/admin.py:244
|
||||
#: snikket_web/admin.py:245
|
||||
msgid "Four weeks"
|
||||
msgstr "Fyra veckor"
|
||||
|
||||
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
|
||||
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
|
||||
msgid "Invitation type"
|
||||
msgstr "Typ av inbjudan"
|
||||
|
||||
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
|
||||
msgid "Individual"
|
||||
msgstr "Individuell"
|
||||
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
|
||||
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
|
||||
msgid "Group"
|
||||
msgstr "Grupp"
|
||||
|
||||
#: snikket_web/admin.py:259
|
||||
#: snikket_web/admin.py:260
|
||||
msgid "New invitation link"
|
||||
msgstr "Ny inbjudanslänk"
|
||||
|
||||
#: snikket_web/admin.py:321
|
||||
#: snikket_web/admin.py:322
|
||||
msgid "Revoke"
|
||||
msgstr "Återkalla"
|
||||
|
||||
#: snikket_web/admin.py:345
|
||||
#: snikket_web/admin.py:346
|
||||
msgid "Invitation created"
|
||||
msgstr "Inbjudan skapad"
|
||||
|
||||
#: snikket_web/admin.py:361
|
||||
#: snikket_web/admin.py:362
|
||||
msgid "No such invitation exists"
|
||||
msgstr "Inbjudanslänken finns inte"
|
||||
|
||||
#: snikket_web/admin.py:376
|
||||
#: snikket_web/admin.py:377
|
||||
msgid "Invitation revoked"
|
||||
msgstr "Inbjudan återkallad"
|
||||
|
||||
#: snikket_web/admin.py:393 snikket_web/admin.py:441
|
||||
#: snikket_web/admin.py:394 snikket_web/admin.py:442
|
||||
#: snikket_web/templates/admin_delete_circle.html:10
|
||||
msgid "Name"
|
||||
msgstr "Namn"
|
||||
|
||||
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
|
||||
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
|
||||
msgid "Create circle"
|
||||
msgstr "Skapa krets"
|
||||
|
||||
#: snikket_web/admin.py:428
|
||||
#: snikket_web/admin.py:429
|
||||
msgid "Circle created"
|
||||
msgstr "Krets skapad"
|
||||
|
||||
#: snikket_web/admin.py:446
|
||||
#: snikket_web/admin.py:447
|
||||
msgid "Select user"
|
||||
msgstr "Välj användare"
|
||||
|
||||
#: snikket_web/admin.py:451
|
||||
#: snikket_web/admin.py:452
|
||||
msgid "Update circle"
|
||||
msgstr "Uppdatera krets"
|
||||
|
||||
#: snikket_web/admin.py:455
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Radera krets permanent"
|
||||
|
||||
#: snikket_web/admin.py:461
|
||||
#: snikket_web/admin.py:458
|
||||
msgid "Add user"
|
||||
msgstr "Lägg till användare"
|
||||
|
||||
#: snikket_web/admin.py:477
|
||||
#: snikket_web/admin.py:474 snikket_web/admin.py:563
|
||||
msgid "No such circle exists"
|
||||
msgstr "Kretsen finns inte"
|
||||
|
||||
#: snikket_web/admin.py:514
|
||||
#: snikket_web/admin.py:511
|
||||
msgid "Circle data updated"
|
||||
msgstr "Kretsen uppdaterades"
|
||||
|
||||
#: snikket_web/admin.py:520
|
||||
msgid "Circle deleted"
|
||||
msgstr "Krets raderad"
|
||||
|
||||
#: snikket_web/admin.py:531
|
||||
#: snikket_web/admin.py:521
|
||||
msgid "User added to circle"
|
||||
msgstr "Användare tillagd i krets"
|
||||
|
||||
#: snikket_web/admin.py:540
|
||||
#: snikket_web/admin.py:530
|
||||
msgid "User removed from circle"
|
||||
msgstr "Användaren %(username)s borttagen från krets"
|
||||
|
||||
#: snikket_web/admin.py:609
|
||||
#: snikket_web/admin.py:547
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "Radera krets permanent"
|
||||
|
||||
#: snikket_web/admin.py:574
|
||||
msgid "Circle deleted"
|
||||
msgstr "Krets raderad"
|
||||
|
||||
#: snikket_web/admin.py:640
|
||||
msgid "Message contents"
|
||||
msgstr "Meddelandeinnehåll"
|
||||
|
||||
#: snikket_web/admin.py:615
|
||||
#: snikket_web/admin.py:646
|
||||
msgid "Only send to online users"
|
||||
msgstr "Skicka bara till användare som är online"
|
||||
|
||||
#: snikket_web/admin.py:619
|
||||
#: snikket_web/admin.py:650
|
||||
msgid "Post to all users"
|
||||
msgstr "Skicka till alla användare"
|
||||
|
||||
#: snikket_web/admin.py:623
|
||||
#: snikket_web/admin.py:654
|
||||
msgid "Send preview to yourself"
|
||||
msgstr "Skicka förhandsvisning till dig själv"
|
||||
|
||||
#: snikket_web/admin.py:645
|
||||
#: snikket_web/admin.py:676
|
||||
msgid "Announcement sent!"
|
||||
msgstr "Tillkännagivande skickat!"
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
#: snikket_web/infra.py:53
|
||||
msgid "Main"
|
||||
msgstr "Allmän"
|
||||
|
||||
#: snikket_web/invite.py:33
|
||||
#: snikket_web/invite.py:35
|
||||
msgid ""
|
||||
"The account data you tried to import is too large to upload. Please contact "
|
||||
"your Snikket operator."
|
||||
@@ -224,52 +225,52 @@ msgstr ""
|
||||
"Kontot du försökte importera är för stort för att ladda upp. Vänligen "
|
||||
"kontakta din Snikket-operatör."
|
||||
|
||||
#: snikket_web/invite.py:112
|
||||
#: snikket_web/invite.py:114
|
||||
msgid "Username"
|
||||
msgstr "Användarnamn"
|
||||
|
||||
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
|
||||
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
|
||||
msgid "Password"
|
||||
msgstr "Lösenord"
|
||||
|
||||
#: snikket_web/invite.py:120 snikket_web/invite.py:188
|
||||
#: snikket_web/invite.py:122 snikket_web/invite.py:190
|
||||
msgid "Confirm password"
|
||||
msgstr "Bekräfta lösenord"
|
||||
|
||||
#: snikket_web/invite.py:124 snikket_web/invite.py:192
|
||||
#: snikket_web/invite.py:126 snikket_web/invite.py:194
|
||||
msgid "The passwords must match."
|
||||
msgstr "Lösenorden måste vara identiska."
|
||||
|
||||
#: snikket_web/invite.py:129
|
||||
#: snikket_web/invite.py:131
|
||||
msgid "Create account"
|
||||
msgstr "Skapa konto"
|
||||
|
||||
#: snikket_web/invite.py:156
|
||||
#: snikket_web/invite.py:158
|
||||
msgid "That username is already taken."
|
||||
msgstr "Det användarnamnet är redan taget."
|
||||
|
||||
#: snikket_web/invite.py:160 snikket_web/invite.py:225
|
||||
#: snikket_web/invite.py:162 snikket_web/invite.py:227
|
||||
msgid "Registration was declined for unknown reasons."
|
||||
msgstr "Registreringen nekades av okänd anledning."
|
||||
|
||||
#: snikket_web/invite.py:164
|
||||
#: snikket_web/invite.py:166
|
||||
msgid "The username is not valid."
|
||||
msgstr "Användarnamnet är ogiltigt."
|
||||
|
||||
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/templates/user_passwd.html:29
|
||||
msgid "Change password"
|
||||
msgstr "Ändra lösenord"
|
||||
|
||||
#: snikket_web/invite.py:244
|
||||
#: snikket_web/invite.py:246
|
||||
msgid "Account data file"
|
||||
msgstr "Kontodatafil"
|
||||
|
||||
#: snikket_web/invite.py:248
|
||||
#: snikket_web/invite.py:250
|
||||
msgid "Import data"
|
||||
msgstr "Importera data"
|
||||
|
||||
#: snikket_web/invite.py:269
|
||||
#: snikket_web/invite.py:271
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The account data you tried to import is in an unknown format. Please upload "
|
||||
@@ -278,24 +279,24 @@ msgstr ""
|
||||
"Kontot du försökte importera är i ett okänt format. Vänligen ladda upp en "
|
||||
"XML-fil i XEP-0227-format (angivet format: %(mimetype)s)."
|
||||
|
||||
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/user.py:178
|
||||
msgid "Error"
|
||||
msgstr "Fel"
|
||||
|
||||
#: snikket_web/main.py:36
|
||||
#: snikket_web/main.py:38
|
||||
msgid "Address"
|
||||
msgstr "Adress"
|
||||
|
||||
#: snikket_web/main.py:46
|
||||
#: snikket_web/main.py:48
|
||||
msgid "Sign in"
|
||||
msgstr "Logga in"
|
||||
|
||||
#: snikket_web/main.py:55
|
||||
#: snikket_web/main.py:57
|
||||
msgid "Invalid username or password."
|
||||
msgstr "Ogiltigt användarnamn eller lösenord."
|
||||
|
||||
#: snikket_web/main.py:83
|
||||
#: snikket_web/main.py:85
|
||||
msgid "Login successful!"
|
||||
msgstr "Inloggning lyckades!"
|
||||
|
||||
@@ -469,7 +470,7 @@ msgstr ""
|
||||
msgid "Software Versions"
|
||||
msgstr "Mjukvaruversioner"
|
||||
|
||||
#: snikket_web/templates/about.html:29
|
||||
#: snikket_web/templates/about.html:32
|
||||
msgid "Back to the main page"
|
||||
msgstr "Tillbaka till huvudsidan"
|
||||
|
||||
@@ -584,6 +585,46 @@ msgstr "Felsökningsdata"
|
||||
msgid "Copy complete output"
|
||||
msgstr "Kopiera allt"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:4
|
||||
#, python-format
|
||||
msgid "Delete circle %(circle_name)s"
|
||||
msgstr "Radera krets %(circle_name)s"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:6
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
#: snikket_web/templates/admin_edit_circle.html:51
|
||||
msgid "Delete circle"
|
||||
msgstr "Radera krets"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:8
|
||||
msgid "Are you sure you want to delete the following circle?"
|
||||
msgstr "Är du säker på att du vill radera denna krets?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:13
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Fara"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:14
|
||||
msgid ""
|
||||
"The circle and the corresponding chat will be deleted, permanently and "
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
msgstr ""
|
||||
"Om du trycker på knappen nedanför kommer kretsen och dess data raderas "
|
||||
"direkt, permanent och skoningslöst. <strong>Därefter finns ingen "
|
||||
"återvändo!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:17
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_manage_data.html:14
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Tillbaka"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:4
|
||||
#, python-format
|
||||
msgid "Delete user %(user_name)s"
|
||||
@@ -598,10 +639,6 @@ msgstr "Radera användare"
|
||||
msgid "Are you sure you want to delete the following user?"
|
||||
msgstr "Är du säker på att du vill radera denna användare?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "Fara"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:16
|
||||
msgid ""
|
||||
"The user and their data will be deleted irrevocably, permanently and "
|
||||
@@ -612,14 +649,6 @@ msgstr ""
|
||||
"direkt, permanent och skoningslöst. <strong>Därefter finns ingen återvändo!</"
|
||||
"strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "Tillbaka"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:14
|
||||
msgid "This is your main circle"
|
||||
msgstr "Detta är din primära krets"
|
||||
@@ -652,10 +681,6 @@ msgstr "Denna krets har ingen tillhörande gruppchatt."
|
||||
msgid "Return to circle list"
|
||||
msgstr "Tillbaka till cirkellistan"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
msgid "Delete circle"
|
||||
msgstr "Radera krets"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:49
|
||||
msgid "Deleting a circle does not delete any users in the circle."
|
||||
msgstr "Användare i en krets raderas inte när kretsen raderas."
|
||||
@@ -1140,8 +1165,8 @@ msgstr "Appen redan installerad?"
|
||||
#: snikket_web/templates/invite_register.html:16
|
||||
#: snikket_web/templates/invite_reset_view.html:21
|
||||
#: snikket_web/templates/invite_view.html:41
|
||||
#: snikket_web/templates/invite_view.html:106
|
||||
#: snikket_web/templates/invite_view.html:134
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
msgid "Open the app"
|
||||
msgstr "Öppna appen"
|
||||
|
||||
@@ -1240,7 +1265,6 @@ msgstr ""
|
||||
"Scanna-knappen överst."
|
||||
|
||||
#: snikket_web/templates/invite_reset_view.html:26
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"Your camera will turn on. Point it at the square code below until it is "
|
||||
"within the highlighted square on your screen, and wait until the app "
|
||||
@@ -1377,7 +1401,7 @@ msgid "Get it on Google Play"
|
||||
msgstr "Hämta den på Google Play"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:30
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:80
|
||||
msgid "Download on the App Store"
|
||||
msgstr "Hämta på App Store"
|
||||
|
||||
@@ -1413,11 +1437,11 @@ msgid "Scan invite code"
|
||||
msgstr "Scanna inbjudningskoden"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:55
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:96
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
#: snikket_web/templates/invite_view.html:124
|
||||
#: snikket_web/templates/invite_view.html:140
|
||||
#: snikket_web/templates/invite_view.html:62
|
||||
#: snikket_web/templates/invite_view.html:74
|
||||
#: snikket_web/templates/invite_view.html:90
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:118
|
||||
msgid "Close"
|
||||
msgstr "Stäng"
|
||||
|
||||
@@ -1430,33 +1454,11 @@ msgstr ""
|
||||
"koden med din kamera. Du kan antingen använda en app för att scanna QR-koder "
|
||||
"eller Snikket-appen själv."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:63
|
||||
msgid "Using a QR code scanner"
|
||||
msgstr "Med en QR-kodsläsare"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:65
|
||||
msgid "Using the Snikket app"
|
||||
msgstr "Med Snikket-appen"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:70
|
||||
msgid ""
|
||||
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
|
||||
msgstr ""
|
||||
"Scanna koden nedan med en <em>QR-kods</em> scanner på din mobila enhet:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:76
|
||||
msgid ""
|
||||
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
|
||||
"button at the top."
|
||||
msgstr ""
|
||||
"Installera Snikket-appen på din mobila enhet, öppna den, och tryck på "
|
||||
"'Scanna'-knappen överst."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:93
|
||||
#: snikket_web/templates/invite_view.html:71
|
||||
msgid "Install on iOS"
|
||||
msgstr "Installera på iOS"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"After downloading Snikket from the App Store, you have to return to this "
|
||||
"invite link and tap on \"Open the app\" to proceed."
|
||||
@@ -1464,12 +1466,12 @@ msgstr ""
|
||||
"Efter att ha laddat ner Snikket från App Store behöver du komma tillbaka "
|
||||
"till den här inbjudan och klicka på \"Öppna appen\" för att fortsätta."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:101
|
||||
#: snikket_web/templates/invite_view.html:79
|
||||
msgid "First download Snikket from the App Store using the button below:"
|
||||
msgstr "Ladda först ner Snikket från App Store med knappen nedan:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:103
|
||||
#: snikket_web/templates/invite_view.html:131
|
||||
#: snikket_web/templates/invite_view.html:81
|
||||
#: snikket_web/templates/invite_view.html:109
|
||||
msgid ""
|
||||
"After the installation is complete, you can return to this page and tap the "
|
||||
"\"Open the app\" button to continue with the setup:"
|
||||
@@ -1477,12 +1479,12 @@ msgstr ""
|
||||
"Efter att installationen är färdig behöver du komma tillbaka till den här "
|
||||
"inbjudan och klicka på \"Öppna appen\" för att fortsätta:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:121
|
||||
#: snikket_web/templates/invite_view.html:130
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:108
|
||||
msgid "Install via F-Droid"
|
||||
msgstr "Installera via F-Droid"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:127
|
||||
#: snikket_web/templates/invite_view.html:105
|
||||
msgid ""
|
||||
"After installing Snikket via F-Droid, you have to return to this invite link "
|
||||
"and tap on \"Open the app\" to proceed."
|
||||
@@ -1490,7 +1492,7 @@ msgstr ""
|
||||
"Efter att ha installerat Snikket via F-Droid behöver du komma tillbaka till "
|
||||
"den här inbjudan och klicka på \"Öppna appen\" för att fortsätta."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:129
|
||||
#: snikket_web/templates/invite_view.html:107
|
||||
msgid "First install Snikket from F-Droid using the button below:"
|
||||
msgstr "Installera först Snikket från F-Droid med knappen nedan:"
|
||||
|
||||
@@ -1641,6 +1643,25 @@ msgstr ""
|
||||
"Den här avdelningen låter dig hantera vilka som kan se din profil, såsom din "
|
||||
"profilbild och visningsnamn."
|
||||
|
||||
#~ msgid "Using a QR code scanner"
|
||||
#~ msgstr "Med en QR-kodsläsare"
|
||||
|
||||
#~ msgid "Using the Snikket app"
|
||||
#~ msgstr "Med Snikket-appen"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Use a <em>QR code</em> scanner on your mobile device to scan the code "
|
||||
#~ "below:"
|
||||
#~ msgstr ""
|
||||
#~ "Scanna koden nedan med en <em>QR-kods</em> scanner på din mobila enhet:"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Install the Snikket app on your mobile device, open it, and tap the "
|
||||
#~ "'Scan' button at the top."
|
||||
#~ msgstr ""
|
||||
#~ "Installera Snikket-appen på din mobila enhet, öppna den, och tryck på "
|
||||
#~ "'Scanna'-knappen överst."
|
||||
|
||||
#~ msgid "Create password reset link for %(user_name)s"
|
||||
#~ msgstr "Skapa länk för att återställa lösenord för %(user_name)s"
|
||||
|
||||
|
||||
Binary file not shown.
@@ -6,293 +6,294 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: translations@snikket.org\n"
|
||||
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2023-04-01 10:07+0200\n"
|
||||
"PO-Revision-Date: 2022-05-20 00:01+0000\n"
|
||||
"Last-Translator: Zack Zhou <lnx@outlook.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <http://i18n.sotecware.net/projects/"
|
||||
"snikket/web-portal/zh_Hans/>\n"
|
||||
"Language: zh_Hans_CN\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 4.8.1\n"
|
||||
"Generated-By: Babel 2.10.1\n"
|
||||
|
||||
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/admin.py:69 snikket_web/templates/admin_delete_user.html:10
|
||||
#: snikket_web/templates/admin_edit_circle.html:59
|
||||
#: snikket_web/templates/admin_users.html:8
|
||||
msgid "Login name"
|
||||
msgstr "账号"
|
||||
|
||||
#: snikket_web/admin.py:72 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/admin.py:73 snikket_web/templates/admin_delete_user.html:12
|
||||
#: snikket_web/templates/admin_edit_circle.html:60
|
||||
#: snikket_web/templates/admin_users.html:9 snikket_web/user.py:63
|
||||
msgid "Display name"
|
||||
msgstr "昵称"
|
||||
|
||||
#: snikket_web/admin.py:76 snikket_web/templates/admin_edit_user.html:32
|
||||
#: snikket_web/admin.py:77 snikket_web/templates/admin_edit_user.html:32
|
||||
msgid "Access Level"
|
||||
msgstr "权限级别"
|
||||
|
||||
#: snikket_web/admin.py:78
|
||||
#: snikket_web/admin.py:79
|
||||
msgid "Limited"
|
||||
msgstr "受限"
|
||||
|
||||
#: snikket_web/admin.py:79
|
||||
#: snikket_web/admin.py:80
|
||||
msgid "Normal user"
|
||||
msgstr "普通"
|
||||
|
||||
#: snikket_web/admin.py:80
|
||||
#: snikket_web/admin.py:81
|
||||
msgid "Administrator"
|
||||
msgstr "管理员"
|
||||
|
||||
#: snikket_web/admin.py:85
|
||||
#: snikket_web/admin.py:86
|
||||
msgid "Update user"
|
||||
msgstr "更新用户"
|
||||
|
||||
#: snikket_web/admin.py:89
|
||||
#: snikket_web/admin.py:90
|
||||
msgid "Create password reset link"
|
||||
msgstr "创建密码重置链接"
|
||||
|
||||
#: snikket_web/admin.py:107
|
||||
#: snikket_web/admin.py:108
|
||||
msgid "Password reset link created"
|
||||
msgstr "密码重置链接已创建"
|
||||
|
||||
#: snikket_web/admin.py:122
|
||||
#: snikket_web/admin.py:123
|
||||
msgid "User information updated."
|
||||
msgstr "用户信息已更新。"
|
||||
|
||||
#: snikket_web/admin.py:144
|
||||
#: snikket_web/admin.py:145
|
||||
msgid "Delete user permanently"
|
||||
msgstr "永久删除用户"
|
||||
|
||||
#: snikket_web/admin.py:157
|
||||
#: snikket_web/admin.py:158
|
||||
msgid "User deleted"
|
||||
msgstr "用户已删除"
|
||||
|
||||
#: snikket_web/admin.py:195
|
||||
#: snikket_web/admin.py:196
|
||||
msgid "Password reset link not found"
|
||||
msgstr "此密码重置链接不存在"
|
||||
|
||||
#: snikket_web/admin.py:207
|
||||
#: snikket_web/admin.py:208
|
||||
msgid "Password reset link deleted"
|
||||
msgstr "密码重置链接已删除"
|
||||
|
||||
#: snikket_web/admin.py:227
|
||||
#: snikket_web/admin.py:228
|
||||
msgid "Invite to circle"
|
||||
msgstr "邀请到圈子"
|
||||
|
||||
#: snikket_web/admin.py:233
|
||||
#: snikket_web/admin.py:234
|
||||
msgid "At least one circle must be selected"
|
||||
msgstr "需要至少选择一个圈子"
|
||||
|
||||
#: snikket_web/admin.py:238
|
||||
#: snikket_web/admin.py:239
|
||||
msgid "Valid for"
|
||||
msgstr "有效期限"
|
||||
|
||||
#: snikket_web/admin.py:240
|
||||
#: snikket_web/admin.py:241
|
||||
msgid "One hour"
|
||||
msgstr "一小时"
|
||||
|
||||
#: snikket_web/admin.py:241
|
||||
#: snikket_web/admin.py:242
|
||||
msgid "Twelve hours"
|
||||
msgstr "十二小时"
|
||||
|
||||
#: snikket_web/admin.py:242
|
||||
#: snikket_web/admin.py:243
|
||||
msgid "One day"
|
||||
msgstr "一天"
|
||||
|
||||
#: snikket_web/admin.py:243
|
||||
#: snikket_web/admin.py:244
|
||||
msgid "One week"
|
||||
msgstr "一周"
|
||||
|
||||
#: snikket_web/admin.py:244
|
||||
#: snikket_web/admin.py:245
|
||||
msgid "Four weeks"
|
||||
msgstr "四周"
|
||||
|
||||
#: snikket_web/admin.py:250 snikket_web/templates/admin_edit_invite.html:17
|
||||
#: snikket_web/admin.py:251 snikket_web/templates/admin_edit_invite.html:17
|
||||
msgid "Invitation type"
|
||||
msgstr "邀请类型"
|
||||
|
||||
#: snikket_web/admin.py:252 snikket_web/templates/library.j2:116
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:116
|
||||
msgid "Individual"
|
||||
msgstr "单个邀请"
|
||||
|
||||
#: snikket_web/admin.py:253 snikket_web/templates/library.j2:114
|
||||
#: snikket_web/admin.py:254 snikket_web/templates/library.j2:114
|
||||
msgid "Group"
|
||||
msgstr "群组邀请"
|
||||
|
||||
#: snikket_web/admin.py:259
|
||||
#: snikket_web/admin.py:260
|
||||
msgid "New invitation link"
|
||||
msgstr "新增邀请链接"
|
||||
|
||||
#: snikket_web/admin.py:321
|
||||
#: snikket_web/admin.py:322
|
||||
msgid "Revoke"
|
||||
msgstr "撤销"
|
||||
|
||||
#: snikket_web/admin.py:345
|
||||
#: snikket_web/admin.py:346
|
||||
msgid "Invitation created"
|
||||
msgstr "邀请已创建"
|
||||
|
||||
#: snikket_web/admin.py:361
|
||||
#: snikket_web/admin.py:362
|
||||
msgid "No such invitation exists"
|
||||
msgstr "邀请不存在"
|
||||
|
||||
#: snikket_web/admin.py:376
|
||||
#: snikket_web/admin.py:377
|
||||
msgid "Invitation revoked"
|
||||
msgstr "邀请已撤销"
|
||||
|
||||
#: snikket_web/admin.py:393 snikket_web/admin.py:441
|
||||
#: snikket_web/admin.py:394 snikket_web/admin.py:442
|
||||
#: snikket_web/templates/admin_delete_circle.html:10
|
||||
msgid "Name"
|
||||
msgstr "名称"
|
||||
|
||||
#: snikket_web/admin.py:398 snikket_web/templates/admin_circles.html:47
|
||||
#: snikket_web/admin.py:399 snikket_web/templates/admin_circles.html:47
|
||||
msgid "Create circle"
|
||||
msgstr "新建圈子"
|
||||
|
||||
#: snikket_web/admin.py:428
|
||||
#: snikket_web/admin.py:429
|
||||
msgid "Circle created"
|
||||
msgstr "圈子已创建"
|
||||
|
||||
#: snikket_web/admin.py:446
|
||||
#: snikket_web/admin.py:447
|
||||
msgid "Select user"
|
||||
msgstr "选择用户"
|
||||
|
||||
#: snikket_web/admin.py:451
|
||||
#: snikket_web/admin.py:452
|
||||
msgid "Update circle"
|
||||
msgstr "更新圈子"
|
||||
|
||||
#: snikket_web/admin.py:455
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "永久删除圈子"
|
||||
|
||||
#: snikket_web/admin.py:461
|
||||
#: snikket_web/admin.py:458
|
||||
msgid "Add user"
|
||||
msgstr "增加用户"
|
||||
|
||||
#: snikket_web/admin.py:477
|
||||
#: snikket_web/admin.py:474 snikket_web/admin.py:563
|
||||
msgid "No such circle exists"
|
||||
msgstr "圈子不存在"
|
||||
|
||||
#: snikket_web/admin.py:514
|
||||
#: snikket_web/admin.py:511
|
||||
msgid "Circle data updated"
|
||||
msgstr "圈子数据已更新"
|
||||
|
||||
#: snikket_web/admin.py:520
|
||||
msgid "Circle deleted"
|
||||
msgstr "圈子已删除"
|
||||
|
||||
#: snikket_web/admin.py:531
|
||||
#: snikket_web/admin.py:521
|
||||
msgid "User added to circle"
|
||||
msgstr "用户已添加到圈子"
|
||||
|
||||
#: snikket_web/admin.py:540
|
||||
#: snikket_web/admin.py:530
|
||||
msgid "User removed from circle"
|
||||
msgstr "用户已从圈子移除"
|
||||
|
||||
#: snikket_web/admin.py:609
|
||||
#: snikket_web/admin.py:547
|
||||
msgid "Delete circle permanently"
|
||||
msgstr "永久删除圈子"
|
||||
|
||||
#: snikket_web/admin.py:574
|
||||
msgid "Circle deleted"
|
||||
msgstr "圈子已删除"
|
||||
|
||||
#: snikket_web/admin.py:640
|
||||
msgid "Message contents"
|
||||
msgstr "消息内容"
|
||||
|
||||
#: snikket_web/admin.py:615
|
||||
#: snikket_web/admin.py:646
|
||||
msgid "Only send to online users"
|
||||
msgstr "仅发送给在线用户"
|
||||
|
||||
#: snikket_web/admin.py:619
|
||||
#: snikket_web/admin.py:650
|
||||
msgid "Post to all users"
|
||||
msgstr "发送给所有用户"
|
||||
|
||||
#: snikket_web/admin.py:623
|
||||
#: snikket_web/admin.py:654
|
||||
msgid "Send preview to yourself"
|
||||
msgstr "发送预览"
|
||||
|
||||
#: snikket_web/admin.py:645
|
||||
#: snikket_web/admin.py:676
|
||||
msgid "Announcement sent!"
|
||||
msgstr "公告已发送!"
|
||||
|
||||
#: snikket_web/infra.py:51
|
||||
#: snikket_web/infra.py:53
|
||||
msgid "Main"
|
||||
msgstr "主圈子"
|
||||
|
||||
#: snikket_web/invite.py:33
|
||||
#: snikket_web/invite.py:35
|
||||
msgid ""
|
||||
"The account data you tried to import is too large to upload. Please contact "
|
||||
"your Snikket operator."
|
||||
msgstr "账号数据过大,无法上传。请联系Sknikket管理员。"
|
||||
|
||||
#: snikket_web/invite.py:112
|
||||
#: snikket_web/invite.py:114
|
||||
msgid "Username"
|
||||
msgstr "用户名"
|
||||
|
||||
#: snikket_web/invite.py:116 snikket_web/invite.py:184 snikket_web/main.py:41
|
||||
#: snikket_web/invite.py:118 snikket_web/invite.py:186 snikket_web/main.py:43
|
||||
msgid "Password"
|
||||
msgstr "密码"
|
||||
|
||||
#: snikket_web/invite.py:120 snikket_web/invite.py:188
|
||||
#: snikket_web/invite.py:122 snikket_web/invite.py:190
|
||||
msgid "Confirm password"
|
||||
msgstr "确认密码"
|
||||
|
||||
#: snikket_web/invite.py:124 snikket_web/invite.py:192
|
||||
#: snikket_web/invite.py:126 snikket_web/invite.py:194
|
||||
msgid "The passwords must match."
|
||||
msgstr "两次输入的密码不相符。"
|
||||
|
||||
#: snikket_web/invite.py:129
|
||||
#: snikket_web/invite.py:131
|
||||
msgid "Create account"
|
||||
msgstr "创建账户"
|
||||
|
||||
#: snikket_web/invite.py:156
|
||||
#: snikket_web/invite.py:158
|
||||
msgid "That username is already taken."
|
||||
msgstr "用户名已被占用。"
|
||||
|
||||
#: snikket_web/invite.py:160 snikket_web/invite.py:225
|
||||
#: snikket_web/invite.py:162 snikket_web/invite.py:227
|
||||
msgid "Registration was declined for unknown reasons."
|
||||
msgstr "注册被拒绝。"
|
||||
|
||||
#: snikket_web/invite.py:164
|
||||
#: snikket_web/invite.py:166
|
||||
msgid "The username is not valid."
|
||||
msgstr "无效的用户名。"
|
||||
|
||||
#: snikket_web/invite.py:197 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/invite.py:199 snikket_web/templates/user_home.html:32
|
||||
#: snikket_web/templates/user_passwd.html:29
|
||||
msgid "Change password"
|
||||
msgstr "更改密码"
|
||||
|
||||
#: snikket_web/invite.py:244
|
||||
#: snikket_web/invite.py:246
|
||||
msgid "Account data file"
|
||||
msgstr "账户数据文件"
|
||||
|
||||
#: snikket_web/invite.py:248
|
||||
#: snikket_web/invite.py:250
|
||||
msgid "Import data"
|
||||
msgstr "导入数据"
|
||||
|
||||
#: snikket_web/invite.py:269
|
||||
#: snikket_web/invite.py:271
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The account data you tried to import is in an unknown format. Please upload an "
|
||||
"XML file in XEP-0227 format (provided format: %(mimetype)s)."
|
||||
"The account data you tried to import is in an unknown format. Please upload "
|
||||
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
|
||||
msgstr ""
|
||||
"导入失败:未知的数据格式( %(mimetype)s)。请上传使用XEP-0227格式的XML文件。"
|
||||
|
||||
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/invite.py:291 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/user.py:178
|
||||
msgid "Error"
|
||||
msgstr "错误"
|
||||
|
||||
#: snikket_web/main.py:36
|
||||
#: snikket_web/main.py:38
|
||||
msgid "Address"
|
||||
msgstr "账号地址"
|
||||
|
||||
#: snikket_web/main.py:46
|
||||
#: snikket_web/main.py:48
|
||||
msgid "Sign in"
|
||||
msgstr "登录"
|
||||
|
||||
#: snikket_web/main.py:55
|
||||
#: snikket_web/main.py:57
|
||||
msgid "Invalid username or password."
|
||||
msgstr "用户名或密码无效。"
|
||||
|
||||
#: snikket_web/main.py:83
|
||||
#: snikket_web/main.py:85
|
||||
msgid "Login successful!"
|
||||
msgstr "登录成功!"
|
||||
|
||||
@@ -358,8 +359,8 @@ msgstr "密码已修改"
|
||||
|
||||
#: snikket_web/user.py:123
|
||||
msgid ""
|
||||
"The chosen avatar is too big. To be able to upload larger avatars, please use "
|
||||
"the app."
|
||||
"The chosen avatar is too big. To be able to upload larger avatars, please "
|
||||
"use the app."
|
||||
msgstr "选择的头像过大,你需要使用APP上传大头像。"
|
||||
|
||||
#: snikket_web/user.py:170
|
||||
@@ -413,18 +414,21 @@ msgstr "许可证"
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The web portal software is licensed under the terms of the <a href="
|
||||
"\"%(agpl_url)s\">Affero GNU General Public License, version 3.0 or later</a>. "
|
||||
"The full terms of the license can be reviewed using the aforementioned link."
|
||||
"\"%(agpl_url)s\">Affero GNU General Public License, version 3.0 or later</"
|
||||
"a>. The full terms of the license can be reviewed using the aforementioned "
|
||||
"link."
|
||||
msgstr ""
|
||||
"此Web门户软件许可遵循 <a href=\"%(agpl_url)s\">GNU Affero通用公共许可证(版本3."
|
||||
"0及之后版本)</a>中的条款。此许可证的完整条款请使用前文中的链接查看。"
|
||||
"此Web门户软件许可遵循 <a href=\"%(agpl_url)s\">GNU Affero通用公共许可证(版本"
|
||||
"3.0及之后版本)</a>中的条款。此许可证的完整条款请使用前文中的链接查看。"
|
||||
|
||||
#: snikket_web/templates/about.html:15
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The source code of the web portal can be downloaded and viewed in <a href="
|
||||
"\"%(source_url)s\">its GitHub repository</a>."
|
||||
msgstr "此Web门户的源代码可在<a href=\"%(source_url)s\">其GitHub repository</a>查看并下载。"
|
||||
msgstr ""
|
||||
"此Web门户的源代码可在<a href=\"%(source_url)s\">其GitHub repository</a>查看并"
|
||||
"下载。"
|
||||
|
||||
#: snikket_web/templates/about.html:16
|
||||
#, python-format
|
||||
@@ -434,7 +438,8 @@ msgid ""
|
||||
"\"%(apache20_url)s\">Apache 2.0 License</a>."
|
||||
msgstr ""
|
||||
"Web门户中使用的图标为<a href=\"%(source_url)s\">Google’s Material Icons</a>,"
|
||||
"由Google制作分发并遵循<a href=\"%(apache20_url)s\">Apache 2.0 许可证</a>中的条款。"
|
||||
"由Google制作分发并遵循<a href=\"%(apache20_url)s\">Apache 2.0 许可证</a>中的"
|
||||
"条款。"
|
||||
|
||||
#: snikket_web/templates/about.html:17
|
||||
msgid "Trademarks"
|
||||
@@ -447,14 +452,14 @@ msgid ""
|
||||
"Company. For more information about the trademarks, visit the <a href="
|
||||
"\"%(trademarks_url)s\">Snikket Trademarks information page</a>."
|
||||
msgstr ""
|
||||
"“Snikket”和鹦鹉logo是Snikket Community Interest Company的商标。关于商标的更多信息,请访问<a href="
|
||||
"\"%(trademarks_url)s\">Snikket商标信息页面</a>。"
|
||||
"“Snikket”和鹦鹉logo是Snikket Community Interest Company的商标。关于商标的更多"
|
||||
"信息,请访问<a href=\"%(trademarks_url)s\">Snikket商标信息页面</a>。"
|
||||
|
||||
#: snikket_web/templates/about.html:19
|
||||
msgid "Software Versions"
|
||||
msgstr "软件版本"
|
||||
|
||||
#: snikket_web/templates/about.html:29
|
||||
#: snikket_web/templates/about.html:32
|
||||
msgid "Back to the main page"
|
||||
msgstr "返回主页面"
|
||||
|
||||
@@ -475,8 +480,9 @@ msgstr "<em>圈子</em> 旨在协助此实例上的用户找到自己社交圈
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:6
|
||||
msgid ""
|
||||
"Users who are in the same circle will see each other in their contact list. In "
|
||||
"addition, each circle has a group chat where the circle members are included."
|
||||
"Users who are in the same circle will see each other in their contact list. "
|
||||
"In addition, each circle has a group chat where the circle members are "
|
||||
"included."
|
||||
msgstr ""
|
||||
"同一个圈子的用户可以在联系人列表中互相看到。同时每个圈子还有圈子专属的群聊。"
|
||||
|
||||
@@ -517,8 +523,8 @@ msgstr "没有圈子"
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:41
|
||||
msgid ""
|
||||
"Currently, there are no circles on this service. Use the form below to create "
|
||||
"one."
|
||||
"Currently, there are no circles on this service. Use the form below to "
|
||||
"create one."
|
||||
msgstr "目前此实例没有圈子。使用下面的表格创建一个。"
|
||||
|
||||
#: snikket_web/templates/admin_circles.html:44
|
||||
@@ -561,6 +567,53 @@ msgstr "原始调试信息"
|
||||
msgid "Copy complete output"
|
||||
msgstr "复制"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:4
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Edit circle %(circle_name)s"
|
||||
msgid "Delete circle %(circle_name)s"
|
||||
msgstr "修改 %(circle_name)s 圈子信息"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:6
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
#: snikket_web/templates/admin_edit_circle.html:51
|
||||
msgid "Delete circle"
|
||||
msgstr "删除圈子"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:8
|
||||
#, fuzzy
|
||||
#| msgid "Are you sure you want to delete the following user?"
|
||||
msgid "Are you sure you want to delete the following circle?"
|
||||
msgstr "你确定要删除以下用户吗?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:13
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "危险"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:14
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "The user and their data will be deleted irrevocably, permanently and "
|
||||
#| "immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
#| "strong>"
|
||||
msgid ""
|
||||
"The circle and the corresponding chat will be deleted, permanently and "
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
msgstr ""
|
||||
"当你按下按钮的时候,此用户的相关数据将被立刻永久删除,此操作无法撤销。"
|
||||
"<strong>没有后悔药!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_circle.html:17
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_manage_data.html:14
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "返回"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:4
|
||||
#, python-format
|
||||
msgid "Delete user %(user_name)s"
|
||||
@@ -575,26 +628,14 @@ msgstr "删除用户"
|
||||
msgid "Are you sure you want to delete the following user?"
|
||||
msgstr "你确定要删除以下用户吗?"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:15
|
||||
msgid "Danger"
|
||||
msgstr "危险"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:16
|
||||
msgid ""
|
||||
"The user and their data will be deleted irrevocably, permanently and "
|
||||
"immediately upon pushing the below button. <strong>There is no way back!</"
|
||||
"strong>"
|
||||
msgstr ""
|
||||
"当你按下按钮的时候,此用户的相关数据将被立刻永久删除,此操作无法撤销。<strong>"
|
||||
"没有后悔药!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_delete_user.html:19
|
||||
#: snikket_web/templates/admin_reset_user_password.html:25
|
||||
#: snikket_web/templates/user_logout.html:10
|
||||
#: snikket_web/templates/user_passwd.html:27
|
||||
#: snikket_web/templates/user_profile.html:32
|
||||
msgid "Back"
|
||||
msgstr "返回"
|
||||
"当你按下按钮的时候,此用户的相关数据将被立刻永久删除,此操作无法撤销。"
|
||||
"<strong>没有后悔药!</strong>"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:14
|
||||
msgid "This is your main circle"
|
||||
@@ -628,10 +669,6 @@ msgstr "此圈子没有群聊。"
|
||||
msgid "Return to circle list"
|
||||
msgstr "返回圈子列表"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:48
|
||||
msgid "Delete circle"
|
||||
msgstr "删除圈子"
|
||||
|
||||
#: snikket_web/templates/admin_edit_circle.html:49
|
||||
msgid "Deleting a circle does not delete any users in the circle."
|
||||
msgstr "删除圈子不会删除其中的用户账户。"
|
||||
@@ -694,7 +731,8 @@ msgid "Circles"
|
||||
msgstr "圈子"
|
||||
|
||||
#: snikket_web/templates/admin_edit_invite.html:23
|
||||
msgid "Users joining via this invitation will be added to the following circles:"
|
||||
msgid ""
|
||||
"Users joining via this invitation will be added to the following circles:"
|
||||
msgstr "使用此邀请链接的用户将加入以下圈子:"
|
||||
|
||||
#: snikket_web/templates/admin_edit_invite.html:29
|
||||
@@ -731,7 +769,8 @@ msgstr "受限用户只能与此Sknikket实例的用户交流,只能加入此
|
||||
|
||||
#: snikket_web/templates/admin_edit_user.html:7
|
||||
msgid ""
|
||||
"Like limited users and can also interact with users on other Snikket services."
|
||||
"Like limited users and can also interact with users on other Snikket "
|
||||
"services."
|
||||
msgstr "除了受限用户的权限,还可以和其他Snikket实例的用户交流。"
|
||||
|
||||
#: snikket_web/templates/admin_edit_user.html:9
|
||||
@@ -777,8 +816,8 @@ msgstr "重置密码"
|
||||
|
||||
#: snikket_web/templates/admin_edit_user.html:63
|
||||
msgid ""
|
||||
"If the user has lost their password, you can use the button below to create a "
|
||||
"special link which allows to change the password of the account, once."
|
||||
"If the user has lost their password, you can use the button below to create "
|
||||
"a special link which allows to change the password of the account, once."
|
||||
msgstr "如果用户忘记密码,你可以用下面的链接创建一个一次性的密码重置链接。"
|
||||
|
||||
#: snikket_web/templates/admin_edit_user.html:68
|
||||
@@ -791,8 +830,8 @@ msgid ""
|
||||
"devices is necessary to troubleshoot issues. The button below reveals this "
|
||||
"(sensitive) information."
|
||||
msgstr ""
|
||||
"某些情况下,此用户的扩展信息和设备信息为了debug是必须的。下面的按钮显示这些敏感"
|
||||
"信息。"
|
||||
"某些情况下,此用户的扩展信息和设备信息为了debug是必须的。下面的按钮显示这些敏"
|
||||
"感信息。"
|
||||
|
||||
#: snikket_web/templates/admin_edit_user.html:74
|
||||
msgid "Show debug information"
|
||||
@@ -1078,12 +1117,12 @@ msgstr "创建账户"
|
||||
#: snikket_web/templates/invite_register.html:13
|
||||
msgid ""
|
||||
"Creating an account will allow to communicate with other people using the "
|
||||
"Snikket app or compatible software. If you already have the app installed, we "
|
||||
"recommend that you continue the account creation process inside the app by "
|
||||
"clicking on the button below:"
|
||||
"Snikket app or compatible software. If you already have the app installed, "
|
||||
"we recommend that you continue the account creation process inside the app "
|
||||
"by clicking on the button below:"
|
||||
msgstr ""
|
||||
"创建账户后就可以使用Snikket APP或者其他兼容客户端与其他用户通信。如果你已经安装"
|
||||
"了APP,我们建议你点击下面的按钮后在APP中完成注册流程:"
|
||||
"创建账户后就可以使用Snikket APP或者其他兼容客户端与其他用户通信。如果你已经安"
|
||||
"装了APP,我们建议你点击下面的按钮后在APP中完成注册流程:"
|
||||
|
||||
#: snikket_web/templates/invite_register.html:14
|
||||
#: snikket_web/templates/invite_view.html:39
|
||||
@@ -1093,8 +1132,8 @@ msgstr "已经安装APP?"
|
||||
#: snikket_web/templates/invite_register.html:16
|
||||
#: snikket_web/templates/invite_reset_view.html:21
|
||||
#: snikket_web/templates/invite_view.html:41
|
||||
#: snikket_web/templates/invite_view.html:106
|
||||
#: snikket_web/templates/invite_view.html:134
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
msgid "Open the app"
|
||||
msgstr "打开APP"
|
||||
|
||||
@@ -1112,8 +1151,8 @@ msgid ""
|
||||
"If you plan to use a legacy XMPP client, you can register an account online "
|
||||
"and enter your credentials into any XMPP-compatible software."
|
||||
msgstr ""
|
||||
"如果你计划使用旧式的XMPP客户端,你可以注册后在你的XMPP兼容软件中输入你的账户信"
|
||||
"息。"
|
||||
"如果你计划使用旧式的XMPP客户端,你可以注册后在你的XMPP兼容软件中输入你的账户"
|
||||
"信息。"
|
||||
|
||||
#: snikket_web/templates/invite_register.html:27
|
||||
msgid ""
|
||||
@@ -1135,8 +1174,8 @@ msgstr "在线重置密码"
|
||||
|
||||
#: snikket_web/templates/invite_reset.html:16
|
||||
msgid ""
|
||||
"To reset your password online, fill out the fields below and confirm using the "
|
||||
"button."
|
||||
"To reset your password online, fill out the fields below and confirm using "
|
||||
"the button."
|
||||
msgstr "填写信息并使用下面的按钮提交来在线重置密码。"
|
||||
|
||||
#: snikket_web/templates/invite_reset_success.html:5
|
||||
@@ -1180,15 +1219,15 @@ msgstr "点击下面的按钮使用Sknikket APP重置密码。"
|
||||
|
||||
#: snikket_web/templates/invite_reset_view.html:25
|
||||
msgid ""
|
||||
"Alternatively, you can scan the below code with the Snikket App using the Scan "
|
||||
"button at the top."
|
||||
"Alternatively, you can scan the below code with the Snikket App using the "
|
||||
"Scan button at the top."
|
||||
msgstr "或者,使用Snikket APP顶部的扫码按钮扫一扫下面的码。"
|
||||
|
||||
#: snikket_web/templates/invite_reset_view.html:26
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"Your camera will turn on. Point it at the square code below until it is within "
|
||||
"the highlighted square on your screen, and wait until the app recognises it."
|
||||
"Your camera will turn on. Point it at the square code below until it is "
|
||||
"within the highlighted square on your screen, and wait until the app "
|
||||
"recognises it."
|
||||
msgstr "这会打开你的相机。把红框对准下面的二维码,直到APP成功扫描。"
|
||||
|
||||
#: snikket_web/templates/invite_reset_view.html:27
|
||||
@@ -1206,8 +1245,8 @@ msgid ""
|
||||
"You can also <a href=\"%(reset_url)s\">reset your password online</a> if the "
|
||||
"above button or scanning the QR code does not work for you."
|
||||
msgstr ""
|
||||
"你也可以 <a href=\"%(reset_url)s\">点此在线重置密码</a>,如果上面的按钮或者扫码"
|
||||
"都不好用的话。"
|
||||
"你也可以 <a href=\"%(reset_url)s\">点此在线重置密码</a>,如果上面的按钮或者扫"
|
||||
"码都不好用的话。"
|
||||
|
||||
#: snikket_web/templates/invite_success.html:5
|
||||
#, python-format
|
||||
@@ -1221,7 +1260,8 @@ msgstr "成功在 %(site_name)s 注册"
|
||||
|
||||
#: snikket_web/templates/invite_success.html:12
|
||||
#, python-format
|
||||
msgid "Congratulations! You successfully registered on %(site_name)s as %(jid)s."
|
||||
msgid ""
|
||||
"Congratulations! You successfully registered on %(site_name)s as %(jid)s."
|
||||
msgstr "恭喜!你成功在 %(site_name)s 注册了账户 %(jid)s 。"
|
||||
|
||||
#: snikket_web/templates/invite_success.html:13
|
||||
@@ -1240,8 +1280,8 @@ msgid ""
|
||||
"You can now safely close this page, or log in to the web portal to <a href="
|
||||
"\"%(login_url)s\">manage your account</a>."
|
||||
msgstr ""
|
||||
"你现在可以安全地关闭页面,或者登录到Web门户<a href=\"%(login_url)s\">管理你的账"
|
||||
"户</a>。"
|
||||
"你现在可以安全地关闭页面,或者登录到Web门户<a href=\"%(login_url)s\">管理你的"
|
||||
"账户</a>。"
|
||||
|
||||
#: snikket_web/templates/invite_success.html:21
|
||||
msgid "Import successful"
|
||||
@@ -1257,10 +1297,10 @@ msgstr "迁移到Snikket?"
|
||||
|
||||
#: snikket_web/templates/invite_success.html:27
|
||||
msgid ""
|
||||
"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."
|
||||
"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."
|
||||
msgstr ""
|
||||
"如果你从其他的Snikket实例或XMPP兼容实例迁移至此,你可以把旧帐户的信息导入进来"
|
||||
"(联系人、个人资料等)。当你把数据从之前的实例导出后,在这里进行导入操作。"
|
||||
@@ -1280,8 +1320,8 @@ msgid ""
|
||||
"You have been invited to chat with %(inviter_name)s using Snikket, a secure, "
|
||||
"privacy-friendly chat app on %(site_name)s."
|
||||
msgstr ""
|
||||
"%(inviter_name)s 邀请你使用 Snikket 在 %(site_name)s 和TA一起聊天。Snikket是一"
|
||||
"个安全、注重隐私的聊天APP。"
|
||||
"%(inviter_name)s 邀请你使用 Snikket 在 %(site_name)s 和TA一起聊天。Snikket是"
|
||||
"一个安全、注重隐私的聊天APP。"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:18
|
||||
#, python-format
|
||||
@@ -1306,15 +1346,15 @@ msgid ""
|
||||
"Install the Snikket App on your Android device (<a href=\"%(ios_info_url)s\" "
|
||||
"rel=\"noopener noreferrer\" target=\"_blank\">iOS coming soon!</a>)."
|
||||
msgstr ""
|
||||
"在你的Android设备上安装Snikket App(<a href=\"%(ios_info_url)s\" rel=\"noopener "
|
||||
"noreferrer\" target=\"_blank\">iOS 版本即将到来!</a>)。"
|
||||
"在你的Android设备上安装Snikket App(<a href=\"%(ios_info_url)s\" rel="
|
||||
"\"noopener noreferrer\" target=\"_blank\">iOS 版本即将到来!</a>)。"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:28
|
||||
msgid "Get it on Google Play"
|
||||
msgstr "从Google Play获取"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:30
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:80
|
||||
msgid "Download on the App Store"
|
||||
msgstr "从App Store下载"
|
||||
|
||||
@@ -1328,8 +1368,8 @@ msgstr "发送到移动设备"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:38
|
||||
msgid ""
|
||||
"After installation the app should automatically open and prompt you to create "
|
||||
"an account. If not, simply click the button below."
|
||||
"After installation the app should automatically open and prompt you to "
|
||||
"create an account. If not, simply click the button below."
|
||||
msgstr "APP首次运行时会自动提示你创建账户。如果没有提示,点击下面的按钮即可。"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:46
|
||||
@@ -1339,19 +1379,19 @@ msgid ""
|
||||
"above does not work with your app, you may need to <a href=\"%(register_url)s"
|
||||
"\">register an account manually</a>."
|
||||
msgstr ""
|
||||
"你可以使用任意XMPP兼容软件连接到Snikket。如果上面的按钮没有效果,你可能需要<a "
|
||||
"href=\"%(register_url)s\">手动注册</a>。"
|
||||
"你可以使用任意XMPP兼容软件连接到Snikket。如果上面的按钮没有效果,你可能需要"
|
||||
"<a href=\"%(register_url)s\">手动注册</a>。"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:52
|
||||
msgid "Scan invite code"
|
||||
msgstr "扫描邀请码"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:55
|
||||
#: snikket_web/templates/invite_view.html:84
|
||||
#: snikket_web/templates/invite_view.html:96
|
||||
#: snikket_web/templates/invite_view.html:112
|
||||
#: snikket_web/templates/invite_view.html:124
|
||||
#: snikket_web/templates/invite_view.html:140
|
||||
#: snikket_web/templates/invite_view.html:62
|
||||
#: snikket_web/templates/invite_view.html:74
|
||||
#: snikket_web/templates/invite_view.html:90
|
||||
#: snikket_web/templates/invite_view.html:102
|
||||
#: snikket_web/templates/invite_view.html:118
|
||||
msgid "Close"
|
||||
msgstr "关闭"
|
||||
|
||||
@@ -1363,59 +1403,40 @@ msgstr ""
|
||||
"你可以用手机相机扫码来打开邀请链接。你可以使用Snikket APP或者任意的二维码扫码"
|
||||
"APP。"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:63
|
||||
msgid "Using a QR code scanner"
|
||||
msgstr "使用二维码扫码APP"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:65
|
||||
msgid "Using the Snikket app"
|
||||
msgstr "使用Snikket APP"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:70
|
||||
msgid ""
|
||||
"Use a <em>QR code</em> scanner on your mobile device to scan the code below:"
|
||||
msgstr "使用 <em>扫码APP</em> 扫描下面的二维码:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:76
|
||||
msgid ""
|
||||
"Install the Snikket app on your mobile device, open it, and tap the 'Scan' "
|
||||
"button at the top."
|
||||
msgstr "安装并打开Snikket APP,点击顶部的“扫码”按钮。"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:93
|
||||
#: snikket_web/templates/invite_view.html:71
|
||||
msgid "Install on iOS"
|
||||
msgstr "在iOS安装"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:77
|
||||
msgid ""
|
||||
"After downloading Snikket from the App Store, you have to return to this "
|
||||
"invite link and tap on \"Open the app\" to proceed."
|
||||
msgstr "从App Store下载后,你需要回到这个邀请链接,然后点击“打开APP”来继续。"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:101
|
||||
#: snikket_web/templates/invite_view.html:79
|
||||
msgid "First download Snikket from the App Store using the button below:"
|
||||
msgstr "首先使用下面的按钮从App Store下载Snikket APP:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:103
|
||||
#: snikket_web/templates/invite_view.html:131
|
||||
#: snikket_web/templates/invite_view.html:81
|
||||
#: snikket_web/templates/invite_view.html:109
|
||||
msgid ""
|
||||
"After the installation is complete, you can return to this page and tap the "
|
||||
"\"Open the app\" button to continue with the setup:"
|
||||
msgstr "安装完之后,你可以回到此页面,然后点击“打开APP”按钮来继续安装:"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:121
|
||||
#: snikket_web/templates/invite_view.html:130
|
||||
#: snikket_web/templates/invite_view.html:99
|
||||
#: snikket_web/templates/invite_view.html:108
|
||||
msgid "Install via F-Droid"
|
||||
msgstr "从F-Droid安装"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:127
|
||||
#: snikket_web/templates/invite_view.html:105
|
||||
msgid ""
|
||||
"After installing Snikket via F-Droid, you have to return to this invite link "
|
||||
"and tap on \"Open the app\" to proceed."
|
||||
msgstr ""
|
||||
"从F-Droid安装Snikket APP后,你需要回到这个邀请链接,然后点击“打开APP”来继续。"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:129
|
||||
#: snikket_web/templates/invite_view.html:107
|
||||
msgid "First install Snikket from F-Droid using the button below:"
|
||||
msgstr "首先使用下面的按钮从F-Droid安装Snikket APP:"
|
||||
|
||||
@@ -1453,7 +1474,8 @@ msgid ""
|
||||
"This Snikket service only hosts addresses ending in <em>@%(snikket_domain)s</"
|
||||
"em>. Your password was not sent."
|
||||
msgstr ""
|
||||
"此Snikket实例只支持后缀为 <em>@%(snikket_domain)s</em> 的地址。未提交你的密码。"
|
||||
"此Snikket实例只支持后缀为 <em>@%(snikket_domain)s</em> 的地址。未提交你的密"
|
||||
"码。"
|
||||
|
||||
#: snikket_web/templates/unauth.html:16
|
||||
msgid "Operation successful"
|
||||
@@ -1524,10 +1546,11 @@ msgstr "修改密码"
|
||||
#: snikket_web/templates/user_passwd.html:6
|
||||
msgid ""
|
||||
"To change your password, you need to provide the current password as well as "
|
||||
"the new one. To reduce the chance of typos, we ask for your new password twice."
|
||||
"the new one. To reduce the chance of typos, we ask for your new password "
|
||||
"twice."
|
||||
msgstr ""
|
||||
"要修改密码,你必须同时提供旧密码和新密码。为了减少输错的情况,你需要输入新密码"
|
||||
"两次。"
|
||||
"要修改密码,你必须同时提供旧密码和新密码。为了减少输错的情况,你需要输入新密"
|
||||
"码两次。"
|
||||
|
||||
#: snikket_web/templates/user_passwd.html:24
|
||||
msgid ""
|
||||
@@ -1549,6 +1572,22 @@ msgstr "可见性"
|
||||
|
||||
#: snikket_web/templates/user_profile.html:24
|
||||
msgid ""
|
||||
"This section allows you to control who can see your profile information, like "
|
||||
"avatar and nickname."
|
||||
"This section allows you to control who can see your profile information, "
|
||||
"like avatar and nickname."
|
||||
msgstr "允许你控制谁能看到你的个人资料,比如头像和昵称。"
|
||||
|
||||
#~ msgid "Using a QR code scanner"
|
||||
#~ msgstr "使用二维码扫码APP"
|
||||
|
||||
#~ msgid "Using the Snikket app"
|
||||
#~ msgstr "使用Snikket APP"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Use a <em>QR code</em> scanner on your mobile device to scan the code "
|
||||
#~ "below:"
|
||||
#~ msgstr "使用 <em>扫码APP</em> 扫描下面的二维码:"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Install the Snikket app on your mobile device, open it, and tap the "
|
||||
#~ "'Scan' button at the top."
|
||||
#~ msgstr "安装并打开Snikket APP,点击顶部的“扫码”按钮。"
|
||||
|
||||
@@ -59,7 +59,7 @@ _ACCESS_MODEL_CHOICES = [
|
||||
|
||||
|
||||
class ProfileForm(BaseForm):
|
||||
nickname = wtforms.TextField(
|
||||
nickname = wtforms.StringField(
|
||||
_l("Display name"),
|
||||
)
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ action/logout:logout
|
||||
action/login:login
|
||||
action/exit_to_app:exit_to_app
|
||||
action/lock:lock
|
||||
action/lock_open:lock_open
|
||||
action/restore_from_trash:restore_from_trash
|
||||
communication/import_export:import_export
|
||||
communication/qr_code:qrcode
|
||||
communication/vpn_key:passwd
|
||||
|
||||
6
tools/import-icons.sh
Normal file → Executable file
6
tools/import-icons.sh
Normal file → Executable file
@@ -9,9 +9,9 @@ set -euo pipefail
|
||||
# FLAVOR one of '', 'round', 'sharp', 'outlined', 'twoshade'
|
||||
# SVGOUT path to the newly created SVG file
|
||||
root="$1/src"
|
||||
iconlist_file="$2"
|
||||
flavor="$3"
|
||||
output_file="$4"
|
||||
iconlist_file="${2-tools/icons.list}"
|
||||
flavor="${3-round}"
|
||||
output_file="${4-snikket_web/static/img/icons.svg}"
|
||||
|
||||
printf '<svg aria-hidden="true" style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n<defs>\n' > "$output_file"
|
||||
printf '<!-- These icons are sourced from Google’s Material Icons set,\nlicensed under the terms of the Apache 2.0 License -->\n' >> "$output_file"
|
||||
|
||||
Reference in New Issue
Block a user