diff --git a/app/__init__.py b/app/__init__.py index cf0732c9..c566e8f4 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -19,6 +19,13 @@ from sqlalchemy_searchable import make_searchable from config import Config +def get_locale(): + try: + return request.accept_languages.best_match(current_app.config['LANGUAGES']) + except: + return 'en' + + db = SQLAlchemy() # engine_options={'pool_size': 5, 'max_overflow': 10} # session_options={"autoflush": False} migrate = Migrate() login = LoginManager() @@ -27,7 +34,7 @@ login.login_message = _l('Please log in to access this page.') mail = Mail() bootstrap = Bootstrap5() moment = Moment() -babel = Babel() +babel = Babel(locale_selector=get_locale) cache = Cache() celery = Celery(__name__, broker=Config.CELERY_BROKER_URL) @@ -130,11 +137,4 @@ def create_app(config_class=Config): return app -def get_locale(): - try: - return request.accept_languages.best_match(current_app.config['LANGUAGES']) - except: - return 'en_US' - - from app import models diff --git a/app/activitypub/util.py b/app/activitypub/util.py index dfbee16c..63c419e3 100644 --- a/app/activitypub/util.py +++ b/app/activitypub/util.py @@ -125,24 +125,24 @@ def post_to_activity(post: Post, community: Community): ], "object": { "id": create_id, - "actor": f"https://{current_app.config['SERVER_NAME']}/u/{post.author.user_name}", + "actor": post.author.ap_public_url, "to": [ "https://www.w3.org/ns/activitystreams#Public" ], "object": { "type": "Page", - "id": f"https://{current_app.config['SERVER_NAME']}/post/{post.id}", - "attributedTo": f"https://{current_app.config['SERVER_NAME']}/u/{post.author.user_name}", + "id": post.ap_id, + "attributedTo": post.author.ap_public_url, "to": [ f"https://{current_app.config['SERVER_NAME']}/c/{community.name}", "https://www.w3.org/ns/activitystreams#Public" ], "name": post.title, "cc": [], - "content": post.body_html, + "content": post.body_html if post.body_html else '', "mediaType": "text/html", "source": { - "content": post.body, + "content": post.body if post.body else '', "mediaType": "text/markdown" }, "attachment": [], @@ -200,6 +200,7 @@ def instance_allowed(host: str) -> bool: def find_actor_or_create(actor: str, create_if_not_found=True, community_only=False) -> Union[User, Community, None]: + actor_url = actor.strip() actor = actor.strip().lower() user = None # actor parameter must be formatted as https://server/u/actor or https://server/c/actor @@ -244,10 +245,15 @@ def find_actor_or_create(actor: str, create_if_not_found=True, community_only=Fa if create_if_not_found: if actor.startswith('https://'): try: - actor_data = get_request(actor, headers={'Accept': 'application/activity+json'}) + actor_data = get_request(actor_url, headers={'Accept': 'application/activity+json'}) except requests.exceptions.ReadTimeout: time.sleep(randint(3, 10)) - actor_data = get_request(actor, headers={'Accept': 'application/activity+json'}) + try: + actor_data = get_request(actor_url, headers={'Accept': 'application/activity+json'}) + except requests.exceptions.ReadTimeout: + return None + except requests.exceptions.ConnectionError: + return None if actor_data.status_code == 200: actor_json = actor_data.json() actor_data.close() @@ -698,6 +704,9 @@ def make_image_sizes_async(file_id, thumbnail_width, medium_width, directory): content_type_parts = content_type.split('/') if content_type_parts: file_ext = '.' + content_type_parts[-1] + else: + if '?' in file_ext: + file_ext = file_ext.split('?')[0] new_filename = gibberish(15) @@ -868,7 +877,7 @@ def refresh_instance_profile(instance_id: int): @celery.task def refresh_instance_profile_task(instance_id: int): instance = Instance.query.get(instance_id) - if instance.updated_at < utcnow() - timedelta(days=7): + if instance.inbox is None or instance.updated_at < utcnow() - timedelta(days=7): try: instance_data = get_request(f"https://{instance.domain}", headers={'Accept': 'application/activity+json'}) except: @@ -930,6 +939,11 @@ def refresh_instance_profile_task(instance_id: int): InstanceRole.instance_id == instance.id, InstanceRole.role == 'admin').delete() db.session.commit() + elif instance_data.status_code == 406: # Mastodon does this + instance.software = 'Mastodon' + instance.inbox = f"https://{instance.domain}/inbox" + instance.updated_at = utcnow() + db.session.commit() # alter the effect of upvotes based on their instance. Default to 1.0 diff --git a/app/cli.py b/app/cli.py index b093382e..70a4a00c 100644 --- a/app/cli.py +++ b/app/cli.py @@ -86,7 +86,11 @@ def register(app): db.session.add(Settings(name='registration_open', value=json.dumps(True))) db.session.add(Settings(name='approve_registrations', value=json.dumps(False))) db.session.add(Settings(name='federation', value=json.dumps(True))) - banned_instances = ['anonib.al','lemmygrad.ml', 'gab.com', 'rqd2.net', 'exploding-heads.com', 'hexbear.net', 'threads.net', 'pieville.net', 'noauthority.social', 'pieville.net', 'links.hackliberty.org'] + banned_instances = ['anonib.al','lemmygrad.ml', 'gab.com', 'rqd2.net', 'exploding-heads.com', 'hexbear.net', + 'threads.net', 'noauthority.social', 'pieville.net', 'links.hackliberty.org', + 'poa.st', 'freespeechextremist.com', 'bae.st', 'nicecrew.digital', 'detroitriotcity.com', + 'pawoo.net', 'shitposter.club', 'spinster.xyz', 'catgirl.life', 'gameliberty.club', + 'yggdrasil.social', 'beefyboys.win', 'brighteon.social', 'cum.salon'] for bi in banned_instances: db.session.add(BannedInstances(domain=bi)) print("Added banned instance", bi) diff --git a/app/community/routes.py b/app/community/routes.py index f7f61d94..ce09ad64 100644 --- a/app/community/routes.py +++ b/app/community/routes.py @@ -121,7 +121,13 @@ def show_community(community: Community): page = request.args.get('page', 1, type=int) sort = request.args.get('sort', '' if current_user.is_anonymous else current_user.default_sort) low_bandwidth = request.cookies.get('low_bandwidth', '0') == '1' - post_layout = request.args.get('layout', community.default_layout if not low_bandwidth else None) + if low_bandwidth: + post_layout = None + else: + if community.default_layout is not None: + post_layout = request.args.get('layout', community.default_layout) + else: + post_layout = request.args.get('layout', 'list') # If nothing has changed since their last visit, return HTTP 304 current_etag = f"{community.id}{sort}{post_layout}_{hash(community.last_active)}" @@ -846,3 +852,59 @@ def community_notification(community_id: int): db.session.commit() return render_template('community/_notification_toggle.html', community=community) + + +@bp.route('//moderate', methods=['GET']) +@login_required +def community_moderate(actor): + community = actor_to_community(actor) + + if community is not None: + if community.is_moderator() or current_user.is_admin(): + + page = request.args.get('page', 1, type=int) + search = request.args.get('search', '') + local_remote = request.args.get('local_remote', '') + + reports = Report.query.filter_by(status=0, in_community_id=community.id) + if local_remote == 'local': + reports = reports.filter_by(ap_id=None) + if local_remote == 'remote': + reports = reports.filter(Report.ap_id != None) + reports = reports.order_by(desc(Report.created_at)).paginate(page=page, per_page=1000, error_out=False) + + next_url = url_for('admin.admin_reports', page=reports.next_num) if reports.has_next else None + prev_url = url_for('admin.admin_reports', page=reports.prev_num) if reports.has_prev and page != 1 else None + + return render_template('community/community_moderate.html', title=_('Moderation of %(community)s', community=community.display_name()), + community=community, reports=reports, current='reports', + next_url=next_url, prev_url=prev_url, + moderating_communities=moderating_communities(current_user.get_id()), + joined_communities=joined_communities(current_user.get_id()), + inoculation=inoculation[randint(0, len(inoculation) - 1)] + ) + else: + abort(401) + else: + abort(404) + + +@bp.route('//moderate/banned', methods=['GET']) +@login_required +def community_moderate_banned(actor): + community = actor_to_community(actor) + + if community is not None: + if community.is_moderator() or current_user.is_admin(): + banned_people = User.query.join(CommunityBan, CommunityBan.user_id == User.id).filter(CommunityBan.community_id == community.id).all() + return render_template('community/community_moderate_banned.html', + title=_('People banned from of %(community)s', community=community.display_name()), + community=community, banned_people=banned_people, current='banned', + moderating_communities=moderating_communities(current_user.get_id()), + joined_communities=joined_communities(current_user.get_id()), + inoculation=inoculation[randint(0, len(inoculation) - 1)] + ) + else: + abort(401) + else: + abort(404) \ No newline at end of file diff --git a/app/community/util.py b/app/community/util.py index 6fc2b438..b07e2c16 100644 --- a/app/community/util.py +++ b/app/community/util.py @@ -211,7 +211,7 @@ def save_post(form, post: Post): filename = opengraph.get('og:image') or opengraph.get('og:image:url') filename_for_extension = filename.split('?')[0] if '?' in filename else filename unused, file_extension = os.path.splitext(filename_for_extension) - if file_extension.lower() in allowed_extensions: + if file_extension.lower() in allowed_extensions and not filename.startswith('/'): file = url_to_thumbnail_file(filename) if file: file.alt_text = opengraph.get('og:title') diff --git a/app/models.py b/app/models.py index 9ce75226..10f792b2 100644 --- a/app/models.py +++ b/app/models.py @@ -1120,11 +1120,12 @@ class Report(db.Model): status = db.Column(db.Integer, default=0) type = db.Column(db.Integer, default=0) # 0 = user, 1 = post, 2 = reply, 3 = community, 4 = conversation reporter_id = db.Column(db.Integer, db.ForeignKey('user.id')) - suspect_community_id = db.Column(db.Integer, db.ForeignKey('user.id')) + suspect_community_id = db.Column(db.Integer, db.ForeignKey('community.id')) suspect_user_id = db.Column(db.Integer, db.ForeignKey('user.id')) suspect_post_id = db.Column(db.Integer, db.ForeignKey('post.id')) suspect_post_reply_id = db.Column(db.Integer, db.ForeignKey('post_reply.id')) suspect_conversation_id = db.Column(db.Integer, db.ForeignKey('conversation.id')) + in_community_id = db.Column(db.Integer, db.ForeignKey('community.id')) created_at = db.Column(db.DateTime, default=utcnow) updated = db.Column(db.DateTime, default=utcnow) diff --git a/app/post/routes.py b/app/post/routes.py index a40a10cd..568a4518 100644 --- a/app/post/routes.py +++ b/app/post/routes.py @@ -224,7 +224,7 @@ def show_post(post_id: int): joined_communities=joined_communities(current_user.get_id()), inoculation=inoculation[randint(0, len(inoculation) - 1)] ) - response.headers.set('Vary', 'Accept, Cookie') + response.headers.set('Vary', 'Accept, Cookie, Accept-Language') return response @@ -416,7 +416,7 @@ def continue_discussion(post_id, comment_id): moderating_communities=moderating_communities(current_user.get_id()), joined_communities=joined_communities(current_user.get_id()), community=post.community, inoculation=inoculation[randint(0, len(inoculation) - 1)]) - response.headers.set('Vary', 'Accept, Cookie') + response.headers.set('Vary', 'Accept, Cookie, Accept-Language') return response @@ -795,7 +795,7 @@ def post_report(post_id: int): if form.validate_on_submit(): report = Report(reasons=form.reasons_to_string(form.reasons.data), description=form.description.data, type=1, reporter_id=current_user.id, suspect_user_id=post.author.id, suspect_post_id=post.id, - suspect_community_id=post.community.id) + suspect_community_id=post.community.id, in_community_id=post.community.id) db.session.add(report) # Notify moderators diff --git a/app/static/js/lightbox/baguetteBox.css b/app/static/js/lightbox/baguetteBox.css new file mode 100644 index 00000000..5c559904 --- /dev/null +++ b/app/static/js/lightbox/baguetteBox.css @@ -0,0 +1,198 @@ +/*! + * baguetteBox.js + * @author feimosi + * @version 1.11.1 + * @url https://github.com/feimosi/baguetteBox.js + */ +#baguetteBox-overlay { + display: none; + opacity: 0; + position: fixed; + overflow: hidden; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1000000; + background-color: #222; + background-color: rgba(0, 0, 0, 0.8); + -webkit-transition: opacity .5s ease; + transition: opacity .5s ease; } + #baguetteBox-overlay.visible { + opacity: 1; } + #baguetteBox-overlay .full-image { + display: inline-block; + position: relative; + width: 100%; + height: 100%; + text-align: center; } + #baguetteBox-overlay .full-image figure { + display: inline; + margin: 0; + height: 100%; } + #baguetteBox-overlay .full-image img { + display: inline-block; + width: auto; + height: auto; + max-height: 100%; + max-width: 100%; + vertical-align: middle; + -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); + -moz-box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); + box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); } + #baguetteBox-overlay .full-image figcaption { + display: block; + position: absolute; + bottom: 0; + width: 100%; + text-align: center; + line-height: 1.8; + white-space: normal; + color: #ccc; + background-color: #000; + background-color: rgba(0, 0, 0, 0.6); + font-family: sans-serif; } + #baguetteBox-overlay .full-image:before { + content: ""; + display: inline-block; + height: 50%; + width: 1px; + margin-right: -1px; } + +#baguetteBox-slider { + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 100%; + white-space: nowrap; + -webkit-transition: left .4s ease, -webkit-transform .4s ease; + transition: left .4s ease, -webkit-transform .4s ease; + transition: left .4s ease, transform .4s ease; + transition: left .4s ease, transform .4s ease, -webkit-transform .4s ease, -moz-transform .4s ease; } + #baguetteBox-slider.bounce-from-right { + -webkit-animation: bounceFromRight .4s ease-out; + animation: bounceFromRight .4s ease-out; } + #baguetteBox-slider.bounce-from-left { + -webkit-animation: bounceFromLeft .4s ease-out; + animation: bounceFromLeft .4s ease-out; } + +@-webkit-keyframes bounceFromRight { + 0% { + margin-left: 0; } + 50% { + margin-left: -30px; } + 100% { + margin-left: 0; } } + +@keyframes bounceFromRight { + 0% { + margin-left: 0; } + 50% { + margin-left: -30px; } + 100% { + margin-left: 0; } } + +@-webkit-keyframes bounceFromLeft { + 0% { + margin-left: 0; } + 50% { + margin-left: 30px; } + 100% { + margin-left: 0; } } + +@keyframes bounceFromLeft { + 0% { + margin-left: 0; } + 50% { + margin-left: 30px; } + 100% { + margin-left: 0; } } + +.baguetteBox-button#next-button, .baguetteBox-button#previous-button { + top: 50%; + top: calc(50% - 30px); + width: 44px; + height: 60px; } + +.baguetteBox-button { + position: absolute; + cursor: pointer; + outline: none; + padding: 0; + margin: 0; + border: 0; + -moz-border-radius: 15%; + border-radius: 15%; + background-color: #323232; + background-color: rgba(50, 50, 50, 0.5); + color: #ddd; + font: 1.6em sans-serif; + -webkit-transition: background-color .4s ease; + transition: background-color .4s ease; } + .baguetteBox-button:focus, .baguetteBox-button:hover { + background-color: rgba(50, 50, 50, 0.9); } + .baguetteBox-button#next-button { + right: 2%; } + .baguetteBox-button#previous-button { + left: 2%; } + .baguetteBox-button#close-button { + top: 20px; + right: 2%; + right: calc(2% + 6px); + width: 30px; + height: 30px; } + .baguetteBox-button svg { + position: absolute; + left: 0; + top: 0; } + +/* + Preloader + Borrowed from http://tobiasahlin.com/spinkit/ +*/ +.baguetteBox-spinner { + width: 40px; + height: 40px; + display: inline-block; + position: absolute; + top: 50%; + left: 50%; + margin-top: -20px; + margin-left: -20px; } + +.baguetteBox-double-bounce1, +.baguetteBox-double-bounce2 { + width: 100%; + height: 100%; + -moz-border-radius: 50%; + border-radius: 50%; + background-color: #fff; + opacity: .6; + position: absolute; + top: 0; + left: 0; + -webkit-animation: bounce 2s infinite ease-in-out; + animation: bounce 2s infinite ease-in-out; } + +.baguetteBox-double-bounce2 { + -webkit-animation-delay: -1s; + animation-delay: -1s; } + +@-webkit-keyframes bounce { + 0%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + 50% { + -webkit-transform: scale(1); + transform: scale(1); } } + +@keyframes bounce { + 0%, 100% { + -webkit-transform: scale(0); + -moz-transform: scale(0); + transform: scale(0); } + 50% { + -webkit-transform: scale(1); + -moz-transform: scale(1); + transform: scale(1); } } diff --git a/app/static/js/lightbox/baguetteBox.js b/app/static/js/lightbox/baguetteBox.js new file mode 100644 index 00000000..3288636c --- /dev/null +++ b/app/static/js/lightbox/baguetteBox.js @@ -0,0 +1,793 @@ +/*! + * baguetteBox.js + * @author feimosi + * @version 1.11.1 + * @url https://github.com/feimosi/baguetteBox.js + */ + +/* global define, module */ + +(function (root, factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + define(factory); + } else if (typeof exports === 'object') { + module.exports = factory(); + } else { + root.baguetteBox = factory(); + } +}(this, function () { + 'use strict'; + + // SVG shapes used on the buttons + var leftArrow = '' + + '' + + '', + rightArrow = '' + + '' + + '', + closeX = '' + + '' + + '' + + '' + + ''; + // Global options and their defaults + var options = {}, + defaults = { + captions: true, + buttons: 'auto', + fullScreen: false, + noScrollbars: false, + bodyClass: 'baguetteBox-open', + titleTag: false, + async: false, + preload: 2, + animation: 'slideIn', + afterShow: null, + afterHide: null, + onChange: null, + overlayBackgroundColor: 'rgba(0,0,0,.8)' + }; + // Object containing information about features compatibility + var supports = {}; + // DOM Elements references + var overlay, slider, previousButton, nextButton, closeButton; + // An array with all images in the current gallery + var currentGallery = []; + // Current image index inside the slider + var currentIndex = 0; + // Visibility of the overlay + var isOverlayVisible = false; + // Touch event start position (for slide gesture) + var touch = {}; + // If set to true ignore touch events because animation was already fired + var touchFlag = false; + // Regex pattern to match image files + var regex = /.+\.(gif|jpe?g|png|webp)/i; + // Object of all used galleries + var data = {}; + // Array containing temporary images DOM elements + var imagesElements = []; + // The last focused element before opening the overlay + var documentLastFocus = null; + var overlayClickHandler = function(event) { + // Close the overlay when user clicks directly on the background + if (event.target.id.indexOf('baguette-img') !== -1) { + hideOverlay(); + } + }; + var previousButtonClickHandler = function(event) { + event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true; // eslint-disable-line no-unused-expressions + showPreviousImage(); + }; + var nextButtonClickHandler = function(event) { + event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true; // eslint-disable-line no-unused-expressions + showNextImage(); + }; + var closeButtonClickHandler = function(event) { + event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true; // eslint-disable-line no-unused-expressions + hideOverlay(); + }; + var touchstartHandler = function(event) { + touch.count++; + if (touch.count > 1) { + touch.multitouch = true; + } + // Save x and y axis position + touch.startX = event.changedTouches[0].pageX; + touch.startY = event.changedTouches[0].pageY; + }; + var touchmoveHandler = function(event) { + // If action was already triggered or multitouch return + if (touchFlag || touch.multitouch) { + return; + } + event.preventDefault ? event.preventDefault() : event.returnValue = false; // eslint-disable-line no-unused-expressions + var touchEvent = event.touches[0] || event.changedTouches[0]; + // Move at least 40 pixels to trigger the action + if (touchEvent.pageX - touch.startX > 40) { + touchFlag = true; + showPreviousImage(); + } else if (touchEvent.pageX - touch.startX < -40) { + touchFlag = true; + showNextImage(); + // Move 100 pixels up to close the overlay + } else if (touch.startY - touchEvent.pageY > 100) { + hideOverlay(); + } + }; + var touchendHandler = function() { + touch.count--; + if (touch.count <= 0) { + touch.multitouch = false; + } + touchFlag = false; + }; + var contextmenuHandler = function() { + touchendHandler(); + }; + + var trapFocusInsideOverlay = function(event) { + if (overlay.style.display === 'block' && (overlay.contains && !overlay.contains(event.target))) { + event.stopPropagation(); + initFocus(); + } + }; + + // forEach polyfill for IE8 + // http://stackoverflow.com/a/14827443/1077846 + /* eslint-disable */ + if (![].forEach) { + Array.prototype.forEach = function(callback, thisArg) { + for (var i = 0; i < this.length; i++) { + callback.call(thisArg, this[i], i, this); + } + }; + } + + // filter polyfill for IE8 + // https://gist.github.com/eliperelman/1031656 + if (![].filter) { + Array.prototype.filter = function(a, b, c, d, e) { + c = this; + d = []; + for (e = 0; e < c.length; e++) + a.call(b, c[e], e, c) && d.push(c[e]); + return d; + }; + } + /* eslint-enable */ + + // Script entry point + function run(selector, userOptions) { + // Fill supports object + supports.transforms = testTransformsSupport(); + supports.svg = testSvgSupport(); + supports.passiveEvents = testPassiveEventsSupport(); + + buildOverlay(); + removeFromCache(selector); + return bindImageClickListeners(selector, userOptions); + } + + function bindImageClickListeners(selector, userOptions) { + // For each gallery bind a click event to every image inside it + var galleryNodeList = document.querySelectorAll(selector); + var selectorData = { + galleries: [], + nodeList: galleryNodeList + }; + data[selector] = selectorData; + + [].forEach.call(galleryNodeList, function(galleryElement) { + if (userOptions && userOptions.filter) { + regex = userOptions.filter; + } + + // Get nodes from gallery elements or single-element galleries + var tagsNodeList = []; + if (galleryElement.tagName === 'A') { + tagsNodeList = [galleryElement]; + } else { + tagsNodeList = galleryElement.getElementsByTagName('a'); + } + + // Filter 'a' elements from those not linking to images + tagsNodeList = [].filter.call(tagsNodeList, function(element) { + if (element.className.indexOf(userOptions && userOptions.ignoreClass) === -1) { + return regex.test(element.href); + } + }); + if (tagsNodeList.length === 0) { + return; + } + + var gallery = []; + [].forEach.call(tagsNodeList, function(imageElement, imageIndex) { + var imageElementClickHandler = function(event) { + event.preventDefault ? event.preventDefault() : event.returnValue = false; // eslint-disable-line no-unused-expressions + prepareOverlay(gallery, userOptions); + showOverlay(imageIndex); + }; + var imageItem = { + eventHandler: imageElementClickHandler, + imageElement: imageElement + }; + bind(imageElement, 'click', imageElementClickHandler); + gallery.push(imageItem); + }); + selectorData.galleries.push(gallery); + }); + + return selectorData.galleries; + } + + function clearCachedData() { + for (var selector in data) { + if (data.hasOwnProperty(selector)) { + removeFromCache(selector); + } + } + } + + function removeFromCache(selector) { + if (!data.hasOwnProperty(selector)) { + return; + } + var galleries = data[selector].galleries; + [].forEach.call(galleries, function(gallery) { + [].forEach.call(gallery, function(imageItem) { + unbind(imageItem.imageElement, 'click', imageItem.eventHandler); + }); + + if (currentGallery === gallery) { + currentGallery = []; + } + }); + + delete data[selector]; + } + + function buildOverlay() { + overlay = getByID('baguetteBox-overlay'); + // Check if the overlay already exists + if (overlay) { + slider = getByID('baguetteBox-slider'); + previousButton = getByID('previous-button'); + nextButton = getByID('next-button'); + closeButton = getByID('close-button'); + return; + } + // Create overlay element + overlay = create('div'); + overlay.setAttribute('role', 'dialog'); + overlay.id = 'baguetteBox-overlay'; + document.getElementsByTagName('body')[0].appendChild(overlay); + // Create gallery slider element + slider = create('div'); + slider.id = 'baguetteBox-slider'; + overlay.appendChild(slider); + // Create all necessary buttons + previousButton = create('button'); + previousButton.setAttribute('type', 'button'); + previousButton.id = 'previous-button'; + previousButton.setAttribute('aria-label', 'Previous'); + previousButton.innerHTML = supports.svg ? leftArrow : '<'; + overlay.appendChild(previousButton); + + nextButton = create('button'); + nextButton.setAttribute('type', 'button'); + nextButton.id = 'next-button'; + nextButton.setAttribute('aria-label', 'Next'); + nextButton.innerHTML = supports.svg ? rightArrow : '>'; + overlay.appendChild(nextButton); + + closeButton = create('button'); + closeButton.setAttribute('type', 'button'); + closeButton.id = 'close-button'; + closeButton.setAttribute('aria-label', 'Close'); + closeButton.innerHTML = supports.svg ? closeX : '×'; + overlay.appendChild(closeButton); + + previousButton.className = nextButton.className = closeButton.className = 'baguetteBox-button'; + + bindEvents(); + } + + function keyDownHandler(event) { + switch (event.keyCode) { + case 37: // Left arrow + showPreviousImage(); + break; + case 39: // Right arrow + showNextImage(); + break; + case 27: // Esc + hideOverlay(); + break; + case 36: // Home + showFirstImage(event); + break; + case 35: // End + showLastImage(event); + break; + } + } + + function bindEvents() { + var passiveEvent = supports.passiveEvents ? { passive: false } : null; + var nonPassiveEvent = supports.passiveEvents ? { passive: true } : null; + + bind(overlay, 'click', overlayClickHandler); + bind(previousButton, 'click', previousButtonClickHandler); + bind(nextButton, 'click', nextButtonClickHandler); + bind(closeButton, 'click', closeButtonClickHandler); + bind(slider, 'contextmenu', contextmenuHandler); + bind(overlay, 'touchstart', touchstartHandler, nonPassiveEvent); + bind(overlay, 'touchmove', touchmoveHandler, passiveEvent); + bind(overlay, 'touchend', touchendHandler); + bind(document, 'focus', trapFocusInsideOverlay, true); + } + + function unbindEvents() { + var passiveEvent = supports.passiveEvents ? { passive: false } : null; + var nonPassiveEvent = supports.passiveEvents ? { passive: true } : null; + + unbind(overlay, 'click', overlayClickHandler); + unbind(previousButton, 'click', previousButtonClickHandler); + unbind(nextButton, 'click', nextButtonClickHandler); + unbind(closeButton, 'click', closeButtonClickHandler); + unbind(slider, 'contextmenu', contextmenuHandler); + unbind(overlay, 'touchstart', touchstartHandler, nonPassiveEvent); + unbind(overlay, 'touchmove', touchmoveHandler, passiveEvent); + unbind(overlay, 'touchend', touchendHandler); + unbind(document, 'focus', trapFocusInsideOverlay, true); + } + + function prepareOverlay(gallery, userOptions) { + // If the same gallery is being opened prevent from loading it once again + if (currentGallery === gallery) { + return; + } + currentGallery = gallery; + // Update gallery specific options + setOptions(userOptions); + // Empty slider of previous contents (more effective than .innerHTML = "") + while (slider.firstChild) { + slider.removeChild(slider.firstChild); + } + imagesElements.length = 0; + + var imagesFiguresIds = []; + var imagesCaptionsIds = []; + // Prepare and append images containers and populate figure and captions IDs arrays + for (var i = 0, fullImage; i < gallery.length; i++) { + fullImage = create('div'); + fullImage.className = 'full-image'; + fullImage.id = 'baguette-img-' + i; + imagesElements.push(fullImage); + + imagesFiguresIds.push('baguetteBox-figure-' + i); + imagesCaptionsIds.push('baguetteBox-figcaption-' + i); + slider.appendChild(imagesElements[i]); + } + overlay.setAttribute('aria-labelledby', imagesFiguresIds.join(' ')); + overlay.setAttribute('aria-describedby', imagesCaptionsIds.join(' ')); + } + + function setOptions(newOptions) { + if (!newOptions) { + newOptions = {}; + } + // Fill options object + for (var item in defaults) { + options[item] = defaults[item]; + if (typeof newOptions[item] !== 'undefined') { + options[item] = newOptions[item]; + } + } + /* Apply new options */ + // Change transition for proper animation + slider.style.transition = slider.style.webkitTransition = (options.animation === 'fadeIn' ? 'opacity .4s ease' : + options.animation === 'slideIn' ? '' : 'none'); + // Hide buttons if necessary + if (options.buttons === 'auto' && ('ontouchstart' in window || currentGallery.length === 1)) { + options.buttons = false; + } + // Set buttons style to hide or display them + previousButton.style.display = nextButton.style.display = (options.buttons ? '' : 'none'); + // Set overlay color + try { + overlay.style.backgroundColor = options.overlayBackgroundColor; + } catch (e) { + // Silence the error and continue + } + } + + function showOverlay(chosenImageIndex) { + if (options.noScrollbars) { + document.documentElement.style.overflowY = 'hidden'; + document.body.style.overflowY = 'scroll'; + } + if (overlay.style.display === 'block') { + return; + } + + bind(document, 'keydown', keyDownHandler); + currentIndex = chosenImageIndex; + touch = { + count: 0, + startX: null, + startY: null + }; + loadImage(currentIndex, function() { + preloadNext(currentIndex); + preloadPrev(currentIndex); + }); + + updateOffset(); + overlay.style.display = 'block'; + if (options.fullScreen) { + enterFullScreen(); + } + // Fade in overlay + setTimeout(function() { + overlay.className = 'visible'; + if (options.bodyClass && document.body.classList) { + document.body.classList.add(options.bodyClass); + } + if (options.afterShow) { + options.afterShow(); + } + }, 50); + if (options.onChange) { + options.onChange(currentIndex, imagesElements.length); + } + documentLastFocus = document.activeElement; + initFocus(); + isOverlayVisible = true; + } + + function initFocus() { + if (options.buttons) { + previousButton.focus(); + } else { + closeButton.focus(); + } + } + + function enterFullScreen() { + if (overlay.requestFullscreen) { + overlay.requestFullscreen(); + } else if (overlay.webkitRequestFullscreen) { + overlay.webkitRequestFullscreen(); + } else if (overlay.mozRequestFullScreen) { + overlay.mozRequestFullScreen(); + } + } + + function exitFullscreen() { + if (document.exitFullscreen) { + document.exitFullscreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } + } + + function hideOverlay() { + if (options.noScrollbars) { + document.documentElement.style.overflowY = 'auto'; + document.body.style.overflowY = 'auto'; + } + if (overlay.style.display === 'none') { + return; + } + + unbind(document, 'keydown', keyDownHandler); + // Fade out and hide the overlay + overlay.className = ''; + setTimeout(function() { + overlay.style.display = 'none'; + if (document.fullscreen) { + exitFullscreen(); + } + if (options.bodyClass && document.body.classList) { + document.body.classList.remove(options.bodyClass); + } + if (options.afterHide) { + options.afterHide(); + } + documentLastFocus && documentLastFocus.focus(); + isOverlayVisible = false; + }, 500); + } + + function loadImage(index, callback) { + var imageContainer = imagesElements[index]; + var galleryItem = currentGallery[index]; + + // Return if the index exceeds prepared images in the overlay + // or if the current gallery has been changed / closed + if (typeof imageContainer === 'undefined' || typeof galleryItem === 'undefined') { + return; + } + + // If image is already loaded run callback and return + if (imageContainer.getElementsByTagName('img')[0]) { + if (callback) { + callback(); + } + return; + } + + // Get element reference, optional caption and source path + var imageElement = galleryItem.imageElement; + var thumbnailElement = imageElement.getElementsByTagName('img')[0]; + var imageCaption = typeof options.captions === 'function' ? + options.captions.call(currentGallery, imageElement) : + imageElement.getAttribute('data-caption') || imageElement.title; + var imageSrc = getImageSrc(imageElement); + + // Prepare figure element + var figure = create('figure'); + figure.id = 'baguetteBox-figure-' + index; + figure.innerHTML = '
' + + '
' + + '
' + + '
'; + // Insert caption if available + if (options.captions && imageCaption) { + var figcaption = create('figcaption'); + figcaption.id = 'baguetteBox-figcaption-' + index; + figcaption.innerHTML = imageCaption; + figure.appendChild(figcaption); + } + imageContainer.appendChild(figure); + + // Prepare gallery img element + var image = create('img'); + image.onload = function() { + // Remove loader element + var spinner = document.querySelector('#baguette-img-' + index + ' .baguetteBox-spinner'); + figure.removeChild(spinner); + if (!options.async && callback) { + callback(); + } + }; + image.setAttribute('src', imageSrc); + image.alt = thumbnailElement ? thumbnailElement.alt || '' : ''; + if (options.titleTag && imageCaption) { + image.title = imageCaption; + } + figure.appendChild(image); + + // Run callback + if (options.async && callback) { + callback(); + } + } + + // Get image source location, mostly used for responsive images + function getImageSrc(image) { + // Set default image path from href + var result = image.href; + // If dataset is supported find the most suitable image + if (image.dataset) { + var srcs = []; + // Get all possible image versions depending on the resolution + for (var item in image.dataset) { + if (item.substring(0, 3) === 'at-' && !isNaN(item.substring(3))) { + srcs[item.replace('at-', '')] = image.dataset[item]; + } + } + // Sort resolutions ascending + var keys = Object.keys(srcs).sort(function(a, b) { + return parseInt(a, 10) < parseInt(b, 10) ? -1 : 1; + }); + // Get real screen resolution + var width = window.innerWidth * window.devicePixelRatio; + // Find the first image bigger than or equal to the current width + var i = 0; + while (i < keys.length - 1 && keys[i] < width) { + i++; + } + result = srcs[keys[i]] || result; + } + return result; + } + + // Return false at the right end of the gallery + function showNextImage() { + return show(currentIndex + 1); + } + + // Return false at the left end of the gallery + function showPreviousImage() { + return show(currentIndex - 1); + } + + // Return false at the left end of the gallery + function showFirstImage(event) { + if (event) { + event.preventDefault(); + } + return show(0); + } + + // Return false at the right end of the gallery + function showLastImage(event) { + if (event) { + event.preventDefault(); + } + return show(currentGallery.length - 1); + } + + /** + * Move the gallery to a specific index + * @param `index` {number} - the position of the image + * @param `gallery` {array} - gallery which should be opened, if omitted assumes the currently opened one + * @return {boolean} - true on success or false if the index is invalid + */ + function show(index, gallery) { + if (!isOverlayVisible && index >= 0 && index < gallery.length) { + prepareOverlay(gallery, options); + showOverlay(index); + return true; + } + if (index < 0) { + if (options.animation) { + bounceAnimation('left'); + } + return false; + } + if (index >= imagesElements.length) { + if (options.animation) { + bounceAnimation('right'); + } + return false; + } + + currentIndex = index; + loadImage(currentIndex, function() { + preloadNext(currentIndex); + preloadPrev(currentIndex); + }); + updateOffset(); + + if (options.onChange) { + options.onChange(currentIndex, imagesElements.length); + } + + return true; + } + + /** + * Triggers the bounce animation + * @param {('left'|'right')} direction - Direction of the movement + */ + function bounceAnimation(direction) { + slider.className = 'bounce-from-' + direction; + setTimeout(function() { + slider.className = ''; + }, 400); + } + + function updateOffset() { + var offset = -currentIndex * 100 + '%'; + if (options.animation === 'fadeIn') { + slider.style.opacity = 0; + setTimeout(function() { + supports.transforms ? + slider.style.transform = slider.style.webkitTransform = 'translate3d(' + offset + ',0,0)' + : slider.style.left = offset; + slider.style.opacity = 1; + }, 400); + } else { + supports.transforms ? + slider.style.transform = slider.style.webkitTransform = 'translate3d(' + offset + ',0,0)' + : slider.style.left = offset; + } + } + + // CSS 3D Transforms test + function testTransformsSupport() { + var div = create('div'); + return typeof div.style.perspective !== 'undefined' || typeof div.style.webkitPerspective !== 'undefined'; + } + + // Inline SVG test + function testSvgSupport() { + var div = create('div'); + div.innerHTML = ''; + return (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg'; + } + + // Borrowed from https://github.com/seiyria/bootstrap-slider/pull/680/files + /* eslint-disable getter-return */ + function testPassiveEventsSupport() { + var passiveEvents = false; + try { + var opts = Object.defineProperty({}, 'passive', { + get: function() { + passiveEvents = true; + } + }); + window.addEventListener('test', null, opts); + } catch (e) { /* Silence the error and continue */ } + + return passiveEvents; + } + /* eslint-enable getter-return */ + + function preloadNext(index) { + if (index - currentIndex >= options.preload) { + return; + } + loadImage(index + 1, function() { + preloadNext(index + 1); + }); + } + + function preloadPrev(index) { + if (currentIndex - index >= options.preload) { + return; + } + loadImage(index - 1, function() { + preloadPrev(index - 1); + }); + } + + function bind(element, event, callback, options) { + if (element.addEventListener) { + element.addEventListener(event, callback, options); + } else { + // IE8 fallback + element.attachEvent('on' + event, function(event) { + // `event` and `event.target` are not provided in IE8 + event = event || window.event; + event.target = event.target || event.srcElement; + callback(event); + }); + } + } + + function unbind(element, event, callback, options) { + if (element.removeEventListener) { + element.removeEventListener(event, callback, options); + } else { + // IE8 fallback + element.detachEvent('on' + event, callback); + } + } + + function getByID(id) { + return document.getElementById(id); + } + + function create(element) { + return document.createElement(element); + } + + function destroyPlugin() { + unbindEvents(); + clearCachedData(); + unbind(document, 'keydown', keyDownHandler); + document.getElementsByTagName('body')[0].removeChild(document.getElementById('baguetteBox-overlay')); + data = {}; + currentGallery = []; + currentIndex = 0; + } + + return { + run: run, + show: show, + showNext: showNextImage, + showPrevious: showPreviousImage, + hide: hideOverlay, + destroy: destroyPlugin + }; +})); diff --git a/app/static/js/scripts.js b/app/static/js/scripts.js index db4163f9..4e18b904 100644 --- a/app/static/js/scripts.js +++ b/app/static/js/scripts.js @@ -12,8 +12,37 @@ document.addEventListener("DOMContentLoaded", function () { setupTopicChooser(); setupConversationChooser(); setupMarkdownEditorEnabler(); + setupLightboxGallery(); }); +function setupLightboxGallery() { + // Check if there are elements with either "post_list_masonry_wide" or "post_list_masonry" class + var widePosts = document.querySelectorAll('.post_list_masonry_wide'); + var regularPosts = document.querySelectorAll('.post_list_masonry'); + + // Enable lightbox on masonry images + if (widePosts.length > 0) { + baguetteBox.run('.post_list_masonry_wide', { + fullScreen: false, + titleTag: true, + preload: 5, + captions: function(element) { + return element.getElementsByTagName('img')[0].title; + } + }); + } + if (regularPosts.length > 0) { + baguetteBox.run('.post_list_masonry', { + fullScreen: false, + titleTag: true, + preload: 5, + captions: function(element) { + return element.getElementsByTagName('img')[0].title; + } + }); + } +} + // fires after all resources have loaded, including stylesheets and js files window.addEventListener("load", function () { diff --git a/app/templates/base.html b/app/templates/base.html index 7e76319b..879c124f 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -43,6 +43,7 @@ {% if not low_bandwidth %} + {% endif %} {% if theme() and file_exists('app/templates/themes/' + theme() + '/styles.css') %} @@ -234,10 +235,14 @@ {% endblock %} {% if not low_bandwidth %} {{ str(bootstrap.load_js()).replace(' {% endif %} {% if not low_bandwidth %} + {% if post_layout == 'masonry' or post_layout == 'masonry_wide' %} + + {% endif %} {% endif %} {% if theme() and file_exists('app/templates/themes/' + theme() + '/scripts.js') %} diff --git a/app/templates/community/_community_moderation_nav.html b/app/templates/community/_community_moderation_nav.html new file mode 100644 index 00000000..51dea95d --- /dev/null +++ b/app/templates/community/_community_moderation_nav.html @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/app/templates/community/community.html b/app/templates/community/community.html index be31617b..24252648 100644 --- a/app/templates/community/community.html +++ b/app/templates/community/community.html @@ -175,7 +175,9 @@

{{ _('Community Settings') }}

-

{{ _('Moderate') }}

+ {% if is_moderator or is_owner or is_admin %} +

{{ _('Moderate') }}

+ {% endif %} {% if is_owner or is_admin %}

{{ _('Settings') }}

{% endif %} diff --git a/app/templates/community/community_moderate.html b/app/templates/community/community_moderate.html new file mode 100644 index 00000000..38bcf75c --- /dev/null +++ b/app/templates/community/community_moderate.html @@ -0,0 +1,84 @@ +{% if theme() and file_exists('app/templates/themes/' + theme() + '/base.html') %} + {% extends 'themes/' + theme() + '/base.html' %} +{% else %} + {% extends "base.html" %} +{% endif %} %} +{% from 'bootstrap/form.html' import render_field %} + +{% block app_content %} +
+
+ +
+
+

{{ _('Moderation of %(community)s', community=community.display_name()) }}

+
+
+ +
+
+ {% include "community/_community_moderation_nav.html" %} +

{{ _('Reports') }}

+ {% if reports.items %} +
+ + + + +
+ + + + + + + + + + {% for report in reports.items %} + + + + + + + + + {% endfor %} +
Local/RemoteReasonsDescriptionTypeCreatedActions
{{ 'Local' if report.is_local() else 'Remote' }}{{ report.reasons }}{{ report.description }}{{ report.type_text() }}{{ moment(report.created_at).fromNow() }} + {% if report.suspect_conversation_id %} + View + {% elif report.suspect_post_reply_id %} + View + {% elif report.suspect_post_id %} + View + {% elif report.suspect_user_id %} + View + {% elif report.suspect_community_id %} + View + {% endif %} +
+ + {% else %} +

{{ _('No reports yet') }}

+ {% endif %} +
+
+{% endblock %} \ No newline at end of file diff --git a/app/templates/community/community_moderate_banned.html b/app/templates/community/community_moderate_banned.html new file mode 100644 index 00000000..3ce5a8f2 --- /dev/null +++ b/app/templates/community/community_moderate_banned.html @@ -0,0 +1,65 @@ +{% if theme() and file_exists('app/templates/themes/' + theme() + '/base.html') %} + {% extends 'themes/' + theme() + '/base.html' %} +{% else %} + {% extends "base.html" %} +{% endif %} %} +{% from 'bootstrap/form.html' import render_field %} + +{% block app_content %} +
+
+ +
+
+

{{ _('Moderation of %(community)s', community=community.display_name()) }}

+
+
+ +
+
+ {% include "community/_community_moderation_nav.html" %} +

{{ _('Banned people') }}

+ {% if banned_people %} +
+ + + + +
+ + + + + + + + + {% for user in banned_people %} + + + + + + + + {% endfor %} +
NameLocal/RemoteReportsIPActions
+ {{ user.display_name() }}{{ 'Local' if user.is_local() else 'Remote' }}{{ user.reports if user.reports > 0 }} {{ user.ip_address if user.ip_address }} {% if user.is_local() %} + View local + {% else %} + View remote + {% endif %} + | {{ _('Un ban') }} +
+ {% else %} +

{{ _('No banned people yet') }}

+ {% endif %} +
+
+{% endblock %} \ No newline at end of file diff --git a/app/templates/post/_post_teaser_masonry.html b/app/templates/post/_post_teaser_masonry.html index 7c48629c..021c9c10 100644 --- a/app/templates/post/_post_teaser_masonry.html +++ b/app/templates/post/_post_teaser_masonry.html @@ -14,20 +14,23 @@ {% if post.type == POST_TYPE_LINK %} {% if post.image.medium_url() %} {{ post.image.alt_text if post.image.alt_text else '' }} + alt="{{ post.image.alt_text if post.image.alt_text else '' }}" title="{{ post.title }}" + loading="lazy" width="{{ post.image.width }}" height="{{ post.image.height }}" /> {% elif post.image.source_url %} {{ post.title }} + alt="{{ post.title }}" title="{{ post.title }}" loading="{{ 'lazy' if low_bandwidth else 'eager' }}" /> {% else %} {{ post.title }} + alt="{{ post.title }}" title="{{ post.title }}" + loading="{{ 'lazy' if low_bandwidth else 'eager' }}" /> {% endif %} {% elif post.type == POST_TYPE_IMAGE %} {{ post.image.alt_text if post.image.alt_text else '' }} + alt="{{ post.image.alt_text if post.image.alt_text else '' }}" title="{{ post.title }}" + loading="lazy" width="{{ post.image.width }}" height="{{ post.image.height }}" /> {% else %} {{ post.image.alt_text if post.image.alt_text else '' }} + alt="{{ post.image.alt_text if post.image.alt_text else '' }}" loading="{{ 'lazy' if low_bandwidth else 'eager' }}" /> {% endif %}
@@ -49,8 +52,9 @@ {% else %} {% if post.url and (post.url.endswith('.jpg') or post.url.endswith('.webp') or post.url.endswith('.png') or post.url.endswith('.gif') or post.url.endswith('.avif') or post.url.endswith('.jpeg')) %}
- {{ post.title }} + {{ post.title }}
diff --git a/app/translations/de/LC_MESSAGES/messages.po b/app/translations/de/LC_MESSAGES/messages.po new file mode 100644 index 00000000..f29f8416 --- /dev/null +++ b/app/translations/de/LC_MESSAGES/messages.po @@ -0,0 +1,2607 @@ +msgid "" +msgstr "" +"Project-Id-Version: piefed\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2024-03-17 19:06+1300\n" +"PO-Revision-Date: 2024-03-17 07:18\n" +"Last-Translator: \n" +"Language: de\n" +"Language-Team: German\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" +"X-Crowdin-Project: piefed\n" +"X-Crowdin-Project-ID: 657446\n" +"X-Crowdin-Language: de\n" +"X-Crowdin-File: messages.po\n" +"X-Crowdin-File-ID: 2\n" + +#: app/__init__.py:26 +msgid "Please log in to access this page." +msgstr "Bitte melden Sie sich an, um auf diese Seite zuzugreifen." + +#: app/cli.py:238 app/main/routes.py:300 +msgid "[PieFed] You have unread notifications" +msgstr "[PieFed] Du hast ungelesene Benachrichtigungen" + +#: app/email.py:16 +msgid "[PieFed] Reset Your Password" +msgstr "[PieFed] Passwort zurücksetzen" + +#: app/email.py:26 +msgid "[PieFed] Please verify your email address" +msgstr "[PieFed] Bitte überprüfen Sie Ihre E-Mail-Adresse" + +#: app/email.py:34 +msgid "Your application has been approved - welcome to PieFed" +msgstr "Ihr Antrag wurde genehmigt - Willkommen bei PieFed" + +#: app/email.py:34 +msgid "Welcome to PieFed" +msgstr "Willkommen zu PieFed" + +#: app/activitypub/util.py:1205 app/post/routes.py:85 app/post/routes.py:472 +#, python-format +msgid "Reply from %(name)s on %(post_title)s" +msgstr "Antwort von %(name)s auf %(post_title)s" + +#: app/admin/forms.py:13 app/admin/forms.py:97 app/community/forms.py:18 +#: app/templates/community/community_mod_list.html:30 +#: app/templates/user/filters.html:29 app/templates/user/filters.html:70 +#: app/templates/user/filters.html:88 app/templates/user/filters.html:106 +#: app/templates/user/filters.html:124 app/user/forms.py:89 +msgid "Name" +msgstr "Name" + +#: app/admin/forms.py:14 +msgid "Tagline" +msgstr "Tagline" + +#: app/admin/forms.py:15 +msgid "Icon" +msgstr "Icon" + +#: app/admin/forms.py:18 +msgid "Sidebar" +msgstr "Sidebar" + +#: app/admin/forms.py:19 +msgid "Legal information" +msgstr "Rechtliche Informationen" + +#: app/admin/forms.py:20 app/admin/forms.py:36 app/admin/forms.py:44 +#: app/admin/forms.py:81 app/admin/forms.py:100 app/admin/forms.py:126 +#: app/admin/forms.py:188 app/community/forms.py:56 app/community/forms.py:95 +#: app/user/forms.py:99 +msgid "Save" +msgstr "Speichern" + +#: app/admin/forms.py:24 +msgid "Enable downvotes" +msgstr "Abwärtsbewertungen aktivieren" + +#: app/admin/forms.py:25 +msgid "Allow local image posts" +msgstr "Lokale Bildbeiträge erlauben" + +#: app/admin/forms.py:26 +msgid "Days to cache images from remote instances for" +msgstr "Tage zum Caching von Bildern von entfernten Instanzen für" + +#: app/admin/forms.py:27 +msgid "Allow NSFW communities" +msgstr "NSFW-Gemeinschaften erlauben" + +#: app/admin/forms.py:28 +msgid "Allow NSFL communities and posts" +msgstr "NSFL-Gemeinschaften und Beiträge erlauben" + +#: app/admin/forms.py:29 +msgid "Only admins can create new local communities" +msgstr "Nur Administratoren können neue lokale Gemeinschaften erstellen" + +#: app/admin/forms.py:30 +msgid "Notify admins about reports, not just moderators" +msgstr "Administratoren über Berichte benachrichtigen, nicht nur über Moderatoren" + +#: app/admin/forms.py:31 +msgid "Open" +msgstr "Öffnen" + +#: app/admin/forms.py:31 +msgid "Require application" +msgstr "Anwendung erforderlich" + +#: app/admin/forms.py:31 +msgid "Closed" +msgstr "Geschlossen" + +#: app/admin/forms.py:32 +msgid "Registration mode" +msgstr "Registrierungsmodus" + +#: app/admin/forms.py:33 +msgid "Question to ask people applying for an account" +msgstr "Frage an Personen, die sich um ein Konto bewerben" + +#: app/admin/forms.py:34 +msgid "Log ActivityPub JSON for debugging" +msgstr "ActivityPub JSON zum Debuggen protokollieren" + +#: app/admin/forms.py:35 +msgid "Default theme" +msgstr "Standard-Template" + +#: app/admin/forms.py:40 +msgid "Allowlist instead of blocklist" +msgstr "Erlaubte Liste statt Sperrliste" + +#: app/admin/forms.py:41 +msgid "Allow federation with these instances" +msgstr "Föderation mit diesen Instanzen erlauben" + +#: app/admin/forms.py:42 +msgid "Blocklist instead of allowlist" +msgstr "Erlaubte Liste statt Sperrliste" + +#: app/admin/forms.py:43 +msgid "Deny federation with these instances" +msgstr "Föderation mit diesen Instanzen erlauben" + +#: app/admin/forms.py:48 app/community/forms.py:42 app/community/forms.py:80 +#: app/community/forms.py:82 app/community/forms.py:86 +msgid "Title" +msgstr "Titel" + +#: app/admin/forms.py:49 app/admin/forms.py:98 app/community/forms.py:19 +msgid "Url" +msgstr "Url" + +#: app/admin/forms.py:50 app/community/forms.py:20 app/community/forms.py:43 +msgid "Description" +msgstr "Beschreibung" + +#: app/admin/forms.py:51 app/community/forms.py:21 app/community/forms.py:44 +msgid "Icon image" +msgstr "Icon-Bild" + +#: app/admin/forms.py:52 app/community/forms.py:22 app/community/forms.py:45 +msgid "Banner image" +msgstr "Bannerbild" + +#: app/admin/forms.py:53 app/community/forms.py:23 app/community/forms.py:46 +msgid "Rules" +msgstr "Regeln" + +#: app/admin/forms.py:54 app/community/forms.py:47 +msgid "Porn community" +msgstr "Pornogemeinde" + +#: app/admin/forms.py:55 +msgid "Banned - no new posts accepted" +msgstr "Gesperrt - keine neuen Beiträge akzeptiert" + +#: app/admin/forms.py:56 app/community/forms.py:48 +msgid "Only accept posts from current instance" +msgstr "Nur Beiträge von der aktuellen Instanz akzeptieren" + +#: app/admin/forms.py:57 app/community/forms.py:49 +msgid "Only moderators can post" +msgstr "Nur Moderatoren können schreiben" + +#: app/admin/forms.py:58 app/community/forms.py:50 +msgid "New moderators wanted" +msgstr "Neue Moderatoren wollten" + +#: app/admin/forms.py:59 +msgid "Posts show on home page" +msgstr "Beiträge auf der Startseite anzeigen" + +#: app/admin/forms.py:60 +msgid "Posts can be popular" +msgstr "Beiträge können beliebt sein" + +#: app/admin/forms.py:61 +msgid "Posts show in All list" +msgstr "Beiträge in aller Liste anzeigen" + +#: app/admin/forms.py:62 +msgid "Low quality / toxic - upvotes in here don't add to reputation" +msgstr "Niedrige Qualität / Giftstoff - die positiven Stimmen hier erhöhen nicht den Ruf" + +#: app/admin/forms.py:63 +msgid "Forever" +msgstr "Für immer" + +#: app/admin/forms.py:64 +msgid "1 week" +msgstr "1 Woche" + +#: app/admin/forms.py:65 +msgid "2 weeks" +msgstr "2 Woche" + +#: app/admin/forms.py:66 +msgid "1 month" +msgstr "1 Monat" + +#: app/admin/forms.py:67 +msgid "2 months" +msgstr "2 Monat" + +#: app/admin/forms.py:68 +msgid "3 months" +msgstr "3 Monat" + +#: app/admin/forms.py:69 +msgid "6 months" +msgstr "6 Monat" + +#: app/admin/forms.py:70 +msgid "1 year" +msgstr "1 Jahr" + +#: app/admin/forms.py:71 +msgid "2 years" +msgstr "2 Jahre" + +#: app/admin/forms.py:72 +msgid "5 years" +msgstr "5 Jahr" + +#: app/admin/forms.py:73 +msgid "10 years" +msgstr "10 Jahr" + +#: app/admin/forms.py:75 +msgid "Retain content" +msgstr "Inhalt beibehalten" + +#: app/admin/forms.py:76 app/community/forms.py:51 +msgid "Topic" +msgstr "Thema" + +#: app/admin/forms.py:77 app/community/forms.py:52 +#: app/templates/community/_community_nav.html:23 +msgid "List" +msgstr "Liste" + +#: app/admin/forms.py:78 app/community/forms.py:53 +msgid "Masonry" +msgstr "Mauerwerk" + +#: app/admin/forms.py:79 app/community/forms.py:54 +msgid "Wide masonry" +msgstr "Großes Mauerwerk" + +#: app/admin/forms.py:80 app/community/forms.py:55 +msgid "Layout" +msgstr "Layout" + +#: app/admin/forms.py:87 app/community/forms.py:32 +msgid "Url is required." +msgstr "URL ist erforderlich." + +#: app/admin/forms.py:91 app/community/forms.py:36 +msgid "- cannot be in Url. Use _ instead?" +msgstr "- kann nicht in Url sein. Verwenden Sie stattdessen _ ?" + +#: app/admin/forms.py:99 +msgid "Parent topic" +msgstr "Übergeordnetes Thema" + +#: app/admin/forms.py:104 app/auth/forms.py:10 app/auth/forms.py:17 +#: app/community/forms.py:60 +msgid "User name" +msgstr "Benutzername" + +#: app/admin/forms.py:106 app/admin/forms.py:169 app/user/forms.py:14 +msgid "Email address" +msgstr "Email-Adresse" + +#: app/admin/forms.py:107 app/auth/forms.py:11 app/auth/forms.py:20 +#: app/auth/forms.py:74 +msgid "Password" +msgstr "Passwort" + +#: app/admin/forms.py:109 app/auth/forms.py:22 app/auth/forms.py:76 +msgid "Repeat password" +msgstr "Passwort festlegen" + +#: app/admin/forms.py:110 app/admin/forms.py:168 app/user/forms.py:17 +msgid "Bio" +msgstr "Bio" + +#: app/admin/forms.py:111 app/admin/forms.py:170 app/user/forms.py:18 +msgid "Matrix User ID" +msgstr "Matrix-Benutzer-ID" + +#: app/admin/forms.py:112 app/admin/forms.py:171 app/user/forms.py:19 +msgid "Avatar image" +msgstr "Avatar-Bild" + +#: app/admin/forms.py:113 app/admin/forms.py:172 app/user/forms.py:20 +msgid "Top banner image" +msgstr "Top Banner-Bild" + +#: app/admin/forms.py:114 app/admin/forms.py:173 app/user/forms.py:21 +msgid "This profile is a bot" +msgstr "Dieses Profil ist ein Bot" + +#: app/admin/forms.py:115 app/admin/forms.py:174 +msgid "Email address is verified" +msgstr "E-Mail-Adresse ist verifiziert" + +#: app/admin/forms.py:116 app/admin/forms.py:175 +msgid "Banned" +msgstr "Gesperrt" + +#: app/admin/forms.py:117 app/admin/forms.py:176 app/user/forms.py:34 +msgid "Subscribe to email newsletter" +msgstr "E-Mail-Newsletter abonnieren" + +#: app/admin/forms.py:118 app/admin/forms.py:177 app/user/forms.py:36 +msgid "Hide posts by bots" +msgstr "Beiträge von Bots ausblenden" + +#: app/admin/forms.py:119 app/admin/forms.py:178 app/user/forms.py:37 +msgid "Show NSFW posts" +msgstr "NSFW-Beiträge anzeigen" + +#: app/admin/forms.py:120 app/admin/forms.py:179 app/user/forms.py:38 +msgid "Show NSFL posts" +msgstr "NSFL-Beiträge anzeigen" + +#: app/admin/forms.py:121 app/admin/forms.py:183 +msgid "User" +msgstr "Benutzer" + +#: app/admin/forms.py:122 app/admin/forms.py:184 +msgid "Staff" +msgstr "Mitarbeiter" + +#: app/admin/forms.py:123 app/admin/forms.py:185 app/admin/routes.py:29 +#: app/templates/base.html:180 +msgid "Admin" +msgstr "Verwalter" + +#: app/admin/forms.py:125 app/admin/forms.py:187 +msgid "Role" +msgstr "Rolle" + +#: app/admin/forms.py:131 app/auth/forms.py:32 +msgid "An account with this email address already exists." +msgstr "Ein Konto mit dieser E-Mail-Adresse existiert bereits." + +#: app/admin/forms.py:135 app/auth/forms.py:36 +msgid "User names cannot contain @." +msgstr "Benutzernamen dürfen @ nicht enthalten." + +#: app/admin/forms.py:139 app/auth/forms.py:40 +msgid "This username was used in the past and cannot be reused." +msgstr "Dieser Benutzername wurde in der Vergangenheit verwendet und kann nicht wiederverwendet werden." + +#: app/admin/forms.py:141 app/auth/forms.py:42 +msgid "An account with this user name already exists." +msgstr "Ein Konto mit diesem Benutzernamen existiert bereits." + +#: app/admin/forms.py:144 app/auth/forms.py:45 +msgid "A community with this name exists so it cannot be used for a user." +msgstr "Eine Gemeinschaft mit diesem Namen existiert und kann daher nicht für einen Benutzer verwendet werden." + +#: app/admin/forms.py:151 app/admin/forms.py:164 app/auth/forms.py:52 +#: app/auth/forms.py:65 +msgid "This password is too common." +msgstr "Dieses Passwort ist zu häufig." + +#: app/admin/forms.py:161 app/auth/forms.py:62 +msgid "This password is not secure." +msgstr "Dieses Passwort ist nicht sicher." + +#: app/admin/forms.py:180 app/user/forms.py:40 +msgid "Show profile in user list" +msgstr "Profil in der Benutzerliste anzeigen" + +#: app/admin/forms.py:181 +msgid "Allow search engines to index this profile" +msgstr "Suchmaschinen erlauben, dieses Profil zu indizieren" + +#: app/admin/forms.py:182 app/user/forms.py:42 +msgid "Manually approve followers" +msgstr "Anhänger manuell genehmigen" + +#: app/admin/forms.py:192 +msgid "Subject" +msgstr "Betreff" + +#: app/admin/forms.py:193 +msgid "Body (text)" +msgstr "Körper (Text)" + +#: app/admin/forms.py:194 +msgid "Body (html)" +msgstr "Körper (html)" + +#: app/admin/forms.py:195 +msgid "Test mode" +msgstr "Testmodus" + +#: app/admin/forms.py:196 app/admin/routes.py:732 +msgid "Send newsletter" +msgstr "Newsletter senden" + +#: app/admin/routes.py:57 app/templates/admin/_nav.html:4 +msgid "Site profile" +msgstr "Seitenprofil" + +#: app/admin/routes.py:102 app/templates/admin/_nav.html:5 +msgid "Misc settings" +msgstr "Verschiedene Einstellungen" + +#: app/admin/routes.py:133 +msgid "Admin settings saved" +msgstr "Admin-Einstellungen gespeichert" + +#: app/admin/routes.py:143 +msgid "Federation settings" +msgstr "Föderations-Einstellungen" + +#: app/admin/routes.py:165 +msgid "ActivityPub Log" +msgstr "ActivityPub Protokoll" + +#: app/admin/routes.py:175 +msgid "Activity JSON" +msgstr "Aktivitäts-JSON" + +#: app/admin/routes.py:210 app/community/routes.py:215 app/main/routes.py:181 +#: app/post/routes.py:211 app/templates/admin/_nav.html:6 +#: app/templates/list_communities.html:51 app/templates/user/filters.html:58 +#: app/templates/user/notifications.html:66 +#: app/templates/user/show_profile.html:130 +msgid "Communities" +msgstr "Communities" + +#: app/admin/routes.py:262 app/admin/routes.py:358 app/admin/routes.py:383 +#: app/admin/routes.py:578 app/community/routes.py:630 +msgid "Saved" +msgstr "Speichern" + +#: app/admin/routes.py:266 +msgid "This is a remote community - most settings here will be regularly overwritten with data from the original server." +msgstr "Dies ist eine Remote-Community - die meisten Einstellungen hier werden regelmäßig mit Daten des ursprünglichen Servers überschrieben." + +#: app/admin/routes.py:283 app/community/routes.py:642 +#: app/templates/community/community_edit.html:20 +msgid "Edit community" +msgstr "Gemeinschaft bearbeiten" + +#: app/admin/routes.py:302 app/community/routes.py:664 +msgid "Community deleted" +msgstr "Gemeinschaft gelöscht" + +#: app/admin/routes.py:336 app/community/routes.py:201 app/post/routes.py:197 +#: app/templates/admin/_nav.html:7 app/templates/base.html:134 +#: app/templates/base.html:152 app/templates/topic/show_topic.html:14 +msgid "Topics" +msgstr "Themen" + +#: app/admin/routes.py:361 app/templates/admin/topics.html:35 +msgid "Add topic" +msgstr "Thema hinzufügen" + +#: app/admin/routes.py:389 +msgid "Edit topic" +msgstr "Thema bearbeiten" + +#: app/admin/routes.py:404 +msgid "Topic deleted" +msgstr "Thema gelöscht" + +#: app/admin/routes.py:406 +msgid "Cannot delete topic with communities assigned to it." +msgstr "Thema mit zugewiesenen Gemeinschaften kann nicht gelöscht werden." + +#: app/admin/routes.py:433 app/templates/admin/_nav.html:8 +msgid "Users" +msgstr "Benutzer" + +#: app/admin/routes.py:463 +msgid "Problematic users" +msgstr "Problematische Benutzer" + +#: app/admin/routes.py:484 +msgid "Bad posts" +msgstr "Falsche Beiträge" + +#: app/admin/routes.py:517 +msgid "Registration approved." +msgstr "Registrierung genehmigt." + +#: app/admin/routes.py:574 +msgid "Permissions are cached for 50 seconds so new admin roles won't take effect immediately." +msgstr "Berechtigungen werden für 50 Sekunden zwischengespeichert, so dass neue Administratorrollen nicht sofort wirksam werden." + +#: app/admin/routes.py:582 +msgid "This is a remote user - most settings here will be regularly overwritten with data from the original server." +msgstr "Dies ist ein Remote-Benutzer - die meisten Einstellungen hier werden regelmäßig mit Daten des ursprünglichen Servers überschrieben." + +#: app/admin/routes.py:599 +msgid "Edit user" +msgstr "Benutzer bearbeiten" + +#: app/admin/routes.py:664 +msgid "User added" +msgstr "Benutzer hinzugefügt" + +#: app/admin/routes.py:667 +msgid "Add user" +msgstr "Neuer Benutzer" + +#: app/admin/routes.py:691 +msgid "User deleted" +msgstr "Benutzer gelöscht" + +#: app/admin/routes.py:714 +msgid "Reports" +msgstr "Berichte" + +#: app/admin/util.py:125 +msgid "None" +msgstr "Keine" + +#: app/auth/forms.py:12 +msgid "Low bandwidth mode" +msgstr "Niedriger Bandbreitenmodus" + +#: app/auth/forms.py:13 +msgid "Log In" +msgstr "Anmelden" + +#: app/auth/forms.py:18 app/auth/forms.py:19 app/auth/forms.py:69 +msgid "Email" +msgstr "Email" + +#: app/auth/forms.py:24 +msgid "Why would you like to join this site?" +msgstr "Warum möchten Sie an dieser Seite teilnehmen?" + +#: app/auth/forms.py:27 app/auth/routes.py:140 app/templates/base.html:141 +msgid "Register" +msgstr "Registrieren" + +#: app/auth/forms.py:70 +msgid "Request password reset" +msgstr "Passwort zurücksetzen anfordern" + +#: app/auth/forms.py:78 +msgid "Set password" +msgstr "Passwort festlegen" + +#: app/auth/routes.py:29 app/auth/routes.py:32 +msgid "No account exists with that user name." +msgstr "Kein Konto mit diesem Benutzernamen vorhanden." + +#: app/auth/routes.py:36 +msgid "Invalid password. Please reset your password." +msgstr "Ungültiges Passwort. Bitte Ihr Passwort zurücksetzen." + +#: app/auth/routes.py:39 +msgid "Invalid password" +msgstr "Ungültiges Passwort" + +#: app/auth/routes.py:42 +msgid "You have been banned." +msgstr "Du wurdest gebannt." + +#: app/auth/routes.py:74 +msgid "Login" +msgstr "Anmelden" + +#: app/auth/routes.py:97 +msgid "Sorry, you cannot use that email address" +msgstr "Du kannst diese E-Mail-Adresse nicht verwenden" + +#: app/auth/routes.py:99 +msgid "Sorry, you cannot use that user name" +msgstr "Du kannst diesen Benutzernamen nicht verwenden" + +#: app/auth/routes.py:106 +#, python-format +msgid "Your username contained special letters so it was changed to %(name)s." +msgstr "Ihr Benutzername enthielt spezielle Buchstaben, so dass er in %(name)s geändert wurde." + +#: app/auth/routes.py:145 +msgid "Account under review" +msgstr "Konto wird überprüft" + +#: app/auth/routes.py:150 app/templates/auth/check_email.html:8 +msgid "Check your email" +msgstr "Überprüfe deine E-Mail" + +#: app/auth/routes.py:161 +msgid "Sorry, you cannot use that email address." +msgstr "Du kannst diese E-Mail-Adresse nicht verwenden." + +#: app/auth/routes.py:166 +msgid "Check your email for a link to reset your password." +msgstr "Überprüfen Sie Ihre E-Mail, um Ihr Passwort zurückzusetzen." + +#: app/auth/routes.py:169 +msgid "No account with that email address exists" +msgstr "Kein Konto mit dieser E-Mail-Adresse existiert" + +#: app/auth/routes.py:171 +msgid "Reset Password" +msgstr "Passwort festlegen" + +#: app/auth/routes.py:185 +#, python-format +msgid "Your password has been reset. Please use it to log in with user name of %(name)s." +msgstr "Ihr Passwort wurde zurückgesetzt. Bitte verwenden Sie es um sich mit dem Benutzernamen von %(name)s anzumelden." + +#: app/auth/routes.py:205 +msgid "Thank you for verifying your email address." +msgstr "Vielen Dank für die Überprüfung Ihrer E-Mail-Adresse." + +#: app/auth/routes.py:207 +msgid "Email address validation failed." +msgstr "Überprüfung der E-Mail-Adresse fehlgeschlagen." + +#: app/chat/forms.py:13 +msgid "Message" +msgstr "Nachricht" + +#: app/chat/forms.py:14 +msgid "Reply" +msgstr "Antwort" + +#: app/chat/forms.py:18 app/post/forms.py:16 app/user/forms.py:60 +msgid "Spam" +msgstr "Spam" + +#: app/chat/forms.py:19 app/post/forms.py:16 app/user/forms.py:61 +msgid "Harassment" +msgstr "Belästigung" + +#: app/chat/forms.py:20 app/post/forms.py:17 app/user/forms.py:62 +msgid "Threatening violence" +msgstr "Bedrohung der Gewalt" + +#: app/chat/forms.py:21 app/user/forms.py:63 +msgid "Promoting hate / genocide" +msgstr "Die Bekämpfung von Hass / Völkermord" + +#: app/chat/forms.py:22 app/post/forms.py:18 app/user/forms.py:64 +msgid "Misinformation / disinformation" +msgstr "Falsche Informationen / Desinformation" + +#: app/chat/forms.py:23 app/post/forms.py:19 app/user/forms.py:65 +msgid "Racism, sexism, transphobia" +msgstr "Rassismus, Sexismus, Transphobie" + +#: app/chat/forms.py:24 app/post/forms.py:21 app/user/forms.py:68 +msgid "Minor abuse or sexualization" +msgstr "Minderer Missbrauch oder Sexualisierung" + +#: app/chat/forms.py:25 app/post/forms.py:22 app/user/forms.py:69 +msgid "Non-consensual intimate media" +msgstr "Nicht konsensuelle intime Medien" + +#: app/chat/forms.py:26 app/post/forms.py:23 app/user/forms.py:70 +msgid "Prohibited transaction" +msgstr "Verbotene Transaktion" + +#: app/chat/forms.py:26 app/post/forms.py:23 app/user/forms.py:70 +msgid "Impersonation" +msgstr "Imitation" + +#: app/chat/forms.py:27 app/post/forms.py:24 app/user/forms.py:71 +msgid "Copyright violation" +msgstr "Urheberrechtsverletzung" + +#: app/chat/forms.py:27 app/post/forms.py:24 app/user/forms.py:71 +msgid "Trademark violation" +msgstr "Markenverletzung" + +#: app/chat/forms.py:28 app/post/forms.py:25 app/user/forms.py:72 +msgid "Self-harm or suicide" +msgstr "Selbstschädigung oder Selbstmord" + +#: app/chat/forms.py:29 app/community/forms.py:155 app/post/forms.py:26 +#: app/user/forms.py:73 +msgid "Other" +msgstr "Andere" + +#: app/chat/forms.py:30 app/community/forms.py:70 app/community/forms.py:157 +#: app/post/forms.py:27 app/user/forms.py:74 +msgid "Reason" +msgstr "Grund" + +#: app/chat/forms.py:31 app/community/forms.py:158 app/post/forms.py:28 +#: app/user/forms.py:75 +msgid "More info" +msgstr "Mehr Info" + +#: app/chat/forms.py:33 app/community/forms.py:160 app/post/forms.py:30 +#: app/templates/user/show_profile.html:56 app/user/forms.py:77 +msgid "Report" +msgstr "Bericht" + +#: app/chat/routes.py:49 +#, python-format +msgid "Chat with %(name)s" +msgstr "Chatte mit %(name)s" + +#: app/chat/routes.py:69 +msgid "Send" +msgstr "Senden" + +#: app/chat/routes.py:79 app/templates/chat/new_message.html:14 +#, python-format +msgid "New message to \"%(recipient_name)s\"" +msgstr "Neue Nachricht an \"%(recipient_name)s\"" + +#: app/chat/routes.py:124 +msgid "Conversation deleted" +msgstr "Unterhaltung gelöscht" + +#: app/chat/routes.py:135 +msgid "Instance blocked." +msgstr "Instanz blockiert." + +#: app/chat/routes.py:165 +msgid "This conversation has been reported, thank you!" +msgstr "Dieses Gespräch wurde gemeldet, danke!" + +#: app/chat/routes.py:170 +msgid "Report conversation" +msgstr "Konversation melden" + +#: app/chat/util.py:58 +#, python-format +msgid "Message failed to send to %(name)s." +msgstr "Nachricht konnte nicht an %(name)s gesendet werden." + +#: app/chat/util.py:60 +msgid "Message sent." +msgstr "Nachricht gesendet." + +#: app/community/forms.py:26 +msgid "Create" +msgstr "Anlegen" + +#: app/community/forms.py:61 +msgid "Add" +msgstr "Neu" + +#: app/community/forms.py:65 +msgid "Community address" +msgstr "Gemeinschaftsadresse" + +#: app/community/forms.py:66 app/search/routes.py:52 +#: app/templates/base.html:193 app/templates/community/add_remote.html:13 +#: app/templates/domain/domains.html:29 +#: app/templates/domain/domains_blocked.html:29 app/templates/index.html:40 +#: app/templates/list_communities.html:36 app/templates/search/results.html:38 +msgid "Search" +msgstr "Suchen" + +#: app/community/forms.py:71 +msgid "Ban until" +msgstr "Bannen bis" + +#: app/community/forms.py:72 +msgid "Also delete all their posts" +msgstr "Lösche auch alle Beiträge" + +#: app/community/forms.py:73 +msgid "Also delete all their comments" +msgstr "Alle Kommentare löschen" + +#: app/community/forms.py:74 app/templates/domain/domains_blocked.html:48 +#: app/templates/user/show_profile.html:170 +msgid "Ban" +msgstr "Bann" + +#: app/community/forms.py:78 app/templates/list_communities.html:56 +msgid "Community" +msgstr "Gemeinschaft" + +#: app/community/forms.py:81 app/community/forms.py:83 +#: app/community/forms.py:88 app/post/forms.py:10 +msgid "Body" +msgstr "Körper" + +#: app/community/forms.py:85 +msgid "URL" +msgstr "URL" + +#: app/community/forms.py:87 +msgid "Alt text" +msgstr "Alter Text" + +#: app/community/forms.py:90 +msgid "Image" +msgstr "Bild" + +#: app/community/forms.py:92 +msgid "NSFW" +msgstr "NSFW" + +#: app/community/forms.py:93 +msgid "Gore/gross" +msgstr "Gore/gross" + +#: app/community/forms.py:94 app/post/forms.py:11 +#: app/templates/post/_post_notification_toggle.html:4 +#: app/templates/post/_reply_notification_toggle.html:4 +msgid "Notify about replies" +msgstr "Über Antworten benachrichtigen" + +#: app/community/forms.py:105 app/community/forms.py:109 +#: app/community/forms.py:120 +msgid "Title is required." +msgstr "Titel ist erforderlich." + +#: app/community/forms.py:112 +msgid "URL is required." +msgstr "URL ist erforderlich." + +#: app/community/forms.py:116 +#, python-format +msgid "Links to %(domain)s are not allowed." +msgstr "Links zu %(domain)s sind nicht erlaubt." + +#: app/community/forms.py:123 +msgid "File is required." +msgstr "Datei ist erforderlich." + +#: app/community/forms.py:140 +msgid "Images cannot be posted to local communities." +msgstr "Bilder können nicht in lokalen Gemeinschaften veröffentlicht werden." + +#: app/community/forms.py:142 +msgid "Poll not implemented yet." +msgstr "Umfrage noch nicht implementiert." + +#: app/community/forms.py:149 +msgid "Breaks instance rules" +msgstr "Regeln für Bruch-Instanz" + +#: app/community/forms.py:150 +msgid "Abandoned by moderators" +msgstr "Von Moderatoren verlassen" + +#: app/community/forms.py:151 +msgid "Cult" +msgstr "Kult" + +#: app/community/forms.py:152 +msgid "Scam" +msgstr "Scam" + +#: app/community/forms.py:153 +msgid "Alt-right pipeline" +msgstr "Alt-Rechts Pipeline" + +#: app/community/forms.py:154 app/post/forms.py:17 +msgid "Hate / genocide" +msgstr "Hate / genocide" + +#: app/community/forms.py:172 app/community/routes.py:667 +msgid "Delete community" +msgstr "Community löschen" + +#: app/community/routes.py:72 +msgid "Your new community has been created." +msgstr "Deine neue Community wurde erstellt." + +#: app/community/routes.py:78 app/templates/community/add_local.html:13 +#: app/templates/community/community_edit.html:22 +msgid "Create community" +msgstr "Community erstellen" + +#: app/community/routes.py:102 +msgid "Community not found." +msgstr "Community nicht gefunden." + +#: app/community/routes.py:104 +msgid "Community not found. If you are searching for a nsfw community it is blocked by this instance." +msgstr "Community nicht gefunden. Wenn Sie nach einer nsfw-Community suchen, wird sie von dieser Instanz blockiert." + +#: app/community/routes.py:107 +#, python-format +msgid "That community is banned from %(site)s." +msgstr "Diese Community ist von %(site)s gebannt." + +#: app/community/routes.py:110 +msgid "Add remote community" +msgstr "Remote-Gemeinschaft hinzufügen" + +#: app/community/routes.py:184 app/post/routes.py:180 +#: app/templates/base.html:127 app/templates/base.html:129 +#: app/templates/base.html:145 app/templates/base.html:147 +#: app/templates/chat/conversation.html:36 +#: app/templates/community/community_edit.html:13 +#: app/templates/community/community_mod_list.html:13 +#: app/templates/domain/domain.html:13 app/templates/topic/show_topic.html:13 +#: app/templates/user/delete_account.html:13 +#: app/templates/user/edit_filters.html:14 +#: app/templates/user/edit_profile.html:14 +#: app/templates/user/edit_settings.html:15 app/templates/user/filters.html:14 +#: app/templates/user/notifications.html:13 app/templates/user/people.html:13 +#: app/templates/user/show_profile.html:18 +#: app/templates/user/show_profile.html:38 +msgid "Home" +msgstr "Startseite" + +#: app/community/routes.py:310 +msgid "You cannot join this community" +msgstr "Du kannst dieser Community nicht beitreten" + +#: app/community/routes.py:326 +msgid "There was a problem while trying to communicate with remote server. If other people have already joined this community it won't matter." +msgstr "Es gab ein Problem beim Versuch, mit einem entfernten Server zu kommunizieren. Wenn andere Personen dieser Community bereits beigetreten sind, spielt es keine Rolle." + +#: app/community/routes.py:516 app/community/routes.py:540 +#: app/community/routes.py:542 +#, python-format +msgid "Your post to %(name)s has been made." +msgstr "Ihr Beitrag bei %(name)s wurde erstellt." + +#: app/community/routes.py:552 +msgid "Add post to community" +msgstr "Beitrag zur Community hinzufügen" + +#: app/community/routes.py:574 +msgid "A community has been reported" +msgstr "Eine Community wurde gemeldet" + +#: app/community/routes.py:585 +msgid "Community has been reported, thank you!" +msgstr "Community wurde gemeldet, danke!" + +#: app/community/routes.py:588 +msgid "Report community" +msgstr "Gemeinschaft melden" + +#: app/community/routes.py:683 +#: app/templates/community/community_mod_list.html:21 +#, python-format +msgid "Moderators for %(community)s" +msgstr "Moderatoren für %(community)s" + +#: app/community/routes.py:706 +msgid "Moderator added" +msgstr "Moderator hinzugefügt" + +#: app/community/routes.py:710 +#, python-format +msgid "You are now a moderator of %(name)s" +msgstr "Du bist jetzt Moderator von %(name)s" + +#: app/community/routes.py:735 +msgid "Account not found" +msgstr "Konto nicht gefunden" + +#: app/community/routes.py:737 +#: app/templates/community/community_add_moderator.html:13 +#, python-format +msgid "Add moderator to %(community)s" +msgstr "Moderator zu %(community)s hinzufügen" + +#: app/community/routes.py:755 +msgid "Moderator removed" +msgstr "Moderator gelöscht" + +#: app/community/routes.py:772 app/post/routes.py:870 app/post/routes.py:962 +#, python-format +msgid "Content from %(name)s will be hidden." +msgstr "Inhalt von %(name)s wird ausgeblendet." + +#: app/community/routes.py:792 +#, python-format +msgid "%(name)s has been banned." +msgstr "%(name)s wurde gesperrt." + +#: app/community/routes.py:799 +#, python-format +msgid "Posts by %(name)s have been deleted." +msgstr "Beiträge von %(name)s wurden gelöscht." + +#: app/community/routes.py:805 +#, python-format +msgid "Comments by %(name)s have been deleted." +msgstr "Kommentare von %(name)s wurden gelöscht." + +#: app/community/routes.py:823 +msgid "Ban from community" +msgstr "Community sperren" + +#: app/domain/routes.py:113 +#, python-format +msgid "%(name)s blocked." +msgstr "%(name)s blockiert." + +#: app/domain/routes.py:126 +#, python-format +msgid "%(name)s un-blocked." +msgstr "%(name)s entsperrt." + +#: app/domain/routes.py:139 +#, python-format +msgid "%(name)s banned for all users and all content deleted." +msgstr "%(name)s wurde für alle Benutzer gesperrt und alle Inhalte gelöscht." + +#: app/domain/routes.py:151 +#, python-format +msgid "%(name)s un-banned for all users." +msgstr "%(name)s für alle Benutzer nicht gebannt." + +#: app/main/routes.py:72 +msgid "Create an account to tailor this feed to your interests." +msgstr "Erstellen Sie ein Konto, um diesen Feed Ihren Interessen anzupassen." + +#: app/main/routes.py:156 app/templates/base.html:136 +#: app/templates/base.html:154 +msgid "Browse by topic" +msgstr "Nach Thema suchen" + +#: app/main/routes.py:194 +msgid "Local communities" +msgstr "Lokale Gemeinschaften" + +#: app/main/routes.py:209 app/templates/base.html:163 +#: app/templates/list_communities.html:19 +msgid "Joined communities" +msgstr "Beigetretene Gemeinschaften" + +#: app/main/routes.py:326 +msgid "Please click the link in your email inbox to verify your account." +msgstr "Bitte klicken Sie auf den Link in Ihrem Posteingang, um Ihr Konto zu bestätigen." + +#: app/post/forms.py:12 +msgid "Comment" +msgstr "Kommentar" + +#: app/post/forms.py:16 app/user/forms.py:59 +msgid "Breaks community rules" +msgstr "Regeln der Gemeinschaft brechen" + +#: app/post/forms.py:20 app/user/forms.py:67 +msgid "Sharing personal info - doxing" +msgstr "Teilen persönlicher Informationen - Doxing" + +#: app/post/forms.py:42 app/post/routes.py:887 +#: app/templates/post/post_mea_culpa.html:13 +msgid "I changed my mind" +msgstr "Ich habe meine Meinung geändert" + +#: app/post/routes.py:45 +#, python-format +msgid "%(name)s has indicated they made a mistake in this post." +msgstr "%(name)s hat angegeben, dass sie einen Fehler in diesem Beitrag gemacht haben." + +#: app/post/routes.py:66 app/post/routes.py:443 +#, python-format +msgid "You cannot reply to %(name)s" +msgstr "Sie können nicht auf %(name)s antworten" + +#: app/post/routes.py:76 app/post/routes.py:456 +msgid "This type of comment is not accepted, sorry." +msgstr "Diese Art von Kommentar wird nicht akzeptiert, sorry." + +#: app/post/routes.py:414 app/post/routes.py:579 +#, python-format +msgid "Discussing %(title)s" +msgstr "Diskussion %(title)s" + +#: app/post/routes.py:628 app/post/routes.py:985 app/user/routes.py:137 +#: app/user/routes.py:198 app/user/routes.py:670 app/user/routes.py:701 +msgid "Your changes have been saved." +msgstr "Ihre Änderungen wurden gespeichert." + +#: app/post/routes.py:725 app/templates/post/post_edit.html:43 +msgid "Edit post" +msgstr "Beitrag bearbeiten" + +#: app/post/routes.py:746 +msgid "Post deleted." +msgstr "Beitrag gelöscht." + +#: app/post/routes.py:804 +msgid "A post has been reported" +msgstr "Ein Beitrag wurde gemeldet" + +#: app/post/routes.py:822 +msgid "Post has been reported, thank you!" +msgstr "Der Beitrag wurde gemeldet, danke!" + +#: app/post/routes.py:827 +msgid "Report post" +msgstr "Beitrag melden" + +#: app/post/routes.py:841 app/post/routes.py:946 +#, python-format +msgid "%(name)s has been blocked." +msgstr "%(name)s wurde blockiert." + +#: app/post/routes.py:857 +#, python-format +msgid "Posts linking to %(name)s will be hidden." +msgstr "Beiträge, die zu %(name)s verlinken, werden ausgeblendet." + +#: app/post/routes.py:908 +msgid "A comment has been reported" +msgstr "Ein Kommentar wurde gemeldet" + +#: app/post/routes.py:926 +msgid "Comment has been reported, thank you!" +msgstr "Kommentar wurde gemeldet, danke!" + +#: app/post/routes.py:931 +msgid "Report comment" +msgstr "Kommentar melden" + +#: app/post/routes.py:1062 +msgid "Edit comment" +msgstr "Kommentar bearbeiten" + +#: app/post/routes.py:1086 +msgid "Comment deleted." +msgstr "Kommentar gelöscht." + +#: app/search/routes.py:45 +#, python-format +msgid "Search results for %(q)s" +msgstr "Suchergebnisse für %(q)s" + +#: app/templates/_home_nav.html:3 app/templates/community/_community_nav.html:8 +#: app/templates/post/post.html:66 app/user/forms.py:44 +msgid "Hot" +msgstr "Heiß" + +#: app/templates/_home_nav.html:6 +#: app/templates/community/_community_nav.html:11 +#: app/templates/post/post.html:69 app/user/forms.py:45 +msgid "Top" +msgstr "Oben" + +#: app/templates/_home_nav.html:9 +#: app/templates/community/_community_nav.html:14 +#: app/templates/post/post.html:72 app/user/forms.py:46 +msgid "New" +msgstr "Neu" + +#: app/templates/_home_nav.html:12 +#: app/templates/community/_community_nav.html:17 +#: app/templates/list_communities.html:71 app/user/forms.py:47 +msgid "Active" +msgstr "Aktiv" + +#: app/templates/_inoculation_links.html:4 +msgid "Rational Discourse Toolkit" +msgstr "Rationaler Discourse Toolkit" + +#: app/templates/base.html:52 +msgid "PieFed" +msgstr "PieFed" + +#: app/templates/base.html:110 app/templates/base.html:184 +#: app/templates/user/notifications.html:18 app/user/routes.py:521 +msgid "Notifications" +msgstr "Benachrichtigungen" + +#: app/templates/base.html:130 app/templates/base.html:148 +msgid "Popular" +msgstr "Beliebt" + +#: app/templates/base.html:131 app/templates/base.html:149 +msgid "All posts" +msgstr "Alle Beiträge" + +#: app/templates/base.html:137 app/templates/base.html:155 +#: app/templates/list_communities.html:13 +msgid "All communities" +msgstr "Alle Gemeinschaften" + +#: app/templates/auth/login.html:9 app/templates/base.html:140 +msgid "Log in" +msgstr "Anmelden" + +#: app/templates/base.html:142 app/templates/base.html:178 +#: app/templates/donate.html:10 +msgid "Donate" +msgstr "Spenden" + +#: app/templates/base.html:157 +msgid "Moderating" +msgstr "Moderieren" + +#: app/templates/base.html:171 +msgid "Account" +msgstr "Konto" + +#: app/templates/base.html:173 +msgid "View profile" +msgstr "Profil anzeigen" + +#: app/templates/base.html:174 +msgid "Edit profile & settings" +msgstr "Profil & Einstellungen bearbeiten" + +#: app/templates/base.html:175 +msgid "Chats" +msgstr "Chatten" + +#: app/templates/base.html:182 +msgid "Log out" +msgstr "Abmelden" + +#: app/templates/base.html:184 +#, python-format +msgid "%(num)d unread notifications" +msgstr "%(num)d ungelesene Benachrichtigungen" + +#: app/templates/base.html:194 +msgid "Light mode" +msgstr "Lichtmodus" + +#: app/templates/base.html:195 +msgid "Dark mode" +msgstr "Dunkler Modus" + +#: app/templates/base.html:223 app/templates/keyboard_shortcuts.html:10 +msgid "Keyboard shortcuts" +msgstr "Tastaturkürzel" + +#: app/templates/donate.html:26 app/templates/index.html:65 +#: app/templates/keyboard_shortcuts.html:63 +#: app/templates/search/results.html:63 +#, python-format +msgid "About %(site_name)s" +msgstr "Über %(site_name)s" + +#: app/templates/index.html:17 +msgid "No posts yet. Join some communities to see more." +msgstr "Noch keine Beiträge. Tritt einigen Communities bei, um mehr zu sehen." + +#: app/templates/community/community.html:168 app/templates/index.html:18 +#: app/templates/index.html:59 app/templates/list_topics.html:26 +#: app/templates/post/post.html:217 app/templates/search/results.html:57 +#: app/templates/topic/show_topic.html:91 +msgid "Explore communities" +msgstr "Communities erkunden" + +#: app/templates/admin/activities.html:54 +#: app/templates/admin/communities.html:51 app/templates/admin/posts.html:26 +#: app/templates/admin/reports.html:58 app/templates/admin/users.html:69 +#: app/templates/community/community.html:92 +#: app/templates/domain/domain.html:30 app/templates/domain/domains.html:51 +#: app/templates/domain/domains_blocked.html:59 app/templates/index.html:25 +#: app/templates/search/results.html:23 app/templates/topic/show_topic.html:52 +#: app/templates/user/show_profile.html:72 +#: app/templates/user/show_profile.html:95 +msgid "Previous page" +msgstr "Vorherige Seite" + +#: app/templates/admin/activities.html:59 +#: app/templates/admin/communities.html:56 app/templates/admin/posts.html:31 +#: app/templates/admin/reports.html:63 app/templates/admin/users.html:74 +#: app/templates/community/community.html:97 +#: app/templates/domain/domain.html:35 app/templates/domain/domains.html:56 +#: app/templates/domain/domains_blocked.html:64 app/templates/index.html:30 +#: app/templates/search/results.html:28 app/templates/topic/show_topic.html:57 +#: app/templates/user/show_profile.html:77 +#: app/templates/user/show_profile.html:100 +msgid "Next page" +msgstr "Nächste Seite" + +#: app/templates/index.html:47 app/templates/search/results.html:45 +msgid "Active communities" +msgstr "Aktive Gemeinschaften" + +#: app/templates/keyboard_shortcuts.html:11 +msgid "Most shortcuts are the same as what reddit has." +msgstr "Die meisten Verknüpfungen sind die gleichen wie reddit." + +#: app/templates/keyboard_shortcuts.html:14 +msgid "Navigation" +msgstr "Navigation" + +#: app/templates/community/community_mod_list.html:31 +#: app/templates/keyboard_shortcuts.html:43 app/templates/user/filters.html:31 +msgid "Action" +msgstr "Aktion" + +#: app/templates/keyboard_shortcuts.html:46 +msgid "Upvote" +msgstr "Aufgestuft" + +#: app/templates/keyboard_shortcuts.html:50 +msgid "Downvote" +msgstr "Abstimmen" + +#: app/templates/keyboard_shortcuts.html:55 +msgid "When viewing a list of posts actions like voting or going to a post depend on which is the current post. The current post is determined by hovering with the mouse or the J and K keys." +msgstr "Wenn Sie eine Liste von Beiträgen Aktionen wie Abstimmungen oder gehen Sie zu einem Beitrag hängen davon ab, von welchem ist der aktuelle Beitrag. Der aktuelle Beitrag wird durch die Maus oder die J- und K-Taste bestimmt." + +#: app/templates/list_communities.html:14 +msgid "All" +msgstr "Alle" + +#: app/templates/list_communities.html:16 +msgid "Communities on this server" +msgstr "Gemeinschaften auf diesem Server" + +#: app/templates/list_communities.html:17 +msgid "Local" +msgstr "Lokal" + +#: app/templates/list_communities.html:20 +#: app/templates/user/show_profile.html:59 +msgid "Joined" +msgstr "Beitreten" + +#: app/templates/list_communities.html:28 +msgid "Choose a topic to filter communities by" +msgstr "Wählen Sie ein Thema aus, um Gemeinschaften zu filtern nach" + +#: app/templates/list_communities.html:40 +msgid "Create local community" +msgstr "Lokale Gemeinschaft erstellen" + +#: app/templates/list_communities.html:40 +msgid "Create local" +msgstr "Lokal erstellen" + +#: app/templates/list_communities.html:41 +msgid "Add community from another instance" +msgstr "Community von einer anderen Instanz hinzufügen" + +#: app/templates/list_communities.html:41 +msgid "Add remote" +msgstr "Remote hinzufügen" + +#: app/templates/list_communities.html:56 +msgid "Sort by name" +msgstr "Nach Namen sortieren" + +#: app/templates/list_communities.html:61 +msgid "Sort by post count" +msgstr "Nach Beitragsanzahl sortieren" + +#: app/templates/list_communities.html:61 +msgid "Posts" +msgstr "Beiträge" + +#: app/templates/list_communities.html:66 +msgid "Sort by reply count" +msgstr "Nach Antwortanzahl sortieren" + +#: app/templates/list_communities.html:66 app/templates/post/post.html:61 +#: app/templates/post/post.html:155 +msgid "Comments" +msgstr "Kommentare" + +#: app/templates/list_communities.html:71 +msgid "Sort by recent activity" +msgstr "Nach letzter Aktivität sortieren" + +#: app/templates/list_communities.html:82 +#, python-format +msgid "Leave %(name)s" +msgstr "%(name)s verlassen" + +#: app/templates/community/add_remote.html:32 +#: app/templates/community/community.html:112 +#: app/templates/list_communities.html:82 app/templates/post/add_reply.html:48 +#: app/templates/post/continue_discussion.html:96 +#: app/templates/post/post.html:174 +msgid "Leave" +msgstr "Verlassen" + +#: app/templates/community/community.html:114 +#: app/templates/list_communities.html:84 +msgid "Pending" +msgstr "Ausstehend" + +#: app/templates/list_communities.html:86 +#: app/templates/list_communities.html:89 +#, python-format +msgid "Join %(name)s" +msgstr "%(name)s beitreten" + +#: app/templates/community/add_remote.html:34 +#: app/templates/community/community.html:116 +#: app/templates/list_communities.html:86 +#: app/templates/list_communities.html:89 app/templates/post/add_reply.html:50 +#: app/templates/post/continue_discussion.html:98 +#: app/templates/post/post.html:176 +msgid "Join" +msgstr "Beitreten" + +#: app/templates/list_communities.html:96 +#, python-format +msgid "Browse %(name)s" +msgstr "%(name)s durchsuchen" + +#: app/templates/list_communities.html:106 app/templates/list_topics.html:24 +msgid "There are no communities yet." +msgstr "Es gibt noch keine Gemeinschaften." + +#: app/templates/list_topics.html:11 +msgid "Choose a topic" +msgstr "Thema auswählen" + +#: app/templates/privacy.html:10 +msgid "Privacy" +msgstr "Privatsphäre" + +#: app/templates/admin/_nav.html:2 +msgid "Admin navigation" +msgstr "Admin-Navigation" + +#: app/templates/admin/_nav.html:3 +msgid "Admin home" +msgstr "Admin-Haus" + +#: app/templates/admin/_nav.html:9 +msgid "Watch" +msgstr "Beobachten" + +#: app/templates/admin/_nav.html:11 +msgid "Registration applications" +msgstr "Anmeldungen" + +#: app/templates/admin/_nav.html:13 +msgid "Moderation" +msgstr "Moderieren" + +#: app/templates/admin/_nav.html:14 +msgid "Federation" +msgstr "Föderation" + +#: app/templates/admin/_nav.html:15 +msgid "Newsletter" +msgstr "Newslettern" + +#: app/templates/admin/_nav.html:16 +msgid "Activities" +msgstr "Aktivitäten" + +#: app/templates/admin/add_user.html:17 +msgid "Add new user" +msgstr "Neuen Benutzer hinzufügen" + +#: app/templates/admin/approve_registrations.html:18 +#, python-format +msgid "When registering, people are asked \"%(question)s\"." +msgstr "Bei der Registrierung werden Personen gefragt \"%(question)s\"." + +#: app/templates/admin/approve_registrations.html:43 +msgid "Approve" +msgstr "Bestätigen" + +#: app/templates/admin/approve_registrations.html:44 +msgid "View" +msgstr "Ansicht" + +#: app/templates/admin/approve_registrations.html:45 +#: app/templates/post/post_options.html:20 +#: app/templates/post/post_reply_options.html:20 +#: app/templates/user/show_profile.html:176 +msgid "Delete" +msgstr "Löschen" + +#: app/templates/admin/approve_registrations.html:51 +msgid "No one is waiting to be approved." +msgstr "Niemand wartet auf seine Zustimmung." + +#: app/templates/admin/edit_community.html:17 +#, python-format +msgid "Edit %(community_name)s" +msgstr "%(community_name)s bearbeiten" + +#: app/templates/admin/edit_community.html:43 +msgid "Will not be overwritten by remote server" +msgstr "Wird nicht vom entfernten Server überschrieben" + +#: app/templates/admin/edit_topic.html:18 +#, python-format +msgid "Edit %(topic_name)s" +msgstr "%(topic_name)s bearbeiten" + +#: app/templates/admin/edit_user.html:17 +#, python-format +msgid "Edit %(user_name)s (%(display_name)s)" +msgstr "%(user_name)s bearbeiten (%(display_name)s)" + +#: app/templates/admin/posts.html:17 +msgid "Most downvoted in the last 3 days" +msgstr "Die meisten abgestuften in den letzten 3 Tagen" + +#: app/templates/admin/users.html:17 +msgid "Add local user" +msgstr "Lokalen Benutzer hinzufügen" + +#: app/templates/auth/check_email.html:9 +msgid "We sent you an email containing a link that you need to click to enable your account." +msgstr "Wir haben Ihnen eine E-Mail mit einem Link geschickt, auf den Sie klicken müssen, um Ihr Konto zu aktivieren." + +#: app/templates/auth/login.html:14 +msgid "New User?" +msgstr "Neuer Benutzer?" + +#: app/templates/auth/login.html:14 +msgid "Register new account" +msgstr "Neues Konto registrieren" + +#: app/templates/auth/login.html:16 +msgid "Forgot Your Password?" +msgstr "Passwort vergessen?" + +#: app/templates/auth/login.html:17 +msgid "Reset it" +msgstr "Zurücksetzen" + +#: app/templates/auth/permission_denied.html:8 +#: app/templates/chat/blocked.html:13 app/templates/chat/denied.html:14 +msgid "Sorry" +msgstr "Entschuldigen" + +#: app/templates/auth/permission_denied.html:12 +msgid "Your account does not have access to that area." +msgstr "Ihr Konto hat keinen Zugriff auf diesen Bereich." + +#: app/templates/auth/please_wait.html:8 +msgid "Thanks for registering" +msgstr "Vielen Dank für Ihre Registrierung" + +#: app/templates/auth/please_wait.html:9 +msgid "We are reviewing your application and will email you once it has been accepted." +msgstr "Wir prüfen Ihre Bewerbung und werden Ihnen eine E-Mail schicken, sobald sie angenommen wurde." + +#: app/templates/auth/register.html:19 +msgid "Create new account" +msgstr "Neues Konto erstellen" + +#: app/templates/auth/register.html:22 +msgid "Registration is closed. Only admins can create accounts." +msgstr "Die Registrierung ist geschlossen. Nur Administratoren können Konten erstellen." + +#: app/templates/auth/reset_password.html:13 +#: app/templates/auth/reset_password_request.html:13 +msgid "Reset your password" +msgstr "Passwort zurücksetzen" + +#: app/templates/auth/validation_required.html:8 +msgid "Please check your email inbox" +msgstr "Bitte überprüfen Sie Ihren Posteingang" + +#: app/templates/auth/validation_required.html:12 +msgid "To keep spam and bots to a managable level, we send every new account an email with a link in it that needs to be clicked to fully enable the account." +msgstr "Um Spam und Bots auf einem verwaltbaren Level zu halten wir schicken jedem neuen Konto eine E-Mail mit einem Link, der angeklickt werden muss, um das Konto vollständig zu aktivieren." + +#: app/templates/chat/blocked.html:15 +msgid "You have blocked this person or they have blocked you." +msgstr "Du hast diese Person blockiert oder sie hat dich blockiert." + +#: app/templates/chat/chat_options.html:14 +#, python-format +msgid "Options for conversation with \"%(member_names)s\"" +msgstr "Optionen für die Unterhaltung mit \"%(member_names)s\"" + +#: app/templates/chat/chat_options.html:17 +msgid "Delete conversation" +msgstr "Unterhaltung löschen" + +#: app/templates/chat/chat_options.html:21 +#, python-format +msgid "Block @%(author_name)s" +msgstr "Blockiere @%(author_name)s" + +#: app/templates/chat/chat_options.html:26 +#, python-format +msgid "Block chats and posts from instance: %(name)s" +msgstr "Blockiere Chats und Beiträge von der Instanz: %(name)s" + +#: app/templates/chat/chat_options.html:29 +#: app/templates/post/post_options.html:48 +#: app/templates/post/post_reply_options.html:32 +msgid "Report to moderators" +msgstr "An Moderatoren melden" + +#: app/templates/chat/chat_options.html:31 +msgid "If you are reporting abuse then do not delete the conversation - moderators will not be able to read it if you delete it." +msgstr "Wenn Sie Missbrauch melden, löschen Sie die Unterhaltung nicht - Moderatoren können sie nicht lesen, wenn Sie sie löschen." + +#: app/templates/chat/conversation.html:37 +msgid "Chat" +msgstr "Chatten" + +#: app/templates/chat/conversation.html:42 app/templates/user/filters.html:56 +#: app/templates/user/notifications.html:14 app/templates/user/people.html:14 +#: app/templates/user/people.html:17 app/templates/user/show_profile.html:19 +#: app/templates/user/show_profile.html:39 app/user/routes.py:34 +msgid "People" +msgstr "Leute" + +#: app/templates/chat/conversation.html:59 +#, python-format +msgid "Messages with %(name)s" +msgstr "Nachrichten mit %(name)s" + +#: app/templates/chat/conversation.html:60 +msgid "Messages with: " +msgstr "Nachrichten mit: " + +#: app/templates/chat/conversation.html:75 +#: app/templates/post/_post_teaser.html:80 +msgid "Options" +msgstr "Optionen" + +#: app/templates/chat/denied.html:16 +msgid "You have not been using PieFed long enough to be allowed to send messages to people." +msgstr "Sie haben PieFed nicht lange genug benutzt, um Nachrichten an andere verschicken zu können." + +#: app/templates/chat/empty.html:13 +msgid "No chats" +msgstr "Keine Chats" + +#: app/templates/chat/empty.html:15 +msgid "There are no chats involving you, yet. Start a conversation using the \"Send message\" button on someone's profile." +msgstr "Es gibt noch keine Chats, in die Sie involviert sind. Starten Sie eine Unterhaltung mit dem \"Nachricht senden\"-Button auf dem Profil von jemandem." + +#: app/templates/chat/report.html:14 +#, python-format +msgid "Report conversation with \"%(member_names)s\"" +msgstr "Unterhaltung mit \"%(member_names)s \" melden" + +#: app/templates/community/_community_nav.html:3 +#: app/templates/community/add_post.html:11 +#: app/templates/community/community.html:108 +#: app/templates/post/add_reply.html:54 +#: app/templates/post/continue_discussion.html:102 +#: app/templates/post/post.html:170 app/templates/post/post_reply_edit.html:50 +#: app/templates/topic/show_topic.html:68 +msgid "Create post" +msgstr "Beitrag erstellen" + +#: app/templates/community/_community_nav.html:7 +msgid "Sort by hot" +msgstr "Nach heiß sortieren" + +#: app/templates/community/_community_nav.html:10 +msgid "Sort by top" +msgstr "Nach oben sortieren" + +#: app/templates/community/_community_nav.html:13 +msgid "Sort by new" +msgstr "Nach oben sortieren" + +#: app/templates/community/_community_nav.html:16 +msgid "Sort by active" +msgstr "Nach aktiv sortieren" + +#: app/templates/community/_community_nav.html:26 +msgid "Tile" +msgstr "Kachel" + +#: app/templates/community/_community_nav.html:29 +msgid "Wide tile" +msgstr "Breite Kachel" + +#: app/templates/community/_notification_toggle.html:5 +msgid "Notify about every new post. Not advisable in high traffic communities!" +msgstr "Benachrichtigen Sie über jeden neuen Beitrag. Nicht ratsam in Hochverkehrsgemeinschaften!" + +#: app/templates/community/add_local.html:31 +#, python-format +msgid "Only people using %(name)s can post or reply" +msgstr "Nur Personen, die %(name)s verwenden, können posten oder antworten" + +#: app/templates/community/add_post.html:44 +#: app/templates/community/add_post.html:65 +#: app/templates/community/add_post.html:88 +#: app/templates/post/add_reply.html:37 app/templates/post/post.html:42 +#: app/templates/user/edit_profile.html:44 +msgid "Enable markdown editor" +msgstr "Markdown Editor aktivieren" + +#: app/templates/community/add_post.html:73 +#: app/templates/post/post_edit.html:98 +msgid "Describe the image, to help visually impaired people." +msgstr "Beschreiben Sie das Bild, um sehbehinderten Menschen zu helfen." + +#: app/templates/community/add_remote.html:25 +msgid "Found a community:" +msgstr "Community gefunden:" + +#: app/templates/community/community.html:27 +#: app/templates/community/community.html:48 +#: app/templates/community/community.html:66 +#: app/templates/post/_post_full.html:20 app/templates/post/_post_full.html:66 +#: app/templates/post/_post_teaser.html:56 +msgid "Not safe for work" +msgstr "Nicht sicher für Arbeit" + +#: app/templates/community/community.html:28 +#: app/templates/community/community.html:49 +#: app/templates/community/community.html:67 +msgid "Not safe for life" +msgstr "Nicht sicher für Leben" + +#: app/templates/community/community.html:76 +#: app/templates/community/community.html:84 +msgid "No posts in this community yet." +msgstr "Noch keine Beiträge in dieser Gemeinschaft." + +#: app/templates/community/community.html:121 +#: app/templates/post/add_reply.html:58 +#: app/templates/post/continue_discussion.html:106 +#: app/templates/post/post.html:181 app/templates/post/post_reply_edit.html:54 +msgid "Search this community" +msgstr "Diese Community durchsuchen" + +#: app/templates/community/community.html:127 +#: app/templates/post/add_reply.html:64 +#: app/templates/post/continue_discussion.html:112 +#: app/templates/post/post.html:187 app/templates/post/post_reply_edit.html:60 +msgid "About community" +msgstr "Über Community" + +#: app/templates/community/community.html:146 +#, python-format +msgid "Only people on %(instance_name)s can post or reply in this community." +msgstr "Nur Personen auf %(instance_name)s können in dieser Community posten oder antworten." + +#: app/templates/community/community.html:156 app/templates/post/post.html:205 +msgid "Related communities" +msgstr "Verwandte Gemeinschaften" + +#: app/templates/community/community.html:162 app/templates/post/post.html:211 +#: app/templates/topic/show_topic.html:85 +msgid "Go to community" +msgstr "Gehe zur Community" + +#: app/templates/community/community.html:175 +#: app/templates/post/add_reply.html:82 +#: app/templates/post/continue_discussion.html:130 +#: app/templates/post/post.html:224 app/templates/post/post_reply_edit.html:78 +msgid "Community Settings" +msgstr "Community-Einstellungen" + +#: app/templates/community/community.html:178 +#: app/templates/post/add_reply.html:85 +#: app/templates/post/continue_discussion.html:133 +#: app/templates/post/post.html:227 app/templates/post/post_reply_edit.html:81 +msgid "Moderate" +msgstr "Moderieren" + +#: app/templates/community/community.html:180 +#: app/templates/community/community_edit.html:15 +#: app/templates/community/community_mod_list.html:15 +#: app/templates/post/add_reply.html:86 +#: app/templates/post/continue_discussion.html:134 +#: app/templates/post/post.html:228 app/templates/post/post_reply_edit.html:82 +#: app/templates/user/_user_nav.html:5 app/templates/user/notifications.html:57 +#: app/templates/user/show_profile.html:121 +msgid "Settings" +msgstr "Einstellungen" + +#: app/templates/community/community_ban_user.html:13 +#, python-format +msgid "Ban \"%(user_name)s\" from %(community_name)s" +msgstr "Banne \"%(user_name)s\" von %(community_name)s" + +#: app/templates/community/community_delete.html:13 +#, python-format +msgid "Delete \"%(community_title)s\"" +msgstr "Lösche \"%(community_title)s\"" + +#: app/templates/community/community_edit.html:51 +#: app/templates/community/community_mod_list.html:16 +msgid "Moderators" +msgstr "Moderieren" + +#: app/templates/community/community_mod_list.html:24 +msgid "Add moderator" +msgstr "Moderator hinzufügen" + +#: app/templates/community/community_mod_list.html:41 +msgid "Remove" +msgstr "Entfernen" + +#: app/templates/domain/domain.html:14 app/templates/domain/domains.html:12 +#: app/templates/domain/domains.html:21 +#: app/templates/domain/domains_blocked.html:21 +#: app/templates/user/filters.html:60 +msgid "Domains" +msgstr "Domänen" + +#: app/templates/domain/domain.html:23 +msgid "No posts in this domain yet." +msgstr "Noch keine Beiträge in dieser Gemeinschaft." + +#: app/templates/domain/domain.html:45 +msgid "Domain management" +msgstr "Domainverwaltung" + +#: app/templates/domain/domain.html:51 app/templates/user/filters.html:71 +#: app/templates/user/filters.html:76 app/templates/user/filters.html:89 +#: app/templates/user/filters.html:94 app/templates/user/filters.html:107 +#: app/templates/user/filters.html:112 app/templates/user/filters.html:125 +#: app/templates/user/filters.html:130 app/templates/user/show_profile.html:52 +msgid "Unblock" +msgstr "Entsperren" + +#: app/templates/domain/domain.html:55 app/templates/user/show_profile.html:54 +msgid "Block" +msgstr "Blockieren" + +#: app/templates/domain/domain.html:61 +#: app/templates/domain/domains_blocked.html:46 +#: app/templates/user/show_profile.html:166 +msgid "Unban" +msgstr "Entbannen" + +#: app/templates/domain/domain.html:65 +msgid "Ban instance-wide" +msgstr "Ban-Instanz breit" + +#: app/templates/domain/domains.html:14 +#, python-format +msgid "Domains containing \"%(search)s\"" +msgstr "Domains mit \"%(search)s\"" + +#: app/templates/domain/domains.html:24 +#: app/templates/domain/domains_blocked.html:24 +msgid "Banned domains" +msgstr "Gesperrte Domains" + +#: app/templates/domain/domains.html:38 +msgid "How many times has something on this domain been posted" +msgstr "Wie oft wurde etwas auf dieser Domain veröffentlicht" + +#: app/templates/domain/domains_blocked.html:12 +msgid "Blocked domains" +msgstr "Gesperrte Domains" + +#: app/templates/domain/domains_blocked.html:14 +#, python-format +msgid "Blocked domains containing \"%(search)s\"" +msgstr "Blockierte Domains mit \"%(search)s\"" + +#: app/templates/domain/domains_blocked.html:46 +msgid "Unbanning this domain allows future posts linking to that domain." +msgstr "Das Entsperren dieser Domain erlaubt zukünftige Beiträge, die auf diese Domain verlinken." + +#: app/templates/domain/domains_blocked.html:48 +msgid "Banning this domain will delete all posts linking to this domain and prevent future posts linking to that domain." +msgstr "Das Verbot dieser Domain löscht alle Beiträge, die auf diese Domain verlinkt werden und verhindert zukünftige Beiträge, die auf diese Domain verlinken." + +#: app/templates/errors/404.html:12 +msgid "Ooops, something is broken!" +msgstr "Hoppla, etwas ist kaputt!" + +#: app/templates/errors/404.html:15 +msgid "The page your browser tried to load could not be found." +msgstr "Die Seite, die Ihr Browser zu laden versucht hat, konnte nicht gefunden werden." + +#: app/templates/errors/404.html:16 app/templates/errors/500.html:16 +msgid "Back" +msgstr "Zurück" + +#: app/templates/errors/500.html:12 +msgid "An unexpected error has occurred" +msgstr "Ein unerwarteter Fehler ist aufgetreten" + +#: app/templates/errors/500.html:15 +msgid "Sorry for the inconvenience! Please let us know about this, so we can repair it and make PieFed better for everyone." +msgstr "Entschuldigen Sie die Unannehmlichkeiten! Bitte teilen Sie uns dies mit, damit wir es reparieren und PieFed für alle besser machen können." + +#: app/templates/post/_comment_voting_buttons.html:3 +msgid "UpVote button." +msgstr "Vote-Knopf hochladen." + +#: app/templates/post/_comment_voting_buttons.html:9 +msgid "Score: " +msgstr "Punkte: " + +#: app/templates/post/_comment_voting_buttons.html:11 +msgid "DownVote button." +msgstr "Bewerten Sie den Knopf herunter." + +#: app/templates/post/_comment_voting_buttons.html:21 +msgid "Score:" +msgstr "Punkte:" + +#: app/templates/post/_post_full.html:21 app/templates/post/_post_full.html:67 +#: app/templates/post/_post_teaser.html:57 +msgid "Potentially emotionally scarring content" +msgstr "Potenziell emotional abschreckender Inhalt" + +#: app/templates/post/_post_full.html:28 app/templates/post/_post_full.html:76 +#: app/templates/post/_post_teaser.html:59 +msgid "Reported. Check post for issues." +msgstr "Berichtet. Prüfen Sie den Beitrag auf Probleme." + +#: app/templates/post/_post_reply_teaser.html:3 +msgid "View context" +msgstr "Kontext anzeigen" + +#: app/templates/post/_post_teaser.html:6 +#: app/templates/post/_post_teaser_masonry.html:6 +msgid "Filtered: " +msgstr "Gefiltert: " + +#: app/templates/post/_post_teaser.html:18 +#: app/templates/post/_post_teaser.html:26 +#: app/templates/post/_post_teaser.html:42 +msgid "Read article" +msgstr "Artikel lesen" + +#: app/templates/post/_post_teaser.html:20 +#: app/templates/post/_post_teaser.html:30 +#: app/templates/post/_post_teaser.html:74 +#: app/templates/post/_post_teaser.html:76 +#: app/templates/post/_post_teaser_masonry.html:16 +#: app/templates/post/_post_teaser_masonry.html:20 +#: app/templates/post/_post_teaser_masonry.html:23 +#: app/templates/post/_post_teaser_masonry.html:55 +msgid "View image" +msgstr "Bild anzeigen" + +#: app/templates/post/_post_teaser.html:22 +#: app/templates/post/_post_teaser.html:34 +msgid "Read post" +msgstr "Beitrag lesen" + +#: app/templates/post/_post_teaser.html:54 +msgid "All posts about this domain" +msgstr "Alle Beiträge zu dieser Domain" + +#: app/templates/post/_post_teaser.html:63 +#, python-format +msgid "Go to community %(name)s" +msgstr "Gehe zur Community %(name)s" + +#: app/templates/post/_post_teaser.html:71 +#: app/templates/post/_post_teaser_masonry.html:47 +#: app/templates/post/_post_teaser_masonry.html:48 +#: app/templates/post/_post_teaser_masonry.html:68 +#: app/templates/post/_post_teaser_masonry.html:69 +msgid "View comments" +msgstr "Kommentare anzeigen" + +#: app/templates/post/_post_teaser.html:71 +msgid "Number of comments:" +msgstr "Anzahl der Kommentare:" + +#: app/templates/post/_post_voting_buttons.html:3 +#, python-format +msgid "UpVote button, %(count)d upvotes so far." +msgstr "Vote-Knopf, %(count)d positive Abstimmungen." + +#: app/templates/post/_post_voting_buttons.html:11 +#, python-format +msgid "DownVote button, %(count)d downvotes so far." +msgstr "Schaltfläche abstimmen, %(count)d negative Abstimmungen." + +#: app/templates/post/_post_voting_buttons_masonry.html:3 +msgid "UpVote" +msgstr "UpVote" + +#: app/templates/post/_post_voting_buttons_masonry.html:10 +msgid "DownVote" +msgstr "Downvote" + +#: app/templates/post/add_reply.html:21 app/templates/post/post.html:23 +msgid "This post is hosted on beehaw.org which has higher standards of behaviour than most places. Be nice." +msgstr "Dieser Beitrag wird auf der beehaw.org gehostet, die einen höheren Verhaltensstandard hat als die meisten anderen Orte. Sei schön." + +#: app/templates/post/continue_discussion.html:44 +#: app/templates/post/post.html:105 +msgid "Reported. Check comment for issues." +msgstr "Berichtet. Überprüfen Sie den Kommentar auf Probleme." + +#: app/templates/post/post.html:26 +msgid "This post is hosted on lemmy.ml which will ban you for saying anything negative about China, Russia or Putin. Tread carefully." +msgstr "Dieser Beitrag wird auf lemmy.ml gehostet, die Sie verbieten wird, weil Sie etwas Negatives über China, Russland oder Putin zu sagen." + +#: app/templates/post/post.html:52 +msgid "Verify your email address to comment" +msgstr "Überprüfen Sie Ihre E-Mail-Adresse um zu kommentieren" + +#: app/templates/post/post.html:55 +msgid "Log in to comment" +msgstr "Zum Kommentar anmelden" + +#: app/templates/post/post.html:58 +msgid "Comments are disabled." +msgstr "Kommentare sind deaktiviert." + +#: app/templates/post/post.html:65 +msgid "Sort by magic" +msgstr "Nach Magie sortieren" + +#: app/templates/post/post.html:68 +msgid "Comments with the most upvotes" +msgstr "Kommentare mit den meisten positiven Bewertungen" + +#: app/templates/post/post.html:71 +msgid "Show newest first" +msgstr "Zeige neueste zuerst" + +#: app/templates/post/post.html:87 +msgid "Author" +msgstr "Autor" + +#: app/templates/post/post.html:101 +msgid "Post creator" +msgstr "Post-Ersteller" + +#: app/templates/post/post.html:102 +msgid "When: " +msgstr "Wann: " + +#: app/templates/post/post.html:131 +msgid "Comment options" +msgstr "Kommentaroptionen" + +#: app/templates/post/post_mea_culpa.html:15 +msgid "If you wish to de-escalate the discussion on your post and now feel like it was a mistake, click the button below." +msgstr "Wenn Sie die Diskussion über Ihren Beitrag deeskalieren möchten und sich nun als Fehler anfühlen, klicken Sie auf den Button unten." + +#: app/templates/post/post_mea_culpa.html:16 +msgid "No further comments will be posted and a message saying you made a mistake in this post will be displayed." +msgstr "Es werden keine weiteren Kommentare veröffentlicht und eine Nachricht angezeigt, die besagt, dass Sie einen Fehler in diesem Beitrag gemacht haben." + +#: app/templates/post/post_mea_culpa.html:17 +msgid "The effect of downvotes on your reputation score will be removed." +msgstr "Der Effekt der Abwärtsabstimmungen auf deinen Reputationspunkt wird entfernt." + +#: app/templates/post/post_options.html:13 +#, python-format +msgid "Options for \"%(post_title)s\"" +msgstr "Optionen für \"%(post_title)s\"" + +#: app/templates/post/post_options.html:18 +#: app/templates/post/post_reply_options.html:18 +msgid "Edit" +msgstr "Editieren" + +#: app/templates/post/post_options.html:24 +msgid "I made a mistake with this post and have changed my mind about the topic" +msgstr "Ich habe mit diesem Beitrag einen Fehler gemacht und meine Meinung zum Thema geändert" + +#: app/templates/post/post_options.html:28 +#, python-format +msgid "Block post author @%(author_name)s" +msgstr "Post-Autor @%(author_name)s blockieren" + +#: app/templates/post/post_options.html:31 +#, python-format +msgid "Ban post author @%(author_name)s from
%(community_name)s" +msgstr "Sperren des Beitrags @%(author_name)s von
%(community_name)s" + +#: app/templates/post/post_options.html:35 +#, python-format +msgid "Block domain %(domain)s" +msgstr "Domain- %(domain)s blockieren" + +#: app/templates/post/post_options.html:39 +#: app/templates/post/post_reply_options.html:27 +#, python-format +msgid "Hide every post from author's instance: %(name)s" +msgstr "Verstecke jeden Beitrag in der Instanz des Autors: %(name)s" + +#: app/templates/post/post_options.html:45 +#, python-format +msgid "View original on %(domain)s" +msgstr "Original auf %(domain)s ansehen" + +#: app/templates/post/post_options.html:50 +#: app/templates/post/post_reply_options.html:34 +msgid "If you want to perform more than one of these (e.g. block and report), hold down Ctrl and click, then complete the operation in the new tabs that open." +msgstr "Wenn Sie mehr als einen von diesen (z. blockieren und melden), halten Sie Strg gedrückt und klicken und schließen Sie dann den Vorgang in den neuen Tabs ab, die sich öffnen." + +#: app/templates/post/post_reply_edit.html:44 +msgid "Unsubscribe" +msgstr "Abmelden" + +#: app/templates/post/post_reply_edit.html:46 +msgid "Subscribe" +msgstr "Abonnieren" + +#: app/templates/post/post_reply_options.html:13 +#, python-format +msgid "Options for comment on \"%(post_title)s\"" +msgstr "Optionen für Kommentar zu \"%(post_title)s\"" + +#: app/templates/post/post_reply_options.html:24 +#, python-format +msgid "Block author @%(author_name)s" +msgstr "Block-Autor @%(author_name)s" + +#: app/templates/post/post_reply_report.html:13 +#, python-format +msgid "Report comment on \"%(post_title)s\" by %(reply_name)s" +msgstr "Kommentar zu \"%(post_title)s\" von %(reply_name)s melden" + +#: app/templates/post/post_report.html:13 +#, python-format +msgid "Report \"%(post_title)s\"" +msgstr "Melde \"%(post_title)s\"" + +#: app/templates/search/results.html:11 +msgid "Search results for" +msgstr "Suchergebnisse für" + +#: app/templates/search/results.html:16 +msgid "No posts match your search." +msgstr "Keine Beiträge stimmen mit Ihrer Suche überein." + +#: app/templates/search/start.html:13 +msgid "Search for posts" +msgstr "Nach Beiträgen suchen" + +#: app/templates/search/start.html:20 +msgid "Example searches:" +msgstr "Beispielsuche:" + +#: app/templates/search/start.html:23 +msgid "star wars" +msgstr "star kriege" + +#: app/templates/search/start.html:24 +msgid "There is an implied \"and\" here. Results will have both words somewhere in them." +msgstr "Es gibt ein implizites \"und\" hier, Ergebnisse werden beide Wörter irgendwo in ihnen." + +#: app/templates/search/start.html:27 +msgid "star or wars" +msgstr "star or kriege" + +#: app/templates/search/start.html:28 +msgid "This will broaden the search to include results that contain any of the words." +msgstr "Dies wird die Suche auf Ergebnisse erweitern, die eines der Wörter enthalten." + +#: app/templates/search/start.html:31 +msgid "star -wars" +msgstr "star -kriege" + +#: app/templates/search/start.html:32 +msgid "To search for things containing \"star\" but not \"wars\" you can put a - before the word you want to exclude." +msgstr "Um nach Dingen zu suchen, die \"Stern\" aber nicht \"Kriege\" enthalten, können Sie eine - vor das Wort setzen, das Sie ausschließen möchten." + +#: app/templates/search/start.html:35 +msgid "\"star wars\"" +msgstr "\"star kriege\"" + +#: app/templates/search/start.html:36 +msgid "Results will have exactly that phrase in them." +msgstr "Die Ergebnisse werden genau diesen Satz enthalten." + +#: app/templates/topic/choose_topics.html:9 +msgid "Please choose at least 3 topics that interest you." +msgstr "Bitte wählen Sie mindestens 3 Themen aus, die Sie interessieren." + +#: app/templates/topic/show_topic.html:23 +msgid "Sub-topics" +msgstr "Unterthemen" + +#: app/templates/topic/show_topic.html:36 +#: app/templates/topic/show_topic.html:44 +msgid "No posts in this topic yet." +msgstr "Noch keine Beiträge in diesem Thema." + +#: app/templates/topic/show_topic.html:79 +msgid "Topic communities" +msgstr "Themengemeinschaften" + +#: app/templates/topic/topic_create_post.html:9 +#, python-format +msgid "Which community within %(topic)s to post in?" +msgstr "In welcher Community innerhalb von %(topic)s, in der du posten möchtest?" + +#: app/templates/topic/topic_create_post.html:17 +#, python-format +msgid "Post in %(name)s" +msgstr "Beitrag in %(name)s" + +#: app/templates/user/_user_nav.html:8 app/templates/user/notifications.html:54 +#: app/templates/user/show_profile.html:118 +msgid "Profile" +msgstr "Profil" + +#: app/templates/user/_user_nav.html:11 +msgid "Blocks & Filters" +msgstr "Blöcke & Filter" + +#: app/templates/user/delete_account.html:15 +#: app/templates/user/edit_settings.html:17 +#: app/templates/user/edit_settings.html:20 +msgid "Change settings" +msgstr "Einstellungen ändern" + +#: app/templates/user/delete_account.html:18 +#, python-format +msgid "Delete %(username)s" +msgstr "%(username)s löschen" + +#: app/templates/user/delete_account.html:20 +#, python-format +msgid "You are about to permanently delete the account with the username \"%(username)s.\" This means your profile will disappear, pictures will be deleted. Text-based posts will stay but look like they are from someone named \"deleted.\"" +msgstr "Sie sind dabei, das Konto mit dem Benutzernamen \"%(username)sdauerhaft zu löschen. Das bedeutet, dass dein Profil verschwindet, Bilder werden gelöscht. Text-basierte Beiträge bleiben bestehen, aber es sieht so aus, als seien sie von jemandem namens \"gelöscht\"" + +#: app/templates/user/delete_account.html:21 +#, python-format +msgid "Once you hit delete, nobody can use \"%(username)s\" as a username again. We are doing this so nobody pretends to be you." +msgstr "Sobald Sie das Löschen gedrückt haben, kann niemand wieder \"%(username)s\" als Benutzernamen verwenden. Wir tun dies, so dass niemand vorgibt, dich zu sein." + +#: app/templates/user/delete_account.html:22 +msgid "We will tell other websites (fediverse instances) that your account is gone. But it's up to them to decide what to do with any copies they have of your stuff. Some websites work differently than ours." +msgstr "Wir werden anderen Websites (feiche Instanzen) mitteilen, dass Ihr Konto verschwunden ist. Aber es liegt an ihnen, zu entscheiden, was sie mit allen Kopien Ihrer Sachen zu tun haben. Einige Webseiten funktionieren anders als unsere." + +#: app/templates/user/delete_account.html:23 +msgid "Remember, once you do this, there's no going back. Are you sure you want to continue?" +msgstr "Denk daran, wenn du dies tust, es gibt kein Zurück mehr. Bist du sicher, dass du fortfahren möchtest?" + +#: app/templates/user/edit_filters.html:16 app/templates/user/filters.html:16 +#: app/templates/user/filters.html:19 +msgid "Filters" +msgstr "Filtern" + +#: app/templates/user/edit_filters.html:18 app/user/routes.py:713 +msgid "Edit filter" +msgstr "Filter bearbeiten" + +#: app/templates/user/edit_filters.html:20 +#: app/templates/user/edit_filters.html:27 app/templates/user/filters.html:22 +#: app/user/routes.py:673 +msgid "Add filter" +msgstr "Neuer Filter" + +#: app/templates/user/edit_filters.html:25 +#, python-format +msgid "Filter %(name)s" +msgstr "%(name)s filtern" + +#: app/templates/user/edit_filters.html:33 +msgid "Filter in these places" +msgstr "An diesen Orten filtern" + +#: app/templates/user/edit_filters.html:39 +msgid "One per line. Case does not matter." +msgstr "Ein Fall pro Zeile, spielt keine Rolle." + +#: app/templates/user/edit_filters.html:41 +msgid "Stop applying this filter after this date. Optional." +msgstr "Diesen Filter nach diesem Datum nicht mehr anwenden. Optional." + +#: app/templates/user/edit_profile.html:16 app/user/routes.py:147 +#: app/user/routes.py:212 +msgid "Edit profile" +msgstr "Profil bearbeiten" + +#: app/templates/user/edit_profile.html:19 +#, python-format +msgid "Edit profile of %(name)s" +msgstr "Profil von %(name)s bearbeiten" + +#: app/templates/user/edit_profile.html:58 +msgid "Delete account" +msgstr "Konto löschen" + +#: app/templates/user/email_notifs_unsubscribed.html:9 +#: app/templates/user/newsletter_unsubscribed.html:9 +msgid "Unsubscribed" +msgstr "Abgemeldet" + +#: app/templates/user/email_notifs_unsubscribed.html:10 +msgid "You have unsubscribed from emails about unread notifications. We might email you for other reasons, though." +msgstr "Sie haben sich von E-Mails über ungelesene Benachrichtigungen abgemeldet. Wir können Ihnen jedoch aus anderen Gründen eine E-Mail senden." + +#: app/templates/user/email_notifs_unsubscribed.html:11 +#: app/templates/user/newsletter_unsubscribed.html:11 +msgid "More email settings" +msgstr "Weitere E-Mail-Einstellungen" + +#: app/templates/user/filters.html:25 +msgid "Filters can hide posts that contain keywords you specify, either by making them less noticeable or invisible." +msgstr "Filter können Beiträge ausblenden, die Keywords enthalten, die Sie angeben, entweder indem Sie sie weniger auffällig oder unsichtbar machen." + +#: app/templates/user/filters.html:30 +msgid "Keywords" +msgstr "Stichwörter" + +#: app/templates/user/filters.html:32 +msgid "Expires" +msgstr "Gültig bis" + +#: app/templates/user/filters.html:39 +msgid "Invisible" +msgstr "Unsichtbar" + +#: app/templates/user/filters.html:39 +msgid "Semi-transparent" +msgstr "Halbtransparent" + +#: app/templates/user/filters.html:49 +msgid "No filters defined yet." +msgstr "Noch keine Filter definiert." + +#: app/templates/user/filters.html:62 +msgid "Instances" +msgstr "Instanzen" + +#: app/templates/user/filters.html:81 +msgid "No blocked people" +msgstr "Keine blockierten Personen" + +#: app/templates/user/filters.html:99 +msgid "No blocked communities" +msgstr "Keine blockierten Gemeinschaften" + +#: app/templates/user/filters.html:117 +msgid "No blocked domains" +msgstr "Keine blockierten Domains" + +#: app/templates/user/filters.html:135 +msgid "No blocked instances" +msgstr "Keine blockierten Instanzen" + +#: app/templates/user/newsletter_unsubscribed.html:10 +msgid "You have unsubscribed from the email newsletter. We might email you for other reasons, though." +msgstr "Sie haben den E-Mail-Newsletter abbestellt. Wir können Ihnen aber aus anderen Gründen eine E-Mail senden." + +#: app/templates/user/notifications.html:25 +msgid "Mark all as read" +msgstr "Alle als gelesen markieren" + +#: app/templates/user/notifications.html:49 +#: app/templates/user/show_profile.html:113 +msgid "Manage" +msgstr "Verwalten" + +#: app/templates/user/notifications.html:95 +#: app/templates/user/show_profile.html:189 +msgid "Upvoted" +msgstr "Aufgestuft" + +#: app/templates/user/people.html:32 +msgid "No people to show" +msgstr "Keine Personen anzuzeigen" + +#: app/templates/user/show_profile.html:24 +#: app/templates/user/show_profile.html:29 +msgid "Profile pic" +msgstr "Profilbild" + +#: app/templates/user/show_profile.html:47 +msgid "Send message" +msgstr "Nachricht senden" + +#: app/templates/user/show_profile.html:49 +msgid "Send message with matrix chat" +msgstr "Nachricht mit Matrixchat senden" + +#: app/templates/user/show_profile.html:49 +msgid "Send message using Matrix" +msgstr "Nachricht mit Matrix senden" + +#: app/templates/user/show_profile.html:60 +msgid "Attitude" +msgstr "Attribut" + +#: app/templates/user/show_profile.html:60 +msgid "Ratio of upvotes cast to downvotes cast. Higher is more positive." +msgstr "Verhältnis der abgegebenen Stimmen zu den abgegebenen Niederstimmungen. Höhere Stimmen sind positiver." + +#: app/templates/user/show_profile.html:69 +msgid "Post pagination" +msgstr "Beitragsseitenangabe" + +#: app/templates/user/show_profile.html:82 +msgid "No posts yet." +msgstr "Noch keine Beiträge." + +#: app/templates/user/show_profile.html:92 +msgid "Comment pagination" +msgstr "Kommentar-Seiteneinstellung" + +#: app/templates/user/show_profile.html:105 +msgid "No comments yet." +msgstr "Noch keine Kommentare." + +#: app/templates/user/show_profile.html:134 +msgid "Member of" +msgstr "Mitglied von" + +#: app/templates/user/show_profile.html:159 +msgid "Crush" +msgstr "Zerkleinern" + +#: app/templates/user/show_profile.html:179 +msgid "Ban + Purge" +msgstr "Bann + Bereinigen" + +#: app/templates/user/user_report.html:13 +#, python-format +msgid "Report \"%(user_name)s\"" +msgstr "Melde \"%(user_name)s\"" + +#: app/topic/forms.py:13 +msgid "Choose some topics you are interested in" +msgstr "Wählen Sie einige Themen aus, an denen Sie interessiert sind" + +#: app/topic/forms.py:14 +msgid "Choose" +msgstr "Auswählen" + +#: app/topic/routes.py:168 +msgid "You have joined some communities relating to those interests. Find them on the Topics menu or browse the home page." +msgstr "Du bist einigen Gemeinschaften in Bezug auf diese Interessen beigetreten. Du findest sie im Themen-Menü oder durchstöbere die Homepage." + +#: app/topic/routes.py:172 +msgid "You did not choose any topics. Would you like to choose individual communities instead?" +msgstr "Sie haben keine Themen ausgewählt. Möchten Sie stattdessen einzelne Gemeinschaften wählen?" + +#: app/user/forms.py:13 +msgid "Display name" +msgstr "Anzeigename" + +#: app/user/forms.py:15 +msgid "Set new password" +msgstr "Passwort festlegen" + +#: app/user/forms.py:22 +msgid "Save profile" +msgstr "Profil speichern" + +#: app/user/forms.py:26 +msgid "That email address is already in use by another account" +msgstr "Diese E-Mail-Adresse wird bereits von einem anderen Konto verwendet" + +#: app/user/forms.py:30 +msgid "Matrix user ids start with @" +msgstr "Matrix-Benutzer-Ids beginnen mit @" + +#: app/user/forms.py:35 +msgid "Receive email about missed notifications" +msgstr "E-Mail über verpasste Benachrichtigungen erhalten" + +#: app/user/forms.py:39 +msgid "Use markdown editor GUI when writing" +msgstr "Benutze Markdown Editor GUI beim Schreiben" + +#: app/user/forms.py:41 +msgid "My posts appear in search results" +msgstr "Meine Beiträge erscheinen in Suchergebnissen" + +#: app/user/forms.py:43 +msgid "Import community subscriptions and user blocks from Lemmy" +msgstr "Community-Abonnements und Benutzerblöcke von Lemmy importieren" + +#: app/user/forms.py:49 +msgid "By default, sort posts by" +msgstr "Sortiere standardmäßig Beiträge nach" + +#: app/user/forms.py:50 +msgid "Theme" +msgstr "Thema" + +#: app/user/forms.py:51 +msgid "Save settings" +msgstr "Einstellungen speichern" + +#: app/user/forms.py:55 +msgid "Yes, delete my account" +msgstr "Ja, mein Konto löschen" + +#: app/user/forms.py:66 +msgid "Malicious reporting" +msgstr "Bösartige Berichterstattung" + +#: app/user/forms.py:90 +msgid "Home feed" +msgstr "Startseite" + +#: app/user/forms.py:91 +msgid "Posts in communities" +msgstr "Beiträge in Gemeinschaften" + +#: app/user/forms.py:92 +msgid "Comments on posts" +msgstr "Kommentare zu Beiträgen" + +#: app/user/forms.py:93 +msgid "Make semi-transparent" +msgstr "Halbtransparent" + +#: app/user/forms.py:93 +msgid "Hide completely" +msgstr "Verstecke komplett" + +#: app/user/forms.py:94 +msgid "Action to take" +msgstr "Zu ergreifende Aktion" + +#: app/user/forms.py:95 +msgid "Keywords that trigger this filter" +msgstr "Suchbegriffe, die diesen Filter auslösen" + +#: app/user/forms.py:98 +msgid "Expire after" +msgstr "Verfällt nach" + +#: app/user/routes.py:42 +msgid "This user has been banned." +msgstr "Dieser Benutzer wurde gesperrt." + +#: app/user/routes.py:44 +msgid "This user has been deleted." +msgstr "Dieser Benutzer wurde gelöscht." + +#: app/user/routes.py:77 +#, python-format +msgid "Posts by %(user_name)s" +msgstr "Beiträge von %(user_name)s" + +#: app/user/routes.py:194 +msgid "Your subscriptions and blocks are being imported. If you have many it could take a few minutes." +msgstr "Deine Abonnements und Blöcke werden importiert. Wenn du viele hast, kann es ein paar Minuten dauern." + +#: app/user/routes.py:229 +msgid "You cannot ban yourself." +msgstr "Du kannst dich nicht selbst bannen." + +#: app/user/routes.py:254 +msgid "You cannot unban yourself." +msgstr "Du kannst dich nicht selbst entbannen." + +#: app/user/routes.py:278 +msgid "You cannot block yourself." +msgstr "Du kannst dich nicht selbst bannen." + +#: app/user/routes.py:307 +msgid "You cannot unblock yourself." +msgstr "Du kannst dich nicht selbst entbannen." + +#: app/user/routes.py:352 +#, python-format +msgid "%(user_name)s has been reported, thank you!" +msgstr "%(user_name)s wurde gemeldet, danke!" + +#: app/user/routes.py:358 +msgid "Report user" +msgstr "Benutzer melden" + +#: app/user/routes.py:375 +msgid "You cannot delete yourself." +msgstr "Du kannst dich nicht selbst bannen." + +#: app/user/routes.py:432 +msgid "Account deletion in progress. Give it a few minutes." +msgstr "Account wird gelöscht. Geben Sie ihm ein paar Minuten." + +#: app/user/routes.py:437 +msgid "Delete my account" +msgstr "Mein Konto löschen" + +#: app/user/routes.py:482 +msgid "You cannot purge yourself." +msgstr "Du kannst dich nicht selbst bereinigen." + +#: app/user/routes.py:559 +msgid "All notifications marked as read." +msgstr "Alle Benachrichtigungen als gelesen markiert." + +#: app/user/routes.py:730 +msgid "Filter deleted." +msgstr "Filter gelöscht." + diff --git a/app/translations/fr/LC_MESSAGES/messages.po b/app/translations/fr/LC_MESSAGES/messages.po new file mode 100644 index 00000000..e49a5645 --- /dev/null +++ b/app/translations/fr/LC_MESSAGES/messages.po @@ -0,0 +1,2683 @@ +# French translations for PROJECT. +# Copyright (C) 2024 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2024-03-17 19:06+1300\n" +"PO-Revision-Date: 2024-03-17 19:10+1300\n" +"Last-Translator: FULL NAME \n" +"Language: fr\n" +"Language-Team: fr \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: app/__init__.py:26 +msgid "Please log in to access this page." +msgstr "" + +#: app/cli.py:238 app/main/routes.py:300 +msgid "[PieFed] You have unread notifications" +msgstr "" + +#: app/email.py:16 +msgid "[PieFed] Reset Your Password" +msgstr "" + +#: app/email.py:26 +msgid "[PieFed] Please verify your email address" +msgstr "" + +#: app/email.py:34 +msgid "Your application has been approved - welcome to PieFed" +msgstr "" + +#: app/email.py:34 +msgid "Welcome to PieFed" +msgstr "" + +#: app/activitypub/util.py:1205 app/post/routes.py:85 app/post/routes.py:472 +#, python-format +msgid "Reply from %(name)s on %(post_title)s" +msgstr "" + +#: app/admin/forms.py:13 app/admin/forms.py:97 app/community/forms.py:18 +#: app/templates/community/community_mod_list.html:30 +#: app/templates/user/filters.html:29 app/templates/user/filters.html:70 +#: app/templates/user/filters.html:88 app/templates/user/filters.html:106 +#: app/templates/user/filters.html:124 app/user/forms.py:89 +msgid "Name" +msgstr "" + +#: app/admin/forms.py:14 +msgid "Tagline" +msgstr "" + +#: app/admin/forms.py:15 +msgid "Icon" +msgstr "" + +#: app/admin/forms.py:18 +msgid "Sidebar" +msgstr "" + +#: app/admin/forms.py:19 +msgid "Legal information" +msgstr "" + +#: app/admin/forms.py:20 app/admin/forms.py:36 app/admin/forms.py:44 +#: app/admin/forms.py:81 app/admin/forms.py:100 app/admin/forms.py:126 +#: app/admin/forms.py:188 app/community/forms.py:56 app/community/forms.py:95 +#: app/user/forms.py:99 +msgid "Save" +msgstr "" + +#: app/admin/forms.py:24 +msgid "Enable downvotes" +msgstr "" + +#: app/admin/forms.py:25 +msgid "Allow local image posts" +msgstr "" + +#: app/admin/forms.py:26 +msgid "Days to cache images from remote instances for" +msgstr "" + +#: app/admin/forms.py:27 +msgid "Allow NSFW communities" +msgstr "" + +#: app/admin/forms.py:28 +msgid "Allow NSFL communities and posts" +msgstr "" + +#: app/admin/forms.py:29 +msgid "Only admins can create new local communities" +msgstr "" + +#: app/admin/forms.py:30 +msgid "Notify admins about reports, not just moderators" +msgstr "" + +#: app/admin/forms.py:31 +msgid "Open" +msgstr "" + +#: app/admin/forms.py:31 +msgid "Require application" +msgstr "" + +#: app/admin/forms.py:31 +msgid "Closed" +msgstr "" + +#: app/admin/forms.py:32 +msgid "Registration mode" +msgstr "" + +#: app/admin/forms.py:33 +msgid "Question to ask people applying for an account" +msgstr "" + +#: app/admin/forms.py:34 +msgid "Log ActivityPub JSON for debugging" +msgstr "" + +#: app/admin/forms.py:35 +msgid "Default theme" +msgstr "" + +#: app/admin/forms.py:40 +msgid "Allowlist instead of blocklist" +msgstr "" + +#: app/admin/forms.py:41 +msgid "Allow federation with these instances" +msgstr "" + +#: app/admin/forms.py:42 +msgid "Blocklist instead of allowlist" +msgstr "" + +#: app/admin/forms.py:43 +msgid "Deny federation with these instances" +msgstr "" + +#: app/admin/forms.py:48 app/community/forms.py:42 app/community/forms.py:80 +#: app/community/forms.py:82 app/community/forms.py:86 +msgid "Title" +msgstr "" + +#: app/admin/forms.py:49 app/admin/forms.py:98 app/community/forms.py:19 +msgid "Url" +msgstr "" + +#: app/admin/forms.py:50 app/community/forms.py:20 app/community/forms.py:43 +msgid "Description" +msgstr "" + +#: app/admin/forms.py:51 app/community/forms.py:21 app/community/forms.py:44 +msgid "Icon image" +msgstr "" + +#: app/admin/forms.py:52 app/community/forms.py:22 app/community/forms.py:45 +msgid "Banner image" +msgstr "" + +#: app/admin/forms.py:53 app/community/forms.py:23 app/community/forms.py:46 +msgid "Rules" +msgstr "" + +#: app/admin/forms.py:54 app/community/forms.py:47 +msgid "Porn community" +msgstr "" + +#: app/admin/forms.py:55 +msgid "Banned - no new posts accepted" +msgstr "" + +#: app/admin/forms.py:56 app/community/forms.py:48 +msgid "Only accept posts from current instance" +msgstr "" + +#: app/admin/forms.py:57 app/community/forms.py:49 +msgid "Only moderators can post" +msgstr "" + +#: app/admin/forms.py:58 app/community/forms.py:50 +msgid "New moderators wanted" +msgstr "" + +#: app/admin/forms.py:59 +msgid "Posts show on home page" +msgstr "" + +#: app/admin/forms.py:60 +msgid "Posts can be popular" +msgstr "" + +#: app/admin/forms.py:61 +msgid "Posts show in All list" +msgstr "" + +#: app/admin/forms.py:62 +msgid "Low quality / toxic - upvotes in here don't add to reputation" +msgstr "" + +#: app/admin/forms.py:63 +msgid "Forever" +msgstr "" + +#: app/admin/forms.py:64 +msgid "1 week" +msgstr "" + +#: app/admin/forms.py:65 +msgid "2 weeks" +msgstr "" + +#: app/admin/forms.py:66 +msgid "1 month" +msgstr "" + +#: app/admin/forms.py:67 +msgid "2 months" +msgstr "" + +#: app/admin/forms.py:68 +msgid "3 months" +msgstr "" + +#: app/admin/forms.py:69 +msgid "6 months" +msgstr "" + +#: app/admin/forms.py:70 +msgid "1 year" +msgstr "" + +#: app/admin/forms.py:71 +msgid "2 years" +msgstr "" + +#: app/admin/forms.py:72 +msgid "5 years" +msgstr "" + +#: app/admin/forms.py:73 +msgid "10 years" +msgstr "" + +#: app/admin/forms.py:75 +msgid "Retain content" +msgstr "" + +#: app/admin/forms.py:76 app/community/forms.py:51 +msgid "Topic" +msgstr "" + +#: app/admin/forms.py:77 app/community/forms.py:52 +#: app/templates/community/_community_nav.html:23 +msgid "List" +msgstr "" + +#: app/admin/forms.py:78 app/community/forms.py:53 +msgid "Masonry" +msgstr "" + +#: app/admin/forms.py:79 app/community/forms.py:54 +msgid "Wide masonry" +msgstr "" + +#: app/admin/forms.py:80 app/community/forms.py:55 +msgid "Layout" +msgstr "" + +#: app/admin/forms.py:87 app/community/forms.py:32 +msgid "Url is required." +msgstr "" + +#: app/admin/forms.py:91 app/community/forms.py:36 +msgid "- cannot be in Url. Use _ instead?" +msgstr "" + +#: app/admin/forms.py:99 +msgid "Parent topic" +msgstr "" + +#: app/admin/forms.py:104 app/auth/forms.py:10 app/auth/forms.py:17 +#: app/community/forms.py:60 +msgid "User name" +msgstr "" + +#: app/admin/forms.py:106 app/admin/forms.py:169 app/user/forms.py:14 +msgid "Email address" +msgstr "" + +#: app/admin/forms.py:107 app/auth/forms.py:11 app/auth/forms.py:20 +#: app/auth/forms.py:74 +msgid "Password" +msgstr "" + +#: app/admin/forms.py:109 app/auth/forms.py:22 app/auth/forms.py:76 +msgid "Repeat password" +msgstr "" + +#: app/admin/forms.py:110 app/admin/forms.py:168 app/user/forms.py:17 +msgid "Bio" +msgstr "" + +#: app/admin/forms.py:111 app/admin/forms.py:170 app/user/forms.py:18 +msgid "Matrix User ID" +msgstr "" + +#: app/admin/forms.py:112 app/admin/forms.py:171 app/user/forms.py:19 +msgid "Avatar image" +msgstr "" + +#: app/admin/forms.py:113 app/admin/forms.py:172 app/user/forms.py:20 +msgid "Top banner image" +msgstr "" + +#: app/admin/forms.py:114 app/admin/forms.py:173 app/user/forms.py:21 +msgid "This profile is a bot" +msgstr "" + +#: app/admin/forms.py:115 app/admin/forms.py:174 +msgid "Email address is verified" +msgstr "" + +#: app/admin/forms.py:116 app/admin/forms.py:175 +msgid "Banned" +msgstr "" + +#: app/admin/forms.py:117 app/admin/forms.py:176 app/user/forms.py:34 +msgid "Subscribe to email newsletter" +msgstr "" + +#: app/admin/forms.py:118 app/admin/forms.py:177 app/user/forms.py:36 +msgid "Hide posts by bots" +msgstr "" + +#: app/admin/forms.py:119 app/admin/forms.py:178 app/user/forms.py:37 +msgid "Show NSFW posts" +msgstr "" + +#: app/admin/forms.py:120 app/admin/forms.py:179 app/user/forms.py:38 +msgid "Show NSFL posts" +msgstr "" + +#: app/admin/forms.py:121 app/admin/forms.py:183 +msgid "User" +msgstr "" + +#: app/admin/forms.py:122 app/admin/forms.py:184 +msgid "Staff" +msgstr "" + +#: app/admin/forms.py:123 app/admin/forms.py:185 app/admin/routes.py:29 +#: app/templates/base.html:180 +msgid "Admin" +msgstr "" + +#: app/admin/forms.py:125 app/admin/forms.py:187 +msgid "Role" +msgstr "" + +#: app/admin/forms.py:131 app/auth/forms.py:32 +msgid "An account with this email address already exists." +msgstr "" + +#: app/admin/forms.py:135 app/auth/forms.py:36 +msgid "User names cannot contain @." +msgstr "" + +#: app/admin/forms.py:139 app/auth/forms.py:40 +msgid "This username was used in the past and cannot be reused." +msgstr "" + +#: app/admin/forms.py:141 app/auth/forms.py:42 +msgid "An account with this user name already exists." +msgstr "" + +#: app/admin/forms.py:144 app/auth/forms.py:45 +msgid "A community with this name exists so it cannot be used for a user." +msgstr "" + +#: app/admin/forms.py:151 app/admin/forms.py:164 app/auth/forms.py:52 +#: app/auth/forms.py:65 +msgid "This password is too common." +msgstr "" + +#: app/admin/forms.py:161 app/auth/forms.py:62 +msgid "This password is not secure." +msgstr "" + +#: app/admin/forms.py:180 app/user/forms.py:40 +msgid "Show profile in user list" +msgstr "" + +#: app/admin/forms.py:181 +msgid "Allow search engines to index this profile" +msgstr "" + +#: app/admin/forms.py:182 app/user/forms.py:42 +msgid "Manually approve followers" +msgstr "" + +#: app/admin/forms.py:192 +msgid "Subject" +msgstr "" + +#: app/admin/forms.py:193 +msgid "Body (text)" +msgstr "" + +#: app/admin/forms.py:194 +msgid "Body (html)" +msgstr "" + +#: app/admin/forms.py:195 +msgid "Test mode" +msgstr "" + +#: app/admin/forms.py:196 app/admin/routes.py:732 +msgid "Send newsletter" +msgstr "" + +#: app/admin/routes.py:57 app/templates/admin/_nav.html:4 +msgid "Site profile" +msgstr "" + +#: app/admin/routes.py:102 app/templates/admin/_nav.html:5 +msgid "Misc settings" +msgstr "" + +#: app/admin/routes.py:133 +msgid "Admin settings saved" +msgstr "" + +#: app/admin/routes.py:143 +msgid "Federation settings" +msgstr "" + +#: app/admin/routes.py:165 +msgid "ActivityPub Log" +msgstr "" + +#: app/admin/routes.py:175 +msgid "Activity JSON" +msgstr "" + +#: app/admin/routes.py:210 app/community/routes.py:215 app/main/routes.py:181 +#: app/post/routes.py:211 app/templates/admin/_nav.html:6 +#: app/templates/list_communities.html:51 app/templates/user/filters.html:58 +#: app/templates/user/notifications.html:66 +#: app/templates/user/show_profile.html:130 +msgid "Communities" +msgstr "" + +#: app/admin/routes.py:262 app/admin/routes.py:358 app/admin/routes.py:383 +#: app/admin/routes.py:578 app/community/routes.py:630 +msgid "Saved" +msgstr "" + +#: app/admin/routes.py:266 +msgid "" +"This is a remote community - most settings here will be regularly " +"overwritten with data from the original server." +msgstr "" + +#: app/admin/routes.py:283 app/community/routes.py:642 +#: app/templates/community/community_edit.html:20 +msgid "Edit community" +msgstr "" + +#: app/admin/routes.py:302 app/community/routes.py:664 +msgid "Community deleted" +msgstr "" + +#: app/admin/routes.py:336 app/community/routes.py:201 app/post/routes.py:197 +#: app/templates/admin/_nav.html:7 app/templates/base.html:134 +#: app/templates/base.html:152 app/templates/topic/show_topic.html:14 +msgid "Topics" +msgstr "" + +#: app/admin/routes.py:361 app/templates/admin/topics.html:35 +msgid "Add topic" +msgstr "" + +#: app/admin/routes.py:389 +msgid "Edit topic" +msgstr "" + +#: app/admin/routes.py:404 +msgid "Topic deleted" +msgstr "" + +#: app/admin/routes.py:406 +msgid "Cannot delete topic with communities assigned to it." +msgstr "" + +#: app/admin/routes.py:433 app/templates/admin/_nav.html:8 +msgid "Users" +msgstr "" + +#: app/admin/routes.py:463 +msgid "Problematic users" +msgstr "" + +#: app/admin/routes.py:484 +msgid "Bad posts" +msgstr "" + +#: app/admin/routes.py:517 +msgid "Registration approved." +msgstr "" + +#: app/admin/routes.py:574 +msgid "" +"Permissions are cached for 50 seconds so new admin roles won't take " +"effect immediately." +msgstr "" + +#: app/admin/routes.py:582 +msgid "" +"This is a remote user - most settings here will be regularly overwritten " +"with data from the original server." +msgstr "" + +#: app/admin/routes.py:599 +msgid "Edit user" +msgstr "" + +#: app/admin/routes.py:664 +msgid "User added" +msgstr "" + +#: app/admin/routes.py:667 +msgid "Add user" +msgstr "" + +#: app/admin/routes.py:691 +msgid "User deleted" +msgstr "" + +#: app/admin/routes.py:714 +msgid "Reports" +msgstr "" + +#: app/admin/util.py:125 +msgid "None" +msgstr "" + +#: app/auth/forms.py:12 +msgid "Low bandwidth mode" +msgstr "" + +#: app/auth/forms.py:13 +msgid "Log In" +msgstr "" + +#: app/auth/forms.py:18 app/auth/forms.py:19 app/auth/forms.py:69 +msgid "Email" +msgstr "" + +#: app/auth/forms.py:24 +msgid "Why would you like to join this site?" +msgstr "" + +#: app/auth/forms.py:27 app/auth/routes.py:140 app/templates/base.html:141 +msgid "Register" +msgstr "" + +#: app/auth/forms.py:70 +msgid "Request password reset" +msgstr "" + +#: app/auth/forms.py:78 +msgid "Set password" +msgstr "" + +#: app/auth/routes.py:29 app/auth/routes.py:32 +msgid "No account exists with that user name." +msgstr "" + +#: app/auth/routes.py:36 +msgid "" +"Invalid password. Please reset " +"your password." +msgstr "" + +#: app/auth/routes.py:39 +msgid "Invalid password" +msgstr "" + +#: app/auth/routes.py:42 +msgid "You have been banned." +msgstr "" + +#: app/auth/routes.py:74 +msgid "Login" +msgstr "" + +#: app/auth/routes.py:97 +msgid "Sorry, you cannot use that email address" +msgstr "" + +#: app/auth/routes.py:99 +msgid "Sorry, you cannot use that user name" +msgstr "" + +#: app/auth/routes.py:106 +#, python-format +msgid "Your username contained special letters so it was changed to %(name)s." +msgstr "" + +#: app/auth/routes.py:145 +msgid "Account under review" +msgstr "" + +#: app/auth/routes.py:150 app/templates/auth/check_email.html:8 +msgid "Check your email" +msgstr "" + +#: app/auth/routes.py:161 +msgid "Sorry, you cannot use that email address." +msgstr "" + +#: app/auth/routes.py:166 +msgid "Check your email for a link to reset your password." +msgstr "" + +#: app/auth/routes.py:169 +msgid "No account with that email address exists" +msgstr "" + +#: app/auth/routes.py:171 +msgid "Reset Password" +msgstr "" + +#: app/auth/routes.py:185 +#, python-format +msgid "" +"Your password has been reset. Please use it to log in with user name of " +"%(name)s." +msgstr "" + +#: app/auth/routes.py:205 +msgid "Thank you for verifying your email address." +msgstr "" + +#: app/auth/routes.py:207 +msgid "Email address validation failed." +msgstr "" + +#: app/chat/forms.py:13 +msgid "Message" +msgstr "" + +#: app/chat/forms.py:14 +msgid "Reply" +msgstr "" + +#: app/chat/forms.py:18 app/post/forms.py:16 app/user/forms.py:60 +msgid "Spam" +msgstr "" + +#: app/chat/forms.py:19 app/post/forms.py:16 app/user/forms.py:61 +msgid "Harassment" +msgstr "" + +#: app/chat/forms.py:20 app/post/forms.py:17 app/user/forms.py:62 +msgid "Threatening violence" +msgstr "" + +#: app/chat/forms.py:21 app/user/forms.py:63 +msgid "Promoting hate / genocide" +msgstr "" + +#: app/chat/forms.py:22 app/post/forms.py:18 app/user/forms.py:64 +msgid "Misinformation / disinformation" +msgstr "" + +#: app/chat/forms.py:23 app/post/forms.py:19 app/user/forms.py:65 +msgid "Racism, sexism, transphobia" +msgstr "" + +#: app/chat/forms.py:24 app/post/forms.py:21 app/user/forms.py:68 +msgid "Minor abuse or sexualization" +msgstr "" + +#: app/chat/forms.py:25 app/post/forms.py:22 app/user/forms.py:69 +msgid "Non-consensual intimate media" +msgstr "" + +#: app/chat/forms.py:26 app/post/forms.py:23 app/user/forms.py:70 +msgid "Prohibited transaction" +msgstr "" + +#: app/chat/forms.py:26 app/post/forms.py:23 app/user/forms.py:70 +msgid "Impersonation" +msgstr "" + +#: app/chat/forms.py:27 app/post/forms.py:24 app/user/forms.py:71 +msgid "Copyright violation" +msgstr "" + +#: app/chat/forms.py:27 app/post/forms.py:24 app/user/forms.py:71 +msgid "Trademark violation" +msgstr "" + +#: app/chat/forms.py:28 app/post/forms.py:25 app/user/forms.py:72 +msgid "Self-harm or suicide" +msgstr "" + +#: app/chat/forms.py:29 app/community/forms.py:155 app/post/forms.py:26 +#: app/user/forms.py:73 +msgid "Other" +msgstr "" + +#: app/chat/forms.py:30 app/community/forms.py:70 app/community/forms.py:157 +#: app/post/forms.py:27 app/user/forms.py:74 +msgid "Reason" +msgstr "" + +#: app/chat/forms.py:31 app/community/forms.py:158 app/post/forms.py:28 +#: app/user/forms.py:75 +msgid "More info" +msgstr "" + +#: app/chat/forms.py:33 app/community/forms.py:160 app/post/forms.py:30 +#: app/templates/user/show_profile.html:56 app/user/forms.py:77 +msgid "Report" +msgstr "" + +#: app/chat/routes.py:49 +#, python-format +msgid "Chat with %(name)s" +msgstr "" + +#: app/chat/routes.py:69 +msgid "Send" +msgstr "" + +#: app/chat/routes.py:79 app/templates/chat/new_message.html:14 +#, python-format +msgid "New message to \"%(recipient_name)s\"" +msgstr "" + +#: app/chat/routes.py:124 +msgid "Conversation deleted" +msgstr "" + +#: app/chat/routes.py:135 +msgid "Instance blocked." +msgstr "" + +#: app/chat/routes.py:165 +msgid "This conversation has been reported, thank you!" +msgstr "" + +#: app/chat/routes.py:170 +msgid "Report conversation" +msgstr "" + +#: app/chat/util.py:58 +#, python-format +msgid "Message failed to send to %(name)s." +msgstr "" + +#: app/chat/util.py:60 +msgid "Message sent." +msgstr "" + +#: app/community/forms.py:26 +msgid "Create" +msgstr "" + +#: app/community/forms.py:61 +msgid "Add" +msgstr "" + +#: app/community/forms.py:65 +msgid "Community address" +msgstr "" + +#: app/community/forms.py:66 app/search/routes.py:52 +#: app/templates/base.html:193 app/templates/community/add_remote.html:13 +#: app/templates/domain/domains.html:29 +#: app/templates/domain/domains_blocked.html:29 app/templates/index.html:40 +#: app/templates/list_communities.html:36 app/templates/search/results.html:38 +msgid "Search" +msgstr "" + +#: app/community/forms.py:71 +msgid "Ban until" +msgstr "" + +#: app/community/forms.py:72 +msgid "Also delete all their posts" +msgstr "" + +#: app/community/forms.py:73 +msgid "Also delete all their comments" +msgstr "" + +#: app/community/forms.py:74 app/templates/domain/domains_blocked.html:48 +#: app/templates/user/show_profile.html:170 +msgid "Ban" +msgstr "" + +#: app/community/forms.py:78 app/templates/list_communities.html:56 +msgid "Community" +msgstr "" + +#: app/community/forms.py:81 app/community/forms.py:83 +#: app/community/forms.py:88 app/post/forms.py:10 +msgid "Body" +msgstr "" + +#: app/community/forms.py:85 +msgid "URL" +msgstr "" + +#: app/community/forms.py:87 +msgid "Alt text" +msgstr "" + +#: app/community/forms.py:90 +msgid "Image" +msgstr "" + +#: app/community/forms.py:92 +msgid "NSFW" +msgstr "" + +#: app/community/forms.py:93 +msgid "Gore/gross" +msgstr "" + +#: app/community/forms.py:94 app/post/forms.py:11 +#: app/templates/post/_post_notification_toggle.html:4 +#: app/templates/post/_reply_notification_toggle.html:4 +msgid "Notify about replies" +msgstr "" + +#: app/community/forms.py:105 app/community/forms.py:109 +#: app/community/forms.py:120 +msgid "Title is required." +msgstr "" + +#: app/community/forms.py:112 +msgid "URL is required." +msgstr "" + +#: app/community/forms.py:116 +#, python-format +msgid "Links to %(domain)s are not allowed." +msgstr "" + +#: app/community/forms.py:123 +msgid "File is required." +msgstr "" + +#: app/community/forms.py:140 +msgid "Images cannot be posted to local communities." +msgstr "" + +#: app/community/forms.py:142 +msgid "Poll not implemented yet." +msgstr "" + +#: app/community/forms.py:149 +msgid "Breaks instance rules" +msgstr "" + +#: app/community/forms.py:150 +msgid "Abandoned by moderators" +msgstr "" + +#: app/community/forms.py:151 +msgid "Cult" +msgstr "" + +#: app/community/forms.py:152 +msgid "Scam" +msgstr "" + +#: app/community/forms.py:153 +msgid "Alt-right pipeline" +msgstr "" + +#: app/community/forms.py:154 app/post/forms.py:17 +msgid "Hate / genocide" +msgstr "" + +#: app/community/forms.py:172 app/community/routes.py:667 +msgid "Delete community" +msgstr "" + +#: app/community/routes.py:72 +msgid "Your new community has been created." +msgstr "" + +#: app/community/routes.py:78 app/templates/community/add_local.html:13 +#: app/templates/community/community_edit.html:22 +msgid "Create community" +msgstr "" + +#: app/community/routes.py:102 +msgid "Community not found." +msgstr "" + +#: app/community/routes.py:104 +msgid "" +"Community not found. If you are searching for a nsfw community it is " +"blocked by this instance." +msgstr "" + +#: app/community/routes.py:107 +#, python-format +msgid "That community is banned from %(site)s." +msgstr "" + +#: app/community/routes.py:110 +msgid "Add remote community" +msgstr "" + +#: app/community/routes.py:184 app/post/routes.py:180 +#: app/templates/base.html:127 app/templates/base.html:129 +#: app/templates/base.html:145 app/templates/base.html:147 +#: app/templates/chat/conversation.html:36 +#: app/templates/community/community_edit.html:13 +#: app/templates/community/community_mod_list.html:13 +#: app/templates/domain/domain.html:13 app/templates/topic/show_topic.html:13 +#: app/templates/user/delete_account.html:13 +#: app/templates/user/edit_filters.html:14 +#: app/templates/user/edit_profile.html:14 +#: app/templates/user/edit_settings.html:15 app/templates/user/filters.html:14 +#: app/templates/user/notifications.html:13 app/templates/user/people.html:13 +#: app/templates/user/show_profile.html:18 +#: app/templates/user/show_profile.html:38 +msgid "Home" +msgstr "" + +#: app/community/routes.py:310 +msgid "You cannot join this community" +msgstr "" + +#: app/community/routes.py:326 +msgid "" +"There was a problem while trying to communicate with remote server. If " +"other people have already joined this community it won't matter." +msgstr "" + +#: app/community/routes.py:516 app/community/routes.py:540 +#: app/community/routes.py:542 +#, python-format +msgid "Your post to %(name)s has been made." +msgstr "" + +#: app/community/routes.py:552 +msgid "Add post to community" +msgstr "" + +#: app/community/routes.py:574 +msgid "A community has been reported" +msgstr "" + +#: app/community/routes.py:585 +msgid "Community has been reported, thank you!" +msgstr "" + +#: app/community/routes.py:588 +msgid "Report community" +msgstr "" + +#: app/community/routes.py:683 +#: app/templates/community/community_mod_list.html:21 +#, python-format +msgid "Moderators for %(community)s" +msgstr "" + +#: app/community/routes.py:706 +msgid "Moderator added" +msgstr "" + +#: app/community/routes.py:710 +#, python-format +msgid "You are now a moderator of %(name)s" +msgstr "" + +#: app/community/routes.py:735 +msgid "Account not found" +msgstr "" + +#: app/community/routes.py:737 +#: app/templates/community/community_add_moderator.html:13 +#, python-format +msgid "Add moderator to %(community)s" +msgstr "" + +#: app/community/routes.py:755 +msgid "Moderator removed" +msgstr "" + +#: app/community/routes.py:772 app/post/routes.py:870 app/post/routes.py:962 +#, python-format +msgid "Content from %(name)s will be hidden." +msgstr "" + +#: app/community/routes.py:792 +#, python-format +msgid "%(name)s has been banned." +msgstr "" + +#: app/community/routes.py:799 +#, python-format +msgid "Posts by %(name)s have been deleted." +msgstr "" + +#: app/community/routes.py:805 +#, python-format +msgid "Comments by %(name)s have been deleted." +msgstr "" + +#: app/community/routes.py:823 +msgid "Ban from community" +msgstr "" + +#: app/domain/routes.py:113 +#, python-format +msgid "%(name)s blocked." +msgstr "" + +#: app/domain/routes.py:126 +#, python-format +msgid "%(name)s un-blocked." +msgstr "" + +#: app/domain/routes.py:139 +#, python-format +msgid "%(name)s banned for all users and all content deleted." +msgstr "" + +#: app/domain/routes.py:151 +#, python-format +msgid "%(name)s un-banned for all users." +msgstr "" + +#: app/main/routes.py:72 +msgid "Create an account to tailor this feed to your interests." +msgstr "" + +#: app/main/routes.py:156 app/templates/base.html:136 +#: app/templates/base.html:154 +msgid "Browse by topic" +msgstr "" + +#: app/main/routes.py:194 +msgid "Local communities" +msgstr "" + +#: app/main/routes.py:209 app/templates/base.html:163 +#: app/templates/list_communities.html:19 +msgid "Joined communities" +msgstr "" + +#: app/main/routes.py:326 +msgid "Please click the link in your email inbox to verify your account." +msgstr "" + +#: app/post/forms.py:12 +msgid "Comment" +msgstr "" + +#: app/post/forms.py:16 app/user/forms.py:59 +msgid "Breaks community rules" +msgstr "" + +#: app/post/forms.py:20 app/user/forms.py:67 +msgid "Sharing personal info - doxing" +msgstr "" + +#: app/post/forms.py:42 app/post/routes.py:887 +#: app/templates/post/post_mea_culpa.html:13 +msgid "I changed my mind" +msgstr "" + +#: app/post/routes.py:45 +#, python-format +msgid "%(name)s has indicated they made a mistake in this post." +msgstr "" + +#: app/post/routes.py:66 app/post/routes.py:443 +#, python-format +msgid "You cannot reply to %(name)s" +msgstr "" + +#: app/post/routes.py:76 app/post/routes.py:456 +msgid "This type of comment is not accepted, sorry." +msgstr "" + +#: app/post/routes.py:414 app/post/routes.py:579 +#, python-format +msgid "Discussing %(title)s" +msgstr "" + +#: app/post/routes.py:628 app/post/routes.py:985 app/user/routes.py:137 +#: app/user/routes.py:198 app/user/routes.py:670 app/user/routes.py:701 +msgid "Your changes have been saved." +msgstr "" + +#: app/post/routes.py:725 app/templates/post/post_edit.html:43 +msgid "Edit post" +msgstr "" + +#: app/post/routes.py:746 +msgid "Post deleted." +msgstr "" + +#: app/post/routes.py:804 +msgid "A post has been reported" +msgstr "" + +#: app/post/routes.py:822 +msgid "Post has been reported, thank you!" +msgstr "" + +#: app/post/routes.py:827 +msgid "Report post" +msgstr "" + +#: app/post/routes.py:841 app/post/routes.py:946 +#, python-format +msgid "%(name)s has been blocked." +msgstr "" + +#: app/post/routes.py:857 +#, python-format +msgid "Posts linking to %(name)s will be hidden." +msgstr "" + +#: app/post/routes.py:908 +msgid "A comment has been reported" +msgstr "" + +#: app/post/routes.py:926 +msgid "Comment has been reported, thank you!" +msgstr "" + +#: app/post/routes.py:931 +msgid "Report comment" +msgstr "" + +#: app/post/routes.py:1062 +msgid "Edit comment" +msgstr "" + +#: app/post/routes.py:1086 +msgid "Comment deleted." +msgstr "" + +#: app/search/routes.py:45 +#, python-format +msgid "Search results for %(q)s" +msgstr "" + +#: app/templates/_home_nav.html:3 app/templates/community/_community_nav.html:8 +#: app/templates/post/post.html:66 app/user/forms.py:44 +msgid "Hot" +msgstr "" + +#: app/templates/_home_nav.html:6 +#: app/templates/community/_community_nav.html:11 +#: app/templates/post/post.html:69 app/user/forms.py:45 +msgid "Top" +msgstr "" + +#: app/templates/_home_nav.html:9 +#: app/templates/community/_community_nav.html:14 +#: app/templates/post/post.html:72 app/user/forms.py:46 +msgid "New" +msgstr "" + +#: app/templates/_home_nav.html:12 +#: app/templates/community/_community_nav.html:17 +#: app/templates/list_communities.html:71 app/user/forms.py:47 +msgid "Active" +msgstr "" + +#: app/templates/_inoculation_links.html:4 +msgid "Rational Discourse Toolkit" +msgstr "" + +#: app/templates/base.html:52 +msgid "PieFed" +msgstr "" + +#: app/templates/base.html:110 app/templates/base.html:184 +#: app/templates/user/notifications.html:18 app/user/routes.py:521 +msgid "Notifications" +msgstr "" + +#: app/templates/base.html:130 app/templates/base.html:148 +msgid "Popular" +msgstr "" + +#: app/templates/base.html:131 app/templates/base.html:149 +msgid "All posts" +msgstr "" + +#: app/templates/base.html:137 app/templates/base.html:155 +#: app/templates/list_communities.html:13 +msgid "All communities" +msgstr "" + +#: app/templates/auth/login.html:9 app/templates/base.html:140 +msgid "Log in" +msgstr "" + +#: app/templates/base.html:142 app/templates/base.html:178 +#: app/templates/donate.html:10 +msgid "Donate" +msgstr "" + +#: app/templates/base.html:157 +msgid "Moderating" +msgstr "" + +#: app/templates/base.html:171 +msgid "Account" +msgstr "" + +#: app/templates/base.html:173 +msgid "View profile" +msgstr "" + +#: app/templates/base.html:174 +msgid "Edit profile & settings" +msgstr "" + +#: app/templates/base.html:175 +msgid "Chats" +msgstr "" + +#: app/templates/base.html:182 +msgid "Log out" +msgstr "" + +#: app/templates/base.html:184 +#, python-format +msgid "%(num)d unread notifications" +msgstr "" + +#: app/templates/base.html:194 +msgid "Light mode" +msgstr "" + +#: app/templates/base.html:195 +msgid "Dark mode" +msgstr "" + +#: app/templates/base.html:223 app/templates/keyboard_shortcuts.html:10 +msgid "Keyboard shortcuts" +msgstr "" + +#: app/templates/donate.html:26 app/templates/index.html:65 +#: app/templates/keyboard_shortcuts.html:63 +#: app/templates/search/results.html:63 +#, python-format +msgid "About %(site_name)s" +msgstr "" + +#: app/templates/index.html:17 +msgid "No posts yet. Join some communities to see more." +msgstr "" + +#: app/templates/community/community.html:168 app/templates/index.html:18 +#: app/templates/index.html:59 app/templates/list_topics.html:26 +#: app/templates/post/post.html:217 app/templates/search/results.html:57 +#: app/templates/topic/show_topic.html:91 +msgid "Explore communities" +msgstr "" + +#: app/templates/admin/activities.html:54 +#: app/templates/admin/communities.html:51 app/templates/admin/posts.html:26 +#: app/templates/admin/reports.html:58 app/templates/admin/users.html:69 +#: app/templates/community/community.html:92 +#: app/templates/domain/domain.html:30 app/templates/domain/domains.html:51 +#: app/templates/domain/domains_blocked.html:59 app/templates/index.html:25 +#: app/templates/search/results.html:23 app/templates/topic/show_topic.html:52 +#: app/templates/user/show_profile.html:72 +#: app/templates/user/show_profile.html:95 +msgid "Previous page" +msgstr "" + +#: app/templates/admin/activities.html:59 +#: app/templates/admin/communities.html:56 app/templates/admin/posts.html:31 +#: app/templates/admin/reports.html:63 app/templates/admin/users.html:74 +#: app/templates/community/community.html:97 +#: app/templates/domain/domain.html:35 app/templates/domain/domains.html:56 +#: app/templates/domain/domains_blocked.html:64 app/templates/index.html:30 +#: app/templates/search/results.html:28 app/templates/topic/show_topic.html:57 +#: app/templates/user/show_profile.html:77 +#: app/templates/user/show_profile.html:100 +msgid "Next page" +msgstr "" + +#: app/templates/index.html:47 app/templates/search/results.html:45 +msgid "Active communities" +msgstr "" + +#: app/templates/keyboard_shortcuts.html:11 +msgid "Most shortcuts are the same as what reddit has." +msgstr "" + +#: app/templates/keyboard_shortcuts.html:14 +msgid "Navigation" +msgstr "" + +#: app/templates/community/community_mod_list.html:31 +#: app/templates/keyboard_shortcuts.html:43 app/templates/user/filters.html:31 +msgid "Action" +msgstr "" + +#: app/templates/keyboard_shortcuts.html:46 +msgid "Upvote" +msgstr "" + +#: app/templates/keyboard_shortcuts.html:50 +msgid "Downvote" +msgstr "" + +#: app/templates/keyboard_shortcuts.html:55 +msgid "" +"When viewing a list of posts actions like voting or going to a post " +"depend on which is the current post. The current post is determined by " +"hovering with the mouse or the J and K keys." +msgstr "" + +#: app/templates/list_communities.html:14 +msgid "All" +msgstr "" + +#: app/templates/list_communities.html:16 +msgid "Communities on this server" +msgstr "" + +#: app/templates/list_communities.html:17 +msgid "Local" +msgstr "" + +#: app/templates/list_communities.html:20 +#: app/templates/user/show_profile.html:59 +msgid "Joined" +msgstr "" + +#: app/templates/list_communities.html:28 +msgid "Choose a topic to filter communities by" +msgstr "" + +#: app/templates/list_communities.html:40 +msgid "Create local community" +msgstr "" + +#: app/templates/list_communities.html:40 +msgid "Create local" +msgstr "" + +#: app/templates/list_communities.html:41 +msgid "Add community from another instance" +msgstr "" + +#: app/templates/list_communities.html:41 +msgid "Add remote" +msgstr "" + +#: app/templates/list_communities.html:56 +msgid "Sort by name" +msgstr "" + +#: app/templates/list_communities.html:61 +msgid "Sort by post count" +msgstr "" + +#: app/templates/list_communities.html:61 +msgid "Posts" +msgstr "" + +#: app/templates/list_communities.html:66 +msgid "Sort by reply count" +msgstr "" + +#: app/templates/list_communities.html:66 app/templates/post/post.html:61 +#: app/templates/post/post.html:155 +msgid "Comments" +msgstr "" + +#: app/templates/list_communities.html:71 +msgid "Sort by recent activity" +msgstr "" + +#: app/templates/list_communities.html:82 +#, python-format +msgid "Leave %(name)s" +msgstr "" + +#: app/templates/community/add_remote.html:32 +#: app/templates/community/community.html:112 +#: app/templates/list_communities.html:82 app/templates/post/add_reply.html:48 +#: app/templates/post/continue_discussion.html:96 +#: app/templates/post/post.html:174 +msgid "Leave" +msgstr "" + +#: app/templates/community/community.html:114 +#: app/templates/list_communities.html:84 +msgid "Pending" +msgstr "" + +#: app/templates/list_communities.html:86 +#: app/templates/list_communities.html:89 +#, python-format +msgid "Join %(name)s" +msgstr "" + +#: app/templates/community/add_remote.html:34 +#: app/templates/community/community.html:116 +#: app/templates/list_communities.html:86 +#: app/templates/list_communities.html:89 app/templates/post/add_reply.html:50 +#: app/templates/post/continue_discussion.html:98 +#: app/templates/post/post.html:176 +msgid "Join" +msgstr "" + +#: app/templates/list_communities.html:96 +#, python-format +msgid "Browse %(name)s" +msgstr "" + +#: app/templates/list_communities.html:106 app/templates/list_topics.html:24 +msgid "There are no communities yet." +msgstr "" + +#: app/templates/list_topics.html:11 +msgid "Choose a topic" +msgstr "" + +#: app/templates/privacy.html:10 +msgid "Privacy" +msgstr "" + +#: app/templates/admin/_nav.html:2 +msgid "Admin navigation" +msgstr "" + +#: app/templates/admin/_nav.html:3 +msgid "Admin home" +msgstr "" + +#: app/templates/admin/_nav.html:9 +msgid "Watch" +msgstr "" + +#: app/templates/admin/_nav.html:11 +msgid "Registration applications" +msgstr "" + +#: app/templates/admin/_nav.html:13 +msgid "Moderation" +msgstr "" + +#: app/templates/admin/_nav.html:14 +msgid "Federation" +msgstr "" + +#: app/templates/admin/_nav.html:15 +msgid "Newsletter" +msgstr "" + +#: app/templates/admin/_nav.html:16 +msgid "Activities" +msgstr "" + +#: app/templates/admin/add_user.html:17 +msgid "Add new user" +msgstr "" + +#: app/templates/admin/approve_registrations.html:18 +#, python-format +msgid "When registering, people are asked \"%(question)s\"." +msgstr "" + +#: app/templates/admin/approve_registrations.html:43 +msgid "Approve" +msgstr "" + +#: app/templates/admin/approve_registrations.html:44 +msgid "View" +msgstr "" + +#: app/templates/admin/approve_registrations.html:45 +#: app/templates/post/post_options.html:20 +#: app/templates/post/post_reply_options.html:20 +#: app/templates/user/show_profile.html:176 +msgid "Delete" +msgstr "" + +#: app/templates/admin/approve_registrations.html:51 +msgid "No one is waiting to be approved." +msgstr "" + +#: app/templates/admin/edit_community.html:17 +#, python-format +msgid "Edit %(community_name)s" +msgstr "" + +#: app/templates/admin/edit_community.html:43 +msgid "Will not be overwritten by remote server" +msgstr "" + +#: app/templates/admin/edit_topic.html:18 +#, python-format +msgid "Edit %(topic_name)s" +msgstr "" + +#: app/templates/admin/edit_user.html:17 +#, python-format +msgid "Edit %(user_name)s (%(display_name)s)" +msgstr "" + +#: app/templates/admin/posts.html:17 +msgid "Most downvoted in the last 3 days" +msgstr "" + +#: app/templates/admin/users.html:17 +msgid "Add local user" +msgstr "" + +#: app/templates/auth/check_email.html:9 +msgid "" +"We sent you an email containing a link that you need to click to enable " +"your account." +msgstr "" + +#: app/templates/auth/login.html:14 +msgid "New User?" +msgstr "" + +#: app/templates/auth/login.html:14 +msgid "Register new account" +msgstr "" + +#: app/templates/auth/login.html:16 +msgid "Forgot Your Password?" +msgstr "" + +#: app/templates/auth/login.html:17 +msgid "Reset it" +msgstr "" + +#: app/templates/auth/permission_denied.html:8 +#: app/templates/chat/blocked.html:13 app/templates/chat/denied.html:14 +msgid "Sorry" +msgstr "" + +#: app/templates/auth/permission_denied.html:12 +msgid "Your account does not have access to that area." +msgstr "" + +#: app/templates/auth/please_wait.html:8 +msgid "Thanks for registering" +msgstr "" + +#: app/templates/auth/please_wait.html:9 +msgid "" +"We are reviewing your application and will email you once it has been " +"accepted." +msgstr "" + +#: app/templates/auth/register.html:19 +msgid "Create new account" +msgstr "" + +#: app/templates/auth/register.html:22 +msgid "Registration is closed. Only admins can create accounts." +msgstr "" + +#: app/templates/auth/reset_password.html:13 +#: app/templates/auth/reset_password_request.html:13 +msgid "Reset your password" +msgstr "" + +#: app/templates/auth/validation_required.html:8 +msgid "Please check your email inbox" +msgstr "" + +#: app/templates/auth/validation_required.html:12 +msgid "" +"To keep spam and bots to a managable level, we send every new account an " +"email with a link in it that needs to be clicked to fully enable the " +"account." +msgstr "" + +#: app/templates/chat/blocked.html:15 +msgid "You have blocked this person or they have blocked you." +msgstr "" + +#: app/templates/chat/chat_options.html:14 +#, python-format +msgid "Options for conversation with \"%(member_names)s\"" +msgstr "" + +#: app/templates/chat/chat_options.html:17 +msgid "Delete conversation" +msgstr "" + +#: app/templates/chat/chat_options.html:21 +#, python-format +msgid "Block @%(author_name)s" +msgstr "" + +#: app/templates/chat/chat_options.html:26 +#, python-format +msgid "Block chats and posts from instance: %(name)s" +msgstr "" + +#: app/templates/chat/chat_options.html:29 +#: app/templates/post/post_options.html:48 +#: app/templates/post/post_reply_options.html:32 +msgid "Report to moderators" +msgstr "" + +#: app/templates/chat/chat_options.html:31 +msgid "" +"If you are reporting abuse then do not delete the conversation - " +"moderators will not be able to read it if you delete it." +msgstr "" + +#: app/templates/chat/conversation.html:37 +msgid "Chat" +msgstr "" + +#: app/templates/chat/conversation.html:42 app/templates/user/filters.html:56 +#: app/templates/user/notifications.html:14 app/templates/user/people.html:14 +#: app/templates/user/people.html:17 app/templates/user/show_profile.html:19 +#: app/templates/user/show_profile.html:39 app/user/routes.py:34 +msgid "People" +msgstr "" + +#: app/templates/chat/conversation.html:59 +#, python-format +msgid "Messages with %(name)s" +msgstr "" + +#: app/templates/chat/conversation.html:60 +msgid "Messages with: " +msgstr "" + +#: app/templates/chat/conversation.html:75 +#: app/templates/post/_post_teaser.html:80 +msgid "Options" +msgstr "" + +#: app/templates/chat/denied.html:16 +msgid "" +"You have not been using PieFed long enough to be allowed to send messages" +" to people." +msgstr "" + +#: app/templates/chat/empty.html:13 +msgid "No chats" +msgstr "" + +#: app/templates/chat/empty.html:15 +msgid "" +"There are no chats involving you, yet. Start a conversation using the " +"\"Send message\" button on someone's profile." +msgstr "" + +#: app/templates/chat/report.html:14 +#, python-format +msgid "Report conversation with \"%(member_names)s\"" +msgstr "" + +#: app/templates/community/_community_nav.html:3 +#: app/templates/community/add_post.html:11 +#: app/templates/community/community.html:108 +#: app/templates/post/add_reply.html:54 +#: app/templates/post/continue_discussion.html:102 +#: app/templates/post/post.html:170 app/templates/post/post_reply_edit.html:50 +#: app/templates/topic/show_topic.html:68 +msgid "Create post" +msgstr "" + +#: app/templates/community/_community_nav.html:7 +msgid "Sort by hot" +msgstr "" + +#: app/templates/community/_community_nav.html:10 +msgid "Sort by top" +msgstr "" + +#: app/templates/community/_community_nav.html:13 +msgid "Sort by new" +msgstr "" + +#: app/templates/community/_community_nav.html:16 +msgid "Sort by active" +msgstr "" + +#: app/templates/community/_community_nav.html:26 +msgid "Tile" +msgstr "" + +#: app/templates/community/_community_nav.html:29 +msgid "Wide tile" +msgstr "" + +#: app/templates/community/_notification_toggle.html:5 +msgid "Notify about every new post. Not advisable in high traffic communities!" +msgstr "" + +#: app/templates/community/add_local.html:31 +#, python-format +msgid "Only people using %(name)s can post or reply" +msgstr "" + +#: app/templates/community/add_post.html:44 +#: app/templates/community/add_post.html:65 +#: app/templates/community/add_post.html:88 +#: app/templates/post/add_reply.html:37 app/templates/post/post.html:42 +#: app/templates/user/edit_profile.html:44 +msgid "Enable markdown editor" +msgstr "" + +#: app/templates/community/add_post.html:73 +#: app/templates/post/post_edit.html:98 +msgid "Describe the image, to help visually impaired people." +msgstr "" + +#: app/templates/community/add_remote.html:25 +msgid "Found a community:" +msgstr "" + +#: app/templates/community/community.html:27 +#: app/templates/community/community.html:48 +#: app/templates/community/community.html:66 +#: app/templates/post/_post_full.html:20 app/templates/post/_post_full.html:66 +#: app/templates/post/_post_teaser.html:56 +msgid "Not safe for work" +msgstr "" + +#: app/templates/community/community.html:28 +#: app/templates/community/community.html:49 +#: app/templates/community/community.html:67 +msgid "Not safe for life" +msgstr "" + +#: app/templates/community/community.html:76 +#: app/templates/community/community.html:84 +msgid "No posts in this community yet." +msgstr "" + +#: app/templates/community/community.html:121 +#: app/templates/post/add_reply.html:58 +#: app/templates/post/continue_discussion.html:106 +#: app/templates/post/post.html:181 app/templates/post/post_reply_edit.html:54 +msgid "Search this community" +msgstr "" + +#: app/templates/community/community.html:127 +#: app/templates/post/add_reply.html:64 +#: app/templates/post/continue_discussion.html:112 +#: app/templates/post/post.html:187 app/templates/post/post_reply_edit.html:60 +msgid "About community" +msgstr "" + +#: app/templates/community/community.html:146 +#, python-format +msgid "Only people on %(instance_name)s can post or reply in this community." +msgstr "" + +#: app/templates/community/community.html:156 app/templates/post/post.html:205 +msgid "Related communities" +msgstr "" + +#: app/templates/community/community.html:162 app/templates/post/post.html:211 +#: app/templates/topic/show_topic.html:85 +msgid "Go to community" +msgstr "" + +#: app/templates/community/community.html:175 +#: app/templates/post/add_reply.html:82 +#: app/templates/post/continue_discussion.html:130 +#: app/templates/post/post.html:224 app/templates/post/post_reply_edit.html:78 +msgid "Community Settings" +msgstr "" + +#: app/templates/community/community.html:178 +#: app/templates/post/add_reply.html:85 +#: app/templates/post/continue_discussion.html:133 +#: app/templates/post/post.html:227 app/templates/post/post_reply_edit.html:81 +msgid "Moderate" +msgstr "" + +#: app/templates/community/community.html:180 +#: app/templates/community/community_edit.html:15 +#: app/templates/community/community_mod_list.html:15 +#: app/templates/post/add_reply.html:86 +#: app/templates/post/continue_discussion.html:134 +#: app/templates/post/post.html:228 app/templates/post/post_reply_edit.html:82 +#: app/templates/user/_user_nav.html:5 app/templates/user/notifications.html:57 +#: app/templates/user/show_profile.html:121 +msgid "Settings" +msgstr "" + +#: app/templates/community/community_ban_user.html:13 +#, python-format +msgid "Ban \"%(user_name)s\" from %(community_name)s" +msgstr "" + +#: app/templates/community/community_delete.html:13 +#, python-format +msgid "Delete \"%(community_title)s\"" +msgstr "" + +#: app/templates/community/community_edit.html:51 +#: app/templates/community/community_mod_list.html:16 +msgid "Moderators" +msgstr "" + +#: app/templates/community/community_mod_list.html:24 +msgid "Add moderator" +msgstr "" + +#: app/templates/community/community_mod_list.html:41 +msgid "Remove" +msgstr "" + +#: app/templates/domain/domain.html:14 app/templates/domain/domains.html:12 +#: app/templates/domain/domains.html:21 +#: app/templates/domain/domains_blocked.html:21 +#: app/templates/user/filters.html:60 +msgid "Domains" +msgstr "" + +#: app/templates/domain/domain.html:23 +msgid "No posts in this domain yet." +msgstr "" + +#: app/templates/domain/domain.html:45 +msgid "Domain management" +msgstr "" + +#: app/templates/domain/domain.html:51 app/templates/user/filters.html:71 +#: app/templates/user/filters.html:76 app/templates/user/filters.html:89 +#: app/templates/user/filters.html:94 app/templates/user/filters.html:107 +#: app/templates/user/filters.html:112 app/templates/user/filters.html:125 +#: app/templates/user/filters.html:130 app/templates/user/show_profile.html:52 +msgid "Unblock" +msgstr "" + +#: app/templates/domain/domain.html:55 app/templates/user/show_profile.html:54 +msgid "Block" +msgstr "" + +#: app/templates/domain/domain.html:61 +#: app/templates/domain/domains_blocked.html:46 +#: app/templates/user/show_profile.html:166 +msgid "Unban" +msgstr "" + +#: app/templates/domain/domain.html:65 +msgid "Ban instance-wide" +msgstr "" + +#: app/templates/domain/domains.html:14 +#, python-format +msgid "Domains containing \"%(search)s\"" +msgstr "" + +#: app/templates/domain/domains.html:24 +#: app/templates/domain/domains_blocked.html:24 +msgid "Banned domains" +msgstr "" + +#: app/templates/domain/domains.html:38 +msgid "How many times has something on this domain been posted" +msgstr "" + +#: app/templates/domain/domains_blocked.html:12 +msgid "Blocked domains" +msgstr "" + +#: app/templates/domain/domains_blocked.html:14 +#, python-format +msgid "Blocked domains containing \"%(search)s\"" +msgstr "" + +#: app/templates/domain/domains_blocked.html:46 +msgid "Unbanning this domain allows future posts linking to that domain." +msgstr "" + +#: app/templates/domain/domains_blocked.html:48 +msgid "" +"Banning this domain will delete all posts linking to this domain and " +"prevent future posts linking to that domain." +msgstr "" + +#: app/templates/errors/404.html:12 +msgid "Ooops, something is broken!" +msgstr "" + +#: app/templates/errors/404.html:15 +msgid "The page your browser tried to load could not be found." +msgstr "" + +#: app/templates/errors/404.html:16 app/templates/errors/500.html:16 +msgid "Back" +msgstr "" + +#: app/templates/errors/500.html:12 +msgid "An unexpected error has occurred" +msgstr "" + +#: app/templates/errors/500.html:15 +msgid "" +"Sorry for the inconvenience! Please let us know about this, so we can " +"repair it and make PieFed better for everyone." +msgstr "" + +#: app/templates/post/_comment_voting_buttons.html:3 +msgid "UpVote button." +msgstr "" + +#: app/templates/post/_comment_voting_buttons.html:9 +msgid "Score: " +msgstr "" + +#: app/templates/post/_comment_voting_buttons.html:11 +msgid "DownVote button." +msgstr "" + +#: app/templates/post/_comment_voting_buttons.html:21 +msgid "Score:" +msgstr "" + +#: app/templates/post/_post_full.html:21 app/templates/post/_post_full.html:67 +#: app/templates/post/_post_teaser.html:57 +msgid "Potentially emotionally scarring content" +msgstr "" + +#: app/templates/post/_post_full.html:28 app/templates/post/_post_full.html:76 +#: app/templates/post/_post_teaser.html:59 +msgid "Reported. Check post for issues." +msgstr "" + +#: app/templates/post/_post_reply_teaser.html:3 +msgid "View context" +msgstr "" + +#: app/templates/post/_post_teaser.html:6 +#: app/templates/post/_post_teaser_masonry.html:6 +msgid "Filtered: " +msgstr "" + +#: app/templates/post/_post_teaser.html:18 +#: app/templates/post/_post_teaser.html:26 +#: app/templates/post/_post_teaser.html:42 +msgid "Read article" +msgstr "" + +#: app/templates/post/_post_teaser.html:20 +#: app/templates/post/_post_teaser.html:30 +#: app/templates/post/_post_teaser.html:74 +#: app/templates/post/_post_teaser.html:76 +#: app/templates/post/_post_teaser_masonry.html:16 +#: app/templates/post/_post_teaser_masonry.html:20 +#: app/templates/post/_post_teaser_masonry.html:23 +#: app/templates/post/_post_teaser_masonry.html:55 +msgid "View image" +msgstr "" + +#: app/templates/post/_post_teaser.html:22 +#: app/templates/post/_post_teaser.html:34 +msgid "Read post" +msgstr "" + +#: app/templates/post/_post_teaser.html:54 +msgid "All posts about this domain" +msgstr "" + +#: app/templates/post/_post_teaser.html:63 +#, python-format +msgid "Go to community %(name)s" +msgstr "" + +#: app/templates/post/_post_teaser.html:71 +#: app/templates/post/_post_teaser_masonry.html:47 +#: app/templates/post/_post_teaser_masonry.html:48 +#: app/templates/post/_post_teaser_masonry.html:68 +#: app/templates/post/_post_teaser_masonry.html:69 +msgid "View comments" +msgstr "" + +#: app/templates/post/_post_teaser.html:71 +msgid "Number of comments:" +msgstr "" + +#: app/templates/post/_post_voting_buttons.html:3 +#, python-format +msgid "UpVote button, %(count)d upvotes so far." +msgstr "" + +#: app/templates/post/_post_voting_buttons.html:11 +#, python-format +msgid "DownVote button, %(count)d downvotes so far." +msgstr "" + +#: app/templates/post/_post_voting_buttons_masonry.html:3 +msgid "UpVote" +msgstr "" + +#: app/templates/post/_post_voting_buttons_masonry.html:10 +msgid "DownVote" +msgstr "" + +#: app/templates/post/add_reply.html:21 app/templates/post/post.html:23 +msgid "" +"This post is hosted on beehaw.org which has higher standards of behaviour than " +"most places. Be nice." +msgstr "" + +#: app/templates/post/continue_discussion.html:44 +#: app/templates/post/post.html:105 +msgid "Reported. Check comment for issues." +msgstr "" + +#: app/templates/post/post.html:26 +msgid "" +"This post is hosted on lemmy.ml which will ban you for saying anything " +"negative about China, Russia or Putin. Tread carefully." +msgstr "" + +#: app/templates/post/post.html:52 +msgid "Verify your email address to comment" +msgstr "" + +#: app/templates/post/post.html:55 +msgid "Log in to comment" +msgstr "" + +#: app/templates/post/post.html:58 +msgid "Comments are disabled." +msgstr "" + +#: app/templates/post/post.html:65 +msgid "Sort by magic" +msgstr "" + +#: app/templates/post/post.html:68 +msgid "Comments with the most upvotes" +msgstr "" + +#: app/templates/post/post.html:71 +msgid "Show newest first" +msgstr "" + +#: app/templates/post/post.html:87 +msgid "Author" +msgstr "" + +#: app/templates/post/post.html:101 +msgid "Post creator" +msgstr "" + +#: app/templates/post/post.html:102 +msgid "When: " +msgstr "" + +#: app/templates/post/post.html:131 +msgid "Comment options" +msgstr "" + +#: app/templates/post/post_mea_culpa.html:15 +msgid "" +"If you wish to de-escalate the discussion on your post and now feel like " +"it was a mistake, click the button below." +msgstr "" + +#: app/templates/post/post_mea_culpa.html:16 +msgid "" +"No further comments will be posted and a message saying you made a " +"mistake in this post will be displayed." +msgstr "" + +#: app/templates/post/post_mea_culpa.html:17 +msgid "The effect of downvotes on your reputation score will be removed." +msgstr "" + +#: app/templates/post/post_options.html:13 +#, python-format +msgid "Options for \"%(post_title)s\"" +msgstr "" + +#: app/templates/post/post_options.html:18 +#: app/templates/post/post_reply_options.html:18 +msgid "Edit" +msgstr "" + +#: app/templates/post/post_options.html:24 +msgid "I made a mistake with this post and have changed my mind about the topic" +msgstr "" + +#: app/templates/post/post_options.html:28 +#, python-format +msgid "Block post author @%(author_name)s" +msgstr "" + +#: app/templates/post/post_options.html:31 +#, python-format +msgid "Ban post author @%(author_name)s from
%(community_name)s" +msgstr "" + +#: app/templates/post/post_options.html:35 +#, python-format +msgid "Block domain %(domain)s" +msgstr "" + +#: app/templates/post/post_options.html:39 +#: app/templates/post/post_reply_options.html:27 +#, python-format +msgid "Hide every post from author's instance: %(name)s" +msgstr "" + +#: app/templates/post/post_options.html:45 +#, python-format +msgid "View original on %(domain)s" +msgstr "" + +#: app/templates/post/post_options.html:50 +#: app/templates/post/post_reply_options.html:34 +msgid "" +"If you want to perform more than one of these (e.g. block and report), " +"hold down Ctrl and click, then complete the operation in the new tabs " +"that open." +msgstr "" + +#: app/templates/post/post_reply_edit.html:44 +msgid "Unsubscribe" +msgstr "" + +#: app/templates/post/post_reply_edit.html:46 +msgid "Subscribe" +msgstr "" + +#: app/templates/post/post_reply_options.html:13 +#, python-format +msgid "Options for comment on \"%(post_title)s\"" +msgstr "" + +#: app/templates/post/post_reply_options.html:24 +#, python-format +msgid "Block author @%(author_name)s" +msgstr "" + +#: app/templates/post/post_reply_report.html:13 +#, python-format +msgid "Report comment on \"%(post_title)s\" by %(reply_name)s" +msgstr "" + +#: app/templates/post/post_report.html:13 +#, python-format +msgid "Report \"%(post_title)s\"" +msgstr "" + +#: app/templates/search/results.html:11 +msgid "Search results for" +msgstr "" + +#: app/templates/search/results.html:16 +msgid "No posts match your search." +msgstr "" + +#: app/templates/search/start.html:13 +msgid "Search for posts" +msgstr "" + +#: app/templates/search/start.html:20 +msgid "Example searches:" +msgstr "" + +#: app/templates/search/start.html:23 +msgid "star wars" +msgstr "" + +#: app/templates/search/start.html:24 +msgid "" +"There is an implied \"and\" here. Results will have both words somewhere " +"in them." +msgstr "" + +#: app/templates/search/start.html:27 +msgid "star or wars" +msgstr "" + +#: app/templates/search/start.html:28 +msgid "" +"This will broaden the search to include results that contain any of the " +"words." +msgstr "" + +#: app/templates/search/start.html:31 +msgid "star -wars" +msgstr "" + +#: app/templates/search/start.html:32 +msgid "" +"To search for things containing \"star\" but not \"wars\" you can put a -" +" before the word you want to exclude." +msgstr "" + +#: app/templates/search/start.html:35 +msgid "\"star wars\"" +msgstr "" + +#: app/templates/search/start.html:36 +msgid "Results will have exactly that phrase in them." +msgstr "" + +#: app/templates/topic/choose_topics.html:9 +msgid "Please choose at least 3 topics that interest you." +msgstr "" + +#: app/templates/topic/show_topic.html:23 +msgid "Sub-topics" +msgstr "" + +#: app/templates/topic/show_topic.html:36 +#: app/templates/topic/show_topic.html:44 +msgid "No posts in this topic yet." +msgstr "" + +#: app/templates/topic/show_topic.html:79 +msgid "Topic communities" +msgstr "" + +#: app/templates/topic/topic_create_post.html:9 +#, python-format +msgid "Which community within %(topic)s to post in?" +msgstr "" + +#: app/templates/topic/topic_create_post.html:17 +#, python-format +msgid "Post in %(name)s" +msgstr "" + +#: app/templates/user/_user_nav.html:8 app/templates/user/notifications.html:54 +#: app/templates/user/show_profile.html:118 +msgid "Profile" +msgstr "" + +#: app/templates/user/_user_nav.html:11 +msgid "Blocks & Filters" +msgstr "" + +#: app/templates/user/delete_account.html:15 +#: app/templates/user/edit_settings.html:17 +#: app/templates/user/edit_settings.html:20 +msgid "Change settings" +msgstr "" + +#: app/templates/user/delete_account.html:18 +#, python-format +msgid "Delete %(username)s" +msgstr "" + +#: app/templates/user/delete_account.html:20 +#, python-format +msgid "" +"You are about to permanently delete the account with the username " +"\"%(username)s.\" This means your profile will " +"disappear, pictures will be deleted. Text-based posts will stay but look " +"like they are from someone named \"deleted.\"" +msgstr "" + +#: app/templates/user/delete_account.html:21 +#, python-format +msgid "" +"Once you hit delete, nobody can use \"%(username)s\" as a username again." +" We are doing this so nobody pretends to be you." +msgstr "" + +#: app/templates/user/delete_account.html:22 +msgid "" +"We will tell other websites (fediverse instances) that your account is " +"gone. But it's up to them to decide what to do with any copies they have " +"of your stuff. Some websites work differently than ours." +msgstr "" + +#: app/templates/user/delete_account.html:23 +msgid "" +"Remember, once you do this, there's no going back. Are you sure you want " +"to continue?" +msgstr "" + +#: app/templates/user/edit_filters.html:16 app/templates/user/filters.html:16 +#: app/templates/user/filters.html:19 +msgid "Filters" +msgstr "" + +#: app/templates/user/edit_filters.html:18 app/user/routes.py:713 +msgid "Edit filter" +msgstr "" + +#: app/templates/user/edit_filters.html:20 +#: app/templates/user/edit_filters.html:27 app/templates/user/filters.html:22 +#: app/user/routes.py:673 +msgid "Add filter" +msgstr "" + +#: app/templates/user/edit_filters.html:25 +#, python-format +msgid "Filter %(name)s" +msgstr "" + +#: app/templates/user/edit_filters.html:33 +msgid "Filter in these places" +msgstr "" + +#: app/templates/user/edit_filters.html:39 +msgid "One per line. Case does not matter." +msgstr "" + +#: app/templates/user/edit_filters.html:41 +msgid "Stop applying this filter after this date. Optional." +msgstr "" + +#: app/templates/user/edit_profile.html:16 app/user/routes.py:147 +#: app/user/routes.py:212 +msgid "Edit profile" +msgstr "" + +#: app/templates/user/edit_profile.html:19 +#, python-format +msgid "Edit profile of %(name)s" +msgstr "" + +#: app/templates/user/edit_profile.html:58 +msgid "Delete account" +msgstr "" + +#: app/templates/user/email_notifs_unsubscribed.html:9 +#: app/templates/user/newsletter_unsubscribed.html:9 +msgid "Unsubscribed" +msgstr "" + +#: app/templates/user/email_notifs_unsubscribed.html:10 +msgid "" +"You have unsubscribed from emails about unread notifications. We might " +"email you for other reasons, though." +msgstr "" + +#: app/templates/user/email_notifs_unsubscribed.html:11 +#: app/templates/user/newsletter_unsubscribed.html:11 +msgid "More email settings" +msgstr "" + +#: app/templates/user/filters.html:25 +msgid "" +"Filters can hide posts that contain keywords you specify, either by " +"making them less noticeable or invisible." +msgstr "" + +#: app/templates/user/filters.html:30 +msgid "Keywords" +msgstr "" + +#: app/templates/user/filters.html:32 +msgid "Expires" +msgstr "" + +#: app/templates/user/filters.html:39 +msgid "Invisible" +msgstr "" + +#: app/templates/user/filters.html:39 +msgid "Semi-transparent" +msgstr "" + +#: app/templates/user/filters.html:49 +msgid "No filters defined yet." +msgstr "" + +#: app/templates/user/filters.html:62 +msgid "Instances" +msgstr "" + +#: app/templates/user/filters.html:81 +msgid "No blocked people" +msgstr "" + +#: app/templates/user/filters.html:99 +msgid "No blocked communities" +msgstr "" + +#: app/templates/user/filters.html:117 +msgid "No blocked domains" +msgstr "" + +#: app/templates/user/filters.html:135 +msgid "No blocked instances" +msgstr "" + +#: app/templates/user/newsletter_unsubscribed.html:10 +msgid "" +"You have unsubscribed from the email newsletter. We might email you for " +"other reasons, though." +msgstr "" + +#: app/templates/user/notifications.html:25 +msgid "Mark all as read" +msgstr "" + +#: app/templates/user/notifications.html:49 +#: app/templates/user/show_profile.html:113 +msgid "Manage" +msgstr "" + +#: app/templates/user/notifications.html:95 +#: app/templates/user/show_profile.html:189 +msgid "Upvoted" +msgstr "" + +#: app/templates/user/people.html:32 +msgid "No people to show" +msgstr "" + +#: app/templates/user/show_profile.html:24 +#: app/templates/user/show_profile.html:29 +msgid "Profile pic" +msgstr "" + +#: app/templates/user/show_profile.html:47 +msgid "Send message" +msgstr "" + +#: app/templates/user/show_profile.html:49 +msgid "Send message with matrix chat" +msgstr "" + +#: app/templates/user/show_profile.html:49 +msgid "Send message using Matrix" +msgstr "" + +#: app/templates/user/show_profile.html:60 +msgid "Attitude" +msgstr "" + +#: app/templates/user/show_profile.html:60 +msgid "Ratio of upvotes cast to downvotes cast. Higher is more positive." +msgstr "" + +#: app/templates/user/show_profile.html:69 +msgid "Post pagination" +msgstr "" + +#: app/templates/user/show_profile.html:82 +msgid "No posts yet." +msgstr "" + +#: app/templates/user/show_profile.html:92 +msgid "Comment pagination" +msgstr "" + +#: app/templates/user/show_profile.html:105 +msgid "No comments yet." +msgstr "" + +#: app/templates/user/show_profile.html:134 +msgid "Member of" +msgstr "" + +#: app/templates/user/show_profile.html:159 +msgid "Crush" +msgstr "" + +#: app/templates/user/show_profile.html:179 +msgid "Ban + Purge" +msgstr "" + +#: app/templates/user/user_report.html:13 +#, python-format +msgid "Report \"%(user_name)s\"" +msgstr "" + +#: app/topic/forms.py:13 +msgid "Choose some topics you are interested in" +msgstr "" + +#: app/topic/forms.py:14 +msgid "Choose" +msgstr "" + +#: app/topic/routes.py:168 +msgid "" +"You have joined some communities relating to those interests. Find them " +"on the Topics menu or browse the home page." +msgstr "" + +#: app/topic/routes.py:172 +msgid "" +"You did not choose any topics. Would you like to choose individual " +"communities instead?" +msgstr "" + +#: app/user/forms.py:13 +msgid "Display name" +msgstr "" + +#: app/user/forms.py:15 +msgid "Set new password" +msgstr "" + +#: app/user/forms.py:22 +msgid "Save profile" +msgstr "" + +#: app/user/forms.py:26 +msgid "That email address is already in use by another account" +msgstr "" + +#: app/user/forms.py:30 +msgid "Matrix user ids start with @" +msgstr "" + +#: app/user/forms.py:35 +msgid "Receive email about missed notifications" +msgstr "" + +#: app/user/forms.py:39 +msgid "Use markdown editor GUI when writing" +msgstr "" + +#: app/user/forms.py:41 +msgid "My posts appear in search results" +msgstr "" + +#: app/user/forms.py:43 +msgid "Import community subscriptions and user blocks from Lemmy" +msgstr "" + +#: app/user/forms.py:49 +msgid "By default, sort posts by" +msgstr "" + +#: app/user/forms.py:50 +msgid "Theme" +msgstr "" + +#: app/user/forms.py:51 +msgid "Save settings" +msgstr "" + +#: app/user/forms.py:55 +msgid "Yes, delete my account" +msgstr "" + +#: app/user/forms.py:66 +msgid "Malicious reporting" +msgstr "" + +#: app/user/forms.py:90 +msgid "Home feed" +msgstr "" + +#: app/user/forms.py:91 +msgid "Posts in communities" +msgstr "" + +#: app/user/forms.py:92 +msgid "Comments on posts" +msgstr "" + +#: app/user/forms.py:93 +msgid "Make semi-transparent" +msgstr "" + +#: app/user/forms.py:93 +msgid "Hide completely" +msgstr "" + +#: app/user/forms.py:94 +msgid "Action to take" +msgstr "" + +#: app/user/forms.py:95 +msgid "Keywords that trigger this filter" +msgstr "" + +#: app/user/forms.py:98 +msgid "Expire after" +msgstr "" + +#: app/user/routes.py:42 +msgid "This user has been banned." +msgstr "" + +#: app/user/routes.py:44 +msgid "This user has been deleted." +msgstr "" + +#: app/user/routes.py:77 +#, python-format +msgid "Posts by %(user_name)s" +msgstr "" + +#: app/user/routes.py:194 +msgid "" +"Your subscriptions and blocks are being imported. If you have many it " +"could take a few minutes." +msgstr "" + +#: app/user/routes.py:229 +msgid "You cannot ban yourself." +msgstr "" + +#: app/user/routes.py:254 +msgid "You cannot unban yourself." +msgstr "" + +#: app/user/routes.py:278 +msgid "You cannot block yourself." +msgstr "" + +#: app/user/routes.py:307 +msgid "You cannot unblock yourself." +msgstr "" + +#: app/user/routes.py:352 +#, python-format +msgid "%(user_name)s has been reported, thank you!" +msgstr "" + +#: app/user/routes.py:358 +msgid "Report user" +msgstr "" + +#: app/user/routes.py:375 +msgid "You cannot delete yourself." +msgstr "" + +#: app/user/routes.py:432 +msgid "Account deletion in progress. Give it a few minutes." +msgstr "" + +#: app/user/routes.py:437 +msgid "Delete my account" +msgstr "" + +#: app/user/routes.py:482 +msgid "You cannot purge yourself." +msgstr "" + +#: app/user/routes.py:559 +msgid "All notifications marked as read." +msgstr "" + +#: app/user/routes.py:730 +msgid "Filter deleted." +msgstr "" + diff --git a/app/translations/ja/LC_MESSAGES/messages.po b/app/translations/ja/LC_MESSAGES/messages.po new file mode 100644 index 00000000..b375aac3 --- /dev/null +++ b/app/translations/ja/LC_MESSAGES/messages.po @@ -0,0 +1,2683 @@ +# Japanese translations for PROJECT. +# Copyright (C) 2024 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2024-03-17 19:06+1300\n" +"PO-Revision-Date: 2024-03-17 19:14+1300\n" +"Last-Translator: FULL NAME \n" +"Language: ja\n" +"Language-Team: ja \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: app/__init__.py:26 +msgid "Please log in to access this page." +msgstr "" + +#: app/cli.py:238 app/main/routes.py:300 +msgid "[PieFed] You have unread notifications" +msgstr "" + +#: app/email.py:16 +msgid "[PieFed] Reset Your Password" +msgstr "" + +#: app/email.py:26 +msgid "[PieFed] Please verify your email address" +msgstr "" + +#: app/email.py:34 +msgid "Your application has been approved - welcome to PieFed" +msgstr "" + +#: app/email.py:34 +msgid "Welcome to PieFed" +msgstr "" + +#: app/activitypub/util.py:1205 app/post/routes.py:85 app/post/routes.py:472 +#, python-format +msgid "Reply from %(name)s on %(post_title)s" +msgstr "" + +#: app/admin/forms.py:13 app/admin/forms.py:97 app/community/forms.py:18 +#: app/templates/community/community_mod_list.html:30 +#: app/templates/user/filters.html:29 app/templates/user/filters.html:70 +#: app/templates/user/filters.html:88 app/templates/user/filters.html:106 +#: app/templates/user/filters.html:124 app/user/forms.py:89 +msgid "Name" +msgstr "" + +#: app/admin/forms.py:14 +msgid "Tagline" +msgstr "" + +#: app/admin/forms.py:15 +msgid "Icon" +msgstr "" + +#: app/admin/forms.py:18 +msgid "Sidebar" +msgstr "" + +#: app/admin/forms.py:19 +msgid "Legal information" +msgstr "" + +#: app/admin/forms.py:20 app/admin/forms.py:36 app/admin/forms.py:44 +#: app/admin/forms.py:81 app/admin/forms.py:100 app/admin/forms.py:126 +#: app/admin/forms.py:188 app/community/forms.py:56 app/community/forms.py:95 +#: app/user/forms.py:99 +msgid "Save" +msgstr "" + +#: app/admin/forms.py:24 +msgid "Enable downvotes" +msgstr "" + +#: app/admin/forms.py:25 +msgid "Allow local image posts" +msgstr "" + +#: app/admin/forms.py:26 +msgid "Days to cache images from remote instances for" +msgstr "" + +#: app/admin/forms.py:27 +msgid "Allow NSFW communities" +msgstr "" + +#: app/admin/forms.py:28 +msgid "Allow NSFL communities and posts" +msgstr "" + +#: app/admin/forms.py:29 +msgid "Only admins can create new local communities" +msgstr "" + +#: app/admin/forms.py:30 +msgid "Notify admins about reports, not just moderators" +msgstr "" + +#: app/admin/forms.py:31 +msgid "Open" +msgstr "" + +#: app/admin/forms.py:31 +msgid "Require application" +msgstr "" + +#: app/admin/forms.py:31 +msgid "Closed" +msgstr "" + +#: app/admin/forms.py:32 +msgid "Registration mode" +msgstr "" + +#: app/admin/forms.py:33 +msgid "Question to ask people applying for an account" +msgstr "" + +#: app/admin/forms.py:34 +msgid "Log ActivityPub JSON for debugging" +msgstr "" + +#: app/admin/forms.py:35 +msgid "Default theme" +msgstr "" + +#: app/admin/forms.py:40 +msgid "Allowlist instead of blocklist" +msgstr "" + +#: app/admin/forms.py:41 +msgid "Allow federation with these instances" +msgstr "" + +#: app/admin/forms.py:42 +msgid "Blocklist instead of allowlist" +msgstr "" + +#: app/admin/forms.py:43 +msgid "Deny federation with these instances" +msgstr "" + +#: app/admin/forms.py:48 app/community/forms.py:42 app/community/forms.py:80 +#: app/community/forms.py:82 app/community/forms.py:86 +msgid "Title" +msgstr "" + +#: app/admin/forms.py:49 app/admin/forms.py:98 app/community/forms.py:19 +msgid "Url" +msgstr "" + +#: app/admin/forms.py:50 app/community/forms.py:20 app/community/forms.py:43 +msgid "Description" +msgstr "" + +#: app/admin/forms.py:51 app/community/forms.py:21 app/community/forms.py:44 +msgid "Icon image" +msgstr "" + +#: app/admin/forms.py:52 app/community/forms.py:22 app/community/forms.py:45 +msgid "Banner image" +msgstr "" + +#: app/admin/forms.py:53 app/community/forms.py:23 app/community/forms.py:46 +msgid "Rules" +msgstr "" + +#: app/admin/forms.py:54 app/community/forms.py:47 +msgid "Porn community" +msgstr "" + +#: app/admin/forms.py:55 +msgid "Banned - no new posts accepted" +msgstr "" + +#: app/admin/forms.py:56 app/community/forms.py:48 +msgid "Only accept posts from current instance" +msgstr "" + +#: app/admin/forms.py:57 app/community/forms.py:49 +msgid "Only moderators can post" +msgstr "" + +#: app/admin/forms.py:58 app/community/forms.py:50 +msgid "New moderators wanted" +msgstr "" + +#: app/admin/forms.py:59 +msgid "Posts show on home page" +msgstr "" + +#: app/admin/forms.py:60 +msgid "Posts can be popular" +msgstr "" + +#: app/admin/forms.py:61 +msgid "Posts show in All list" +msgstr "" + +#: app/admin/forms.py:62 +msgid "Low quality / toxic - upvotes in here don't add to reputation" +msgstr "" + +#: app/admin/forms.py:63 +msgid "Forever" +msgstr "" + +#: app/admin/forms.py:64 +msgid "1 week" +msgstr "" + +#: app/admin/forms.py:65 +msgid "2 weeks" +msgstr "" + +#: app/admin/forms.py:66 +msgid "1 month" +msgstr "" + +#: app/admin/forms.py:67 +msgid "2 months" +msgstr "" + +#: app/admin/forms.py:68 +msgid "3 months" +msgstr "" + +#: app/admin/forms.py:69 +msgid "6 months" +msgstr "" + +#: app/admin/forms.py:70 +msgid "1 year" +msgstr "" + +#: app/admin/forms.py:71 +msgid "2 years" +msgstr "" + +#: app/admin/forms.py:72 +msgid "5 years" +msgstr "" + +#: app/admin/forms.py:73 +msgid "10 years" +msgstr "" + +#: app/admin/forms.py:75 +msgid "Retain content" +msgstr "" + +#: app/admin/forms.py:76 app/community/forms.py:51 +msgid "Topic" +msgstr "" + +#: app/admin/forms.py:77 app/community/forms.py:52 +#: app/templates/community/_community_nav.html:23 +msgid "List" +msgstr "" + +#: app/admin/forms.py:78 app/community/forms.py:53 +msgid "Masonry" +msgstr "" + +#: app/admin/forms.py:79 app/community/forms.py:54 +msgid "Wide masonry" +msgstr "" + +#: app/admin/forms.py:80 app/community/forms.py:55 +msgid "Layout" +msgstr "" + +#: app/admin/forms.py:87 app/community/forms.py:32 +msgid "Url is required." +msgstr "" + +#: app/admin/forms.py:91 app/community/forms.py:36 +msgid "- cannot be in Url. Use _ instead?" +msgstr "" + +#: app/admin/forms.py:99 +msgid "Parent topic" +msgstr "" + +#: app/admin/forms.py:104 app/auth/forms.py:10 app/auth/forms.py:17 +#: app/community/forms.py:60 +msgid "User name" +msgstr "" + +#: app/admin/forms.py:106 app/admin/forms.py:169 app/user/forms.py:14 +msgid "Email address" +msgstr "" + +#: app/admin/forms.py:107 app/auth/forms.py:11 app/auth/forms.py:20 +#: app/auth/forms.py:74 +msgid "Password" +msgstr "" + +#: app/admin/forms.py:109 app/auth/forms.py:22 app/auth/forms.py:76 +msgid "Repeat password" +msgstr "" + +#: app/admin/forms.py:110 app/admin/forms.py:168 app/user/forms.py:17 +msgid "Bio" +msgstr "" + +#: app/admin/forms.py:111 app/admin/forms.py:170 app/user/forms.py:18 +msgid "Matrix User ID" +msgstr "" + +#: app/admin/forms.py:112 app/admin/forms.py:171 app/user/forms.py:19 +msgid "Avatar image" +msgstr "" + +#: app/admin/forms.py:113 app/admin/forms.py:172 app/user/forms.py:20 +msgid "Top banner image" +msgstr "" + +#: app/admin/forms.py:114 app/admin/forms.py:173 app/user/forms.py:21 +msgid "This profile is a bot" +msgstr "" + +#: app/admin/forms.py:115 app/admin/forms.py:174 +msgid "Email address is verified" +msgstr "" + +#: app/admin/forms.py:116 app/admin/forms.py:175 +msgid "Banned" +msgstr "" + +#: app/admin/forms.py:117 app/admin/forms.py:176 app/user/forms.py:34 +msgid "Subscribe to email newsletter" +msgstr "" + +#: app/admin/forms.py:118 app/admin/forms.py:177 app/user/forms.py:36 +msgid "Hide posts by bots" +msgstr "" + +#: app/admin/forms.py:119 app/admin/forms.py:178 app/user/forms.py:37 +msgid "Show NSFW posts" +msgstr "" + +#: app/admin/forms.py:120 app/admin/forms.py:179 app/user/forms.py:38 +msgid "Show NSFL posts" +msgstr "" + +#: app/admin/forms.py:121 app/admin/forms.py:183 +msgid "User" +msgstr "" + +#: app/admin/forms.py:122 app/admin/forms.py:184 +msgid "Staff" +msgstr "" + +#: app/admin/forms.py:123 app/admin/forms.py:185 app/admin/routes.py:29 +#: app/templates/base.html:180 +msgid "Admin" +msgstr "" + +#: app/admin/forms.py:125 app/admin/forms.py:187 +msgid "Role" +msgstr "" + +#: app/admin/forms.py:131 app/auth/forms.py:32 +msgid "An account with this email address already exists." +msgstr "" + +#: app/admin/forms.py:135 app/auth/forms.py:36 +msgid "User names cannot contain @." +msgstr "" + +#: app/admin/forms.py:139 app/auth/forms.py:40 +msgid "This username was used in the past and cannot be reused." +msgstr "" + +#: app/admin/forms.py:141 app/auth/forms.py:42 +msgid "An account with this user name already exists." +msgstr "" + +#: app/admin/forms.py:144 app/auth/forms.py:45 +msgid "A community with this name exists so it cannot be used for a user." +msgstr "" + +#: app/admin/forms.py:151 app/admin/forms.py:164 app/auth/forms.py:52 +#: app/auth/forms.py:65 +msgid "This password is too common." +msgstr "" + +#: app/admin/forms.py:161 app/auth/forms.py:62 +msgid "This password is not secure." +msgstr "" + +#: app/admin/forms.py:180 app/user/forms.py:40 +msgid "Show profile in user list" +msgstr "" + +#: app/admin/forms.py:181 +msgid "Allow search engines to index this profile" +msgstr "" + +#: app/admin/forms.py:182 app/user/forms.py:42 +msgid "Manually approve followers" +msgstr "" + +#: app/admin/forms.py:192 +msgid "Subject" +msgstr "" + +#: app/admin/forms.py:193 +msgid "Body (text)" +msgstr "" + +#: app/admin/forms.py:194 +msgid "Body (html)" +msgstr "" + +#: app/admin/forms.py:195 +msgid "Test mode" +msgstr "" + +#: app/admin/forms.py:196 app/admin/routes.py:732 +msgid "Send newsletter" +msgstr "" + +#: app/admin/routes.py:57 app/templates/admin/_nav.html:4 +msgid "Site profile" +msgstr "" + +#: app/admin/routes.py:102 app/templates/admin/_nav.html:5 +msgid "Misc settings" +msgstr "" + +#: app/admin/routes.py:133 +msgid "Admin settings saved" +msgstr "" + +#: app/admin/routes.py:143 +msgid "Federation settings" +msgstr "" + +#: app/admin/routes.py:165 +msgid "ActivityPub Log" +msgstr "" + +#: app/admin/routes.py:175 +msgid "Activity JSON" +msgstr "" + +#: app/admin/routes.py:210 app/community/routes.py:215 app/main/routes.py:181 +#: app/post/routes.py:211 app/templates/admin/_nav.html:6 +#: app/templates/list_communities.html:51 app/templates/user/filters.html:58 +#: app/templates/user/notifications.html:66 +#: app/templates/user/show_profile.html:130 +msgid "Communities" +msgstr "" + +#: app/admin/routes.py:262 app/admin/routes.py:358 app/admin/routes.py:383 +#: app/admin/routes.py:578 app/community/routes.py:630 +msgid "Saved" +msgstr "" + +#: app/admin/routes.py:266 +msgid "" +"This is a remote community - most settings here will be regularly " +"overwritten with data from the original server." +msgstr "" + +#: app/admin/routes.py:283 app/community/routes.py:642 +#: app/templates/community/community_edit.html:20 +msgid "Edit community" +msgstr "" + +#: app/admin/routes.py:302 app/community/routes.py:664 +msgid "Community deleted" +msgstr "" + +#: app/admin/routes.py:336 app/community/routes.py:201 app/post/routes.py:197 +#: app/templates/admin/_nav.html:7 app/templates/base.html:134 +#: app/templates/base.html:152 app/templates/topic/show_topic.html:14 +msgid "Topics" +msgstr "" + +#: app/admin/routes.py:361 app/templates/admin/topics.html:35 +msgid "Add topic" +msgstr "" + +#: app/admin/routes.py:389 +msgid "Edit topic" +msgstr "" + +#: app/admin/routes.py:404 +msgid "Topic deleted" +msgstr "" + +#: app/admin/routes.py:406 +msgid "Cannot delete topic with communities assigned to it." +msgstr "" + +#: app/admin/routes.py:433 app/templates/admin/_nav.html:8 +msgid "Users" +msgstr "" + +#: app/admin/routes.py:463 +msgid "Problematic users" +msgstr "" + +#: app/admin/routes.py:484 +msgid "Bad posts" +msgstr "" + +#: app/admin/routes.py:517 +msgid "Registration approved." +msgstr "" + +#: app/admin/routes.py:574 +msgid "" +"Permissions are cached for 50 seconds so new admin roles won't take " +"effect immediately." +msgstr "" + +#: app/admin/routes.py:582 +msgid "" +"This is a remote user - most settings here will be regularly overwritten " +"with data from the original server." +msgstr "" + +#: app/admin/routes.py:599 +msgid "Edit user" +msgstr "" + +#: app/admin/routes.py:664 +msgid "User added" +msgstr "" + +#: app/admin/routes.py:667 +msgid "Add user" +msgstr "" + +#: app/admin/routes.py:691 +msgid "User deleted" +msgstr "" + +#: app/admin/routes.py:714 +msgid "Reports" +msgstr "" + +#: app/admin/util.py:125 +msgid "None" +msgstr "" + +#: app/auth/forms.py:12 +msgid "Low bandwidth mode" +msgstr "" + +#: app/auth/forms.py:13 +msgid "Log In" +msgstr "" + +#: app/auth/forms.py:18 app/auth/forms.py:19 app/auth/forms.py:69 +msgid "Email" +msgstr "" + +#: app/auth/forms.py:24 +msgid "Why would you like to join this site?" +msgstr "" + +#: app/auth/forms.py:27 app/auth/routes.py:140 app/templates/base.html:141 +msgid "Register" +msgstr "" + +#: app/auth/forms.py:70 +msgid "Request password reset" +msgstr "" + +#: app/auth/forms.py:78 +msgid "Set password" +msgstr "" + +#: app/auth/routes.py:29 app/auth/routes.py:32 +msgid "No account exists with that user name." +msgstr "" + +#: app/auth/routes.py:36 +msgid "" +"Invalid password. Please reset " +"your password." +msgstr "" + +#: app/auth/routes.py:39 +msgid "Invalid password" +msgstr "" + +#: app/auth/routes.py:42 +msgid "You have been banned." +msgstr "" + +#: app/auth/routes.py:74 +msgid "Login" +msgstr "" + +#: app/auth/routes.py:97 +msgid "Sorry, you cannot use that email address" +msgstr "" + +#: app/auth/routes.py:99 +msgid "Sorry, you cannot use that user name" +msgstr "" + +#: app/auth/routes.py:106 +#, python-format +msgid "Your username contained special letters so it was changed to %(name)s." +msgstr "" + +#: app/auth/routes.py:145 +msgid "Account under review" +msgstr "" + +#: app/auth/routes.py:150 app/templates/auth/check_email.html:8 +msgid "Check your email" +msgstr "" + +#: app/auth/routes.py:161 +msgid "Sorry, you cannot use that email address." +msgstr "" + +#: app/auth/routes.py:166 +msgid "Check your email for a link to reset your password." +msgstr "" + +#: app/auth/routes.py:169 +msgid "No account with that email address exists" +msgstr "" + +#: app/auth/routes.py:171 +msgid "Reset Password" +msgstr "" + +#: app/auth/routes.py:185 +#, python-format +msgid "" +"Your password has been reset. Please use it to log in with user name of " +"%(name)s." +msgstr "" + +#: app/auth/routes.py:205 +msgid "Thank you for verifying your email address." +msgstr "" + +#: app/auth/routes.py:207 +msgid "Email address validation failed." +msgstr "" + +#: app/chat/forms.py:13 +msgid "Message" +msgstr "" + +#: app/chat/forms.py:14 +msgid "Reply" +msgstr "" + +#: app/chat/forms.py:18 app/post/forms.py:16 app/user/forms.py:60 +msgid "Spam" +msgstr "" + +#: app/chat/forms.py:19 app/post/forms.py:16 app/user/forms.py:61 +msgid "Harassment" +msgstr "" + +#: app/chat/forms.py:20 app/post/forms.py:17 app/user/forms.py:62 +msgid "Threatening violence" +msgstr "" + +#: app/chat/forms.py:21 app/user/forms.py:63 +msgid "Promoting hate / genocide" +msgstr "" + +#: app/chat/forms.py:22 app/post/forms.py:18 app/user/forms.py:64 +msgid "Misinformation / disinformation" +msgstr "" + +#: app/chat/forms.py:23 app/post/forms.py:19 app/user/forms.py:65 +msgid "Racism, sexism, transphobia" +msgstr "" + +#: app/chat/forms.py:24 app/post/forms.py:21 app/user/forms.py:68 +msgid "Minor abuse or sexualization" +msgstr "" + +#: app/chat/forms.py:25 app/post/forms.py:22 app/user/forms.py:69 +msgid "Non-consensual intimate media" +msgstr "" + +#: app/chat/forms.py:26 app/post/forms.py:23 app/user/forms.py:70 +msgid "Prohibited transaction" +msgstr "" + +#: app/chat/forms.py:26 app/post/forms.py:23 app/user/forms.py:70 +msgid "Impersonation" +msgstr "" + +#: app/chat/forms.py:27 app/post/forms.py:24 app/user/forms.py:71 +msgid "Copyright violation" +msgstr "" + +#: app/chat/forms.py:27 app/post/forms.py:24 app/user/forms.py:71 +msgid "Trademark violation" +msgstr "" + +#: app/chat/forms.py:28 app/post/forms.py:25 app/user/forms.py:72 +msgid "Self-harm or suicide" +msgstr "" + +#: app/chat/forms.py:29 app/community/forms.py:155 app/post/forms.py:26 +#: app/user/forms.py:73 +msgid "Other" +msgstr "" + +#: app/chat/forms.py:30 app/community/forms.py:70 app/community/forms.py:157 +#: app/post/forms.py:27 app/user/forms.py:74 +msgid "Reason" +msgstr "" + +#: app/chat/forms.py:31 app/community/forms.py:158 app/post/forms.py:28 +#: app/user/forms.py:75 +msgid "More info" +msgstr "" + +#: app/chat/forms.py:33 app/community/forms.py:160 app/post/forms.py:30 +#: app/templates/user/show_profile.html:56 app/user/forms.py:77 +msgid "Report" +msgstr "" + +#: app/chat/routes.py:49 +#, python-format +msgid "Chat with %(name)s" +msgstr "" + +#: app/chat/routes.py:69 +msgid "Send" +msgstr "" + +#: app/chat/routes.py:79 app/templates/chat/new_message.html:14 +#, python-format +msgid "New message to \"%(recipient_name)s\"" +msgstr "" + +#: app/chat/routes.py:124 +msgid "Conversation deleted" +msgstr "" + +#: app/chat/routes.py:135 +msgid "Instance blocked." +msgstr "" + +#: app/chat/routes.py:165 +msgid "This conversation has been reported, thank you!" +msgstr "" + +#: app/chat/routes.py:170 +msgid "Report conversation" +msgstr "" + +#: app/chat/util.py:58 +#, python-format +msgid "Message failed to send to %(name)s." +msgstr "" + +#: app/chat/util.py:60 +msgid "Message sent." +msgstr "" + +#: app/community/forms.py:26 +msgid "Create" +msgstr "" + +#: app/community/forms.py:61 +msgid "Add" +msgstr "" + +#: app/community/forms.py:65 +msgid "Community address" +msgstr "" + +#: app/community/forms.py:66 app/search/routes.py:52 +#: app/templates/base.html:193 app/templates/community/add_remote.html:13 +#: app/templates/domain/domains.html:29 +#: app/templates/domain/domains_blocked.html:29 app/templates/index.html:40 +#: app/templates/list_communities.html:36 app/templates/search/results.html:38 +msgid "Search" +msgstr "" + +#: app/community/forms.py:71 +msgid "Ban until" +msgstr "" + +#: app/community/forms.py:72 +msgid "Also delete all their posts" +msgstr "" + +#: app/community/forms.py:73 +msgid "Also delete all their comments" +msgstr "" + +#: app/community/forms.py:74 app/templates/domain/domains_blocked.html:48 +#: app/templates/user/show_profile.html:170 +msgid "Ban" +msgstr "" + +#: app/community/forms.py:78 app/templates/list_communities.html:56 +msgid "Community" +msgstr "" + +#: app/community/forms.py:81 app/community/forms.py:83 +#: app/community/forms.py:88 app/post/forms.py:10 +msgid "Body" +msgstr "" + +#: app/community/forms.py:85 +msgid "URL" +msgstr "" + +#: app/community/forms.py:87 +msgid "Alt text" +msgstr "" + +#: app/community/forms.py:90 +msgid "Image" +msgstr "" + +#: app/community/forms.py:92 +msgid "NSFW" +msgstr "" + +#: app/community/forms.py:93 +msgid "Gore/gross" +msgstr "" + +#: app/community/forms.py:94 app/post/forms.py:11 +#: app/templates/post/_post_notification_toggle.html:4 +#: app/templates/post/_reply_notification_toggle.html:4 +msgid "Notify about replies" +msgstr "" + +#: app/community/forms.py:105 app/community/forms.py:109 +#: app/community/forms.py:120 +msgid "Title is required." +msgstr "" + +#: app/community/forms.py:112 +msgid "URL is required." +msgstr "" + +#: app/community/forms.py:116 +#, python-format +msgid "Links to %(domain)s are not allowed." +msgstr "" + +#: app/community/forms.py:123 +msgid "File is required." +msgstr "" + +#: app/community/forms.py:140 +msgid "Images cannot be posted to local communities." +msgstr "" + +#: app/community/forms.py:142 +msgid "Poll not implemented yet." +msgstr "" + +#: app/community/forms.py:149 +msgid "Breaks instance rules" +msgstr "" + +#: app/community/forms.py:150 +msgid "Abandoned by moderators" +msgstr "" + +#: app/community/forms.py:151 +msgid "Cult" +msgstr "" + +#: app/community/forms.py:152 +msgid "Scam" +msgstr "" + +#: app/community/forms.py:153 +msgid "Alt-right pipeline" +msgstr "" + +#: app/community/forms.py:154 app/post/forms.py:17 +msgid "Hate / genocide" +msgstr "" + +#: app/community/forms.py:172 app/community/routes.py:667 +msgid "Delete community" +msgstr "" + +#: app/community/routes.py:72 +msgid "Your new community has been created." +msgstr "" + +#: app/community/routes.py:78 app/templates/community/add_local.html:13 +#: app/templates/community/community_edit.html:22 +msgid "Create community" +msgstr "" + +#: app/community/routes.py:102 +msgid "Community not found." +msgstr "" + +#: app/community/routes.py:104 +msgid "" +"Community not found. If you are searching for a nsfw community it is " +"blocked by this instance." +msgstr "" + +#: app/community/routes.py:107 +#, python-format +msgid "That community is banned from %(site)s." +msgstr "" + +#: app/community/routes.py:110 +msgid "Add remote community" +msgstr "" + +#: app/community/routes.py:184 app/post/routes.py:180 +#: app/templates/base.html:127 app/templates/base.html:129 +#: app/templates/base.html:145 app/templates/base.html:147 +#: app/templates/chat/conversation.html:36 +#: app/templates/community/community_edit.html:13 +#: app/templates/community/community_mod_list.html:13 +#: app/templates/domain/domain.html:13 app/templates/topic/show_topic.html:13 +#: app/templates/user/delete_account.html:13 +#: app/templates/user/edit_filters.html:14 +#: app/templates/user/edit_profile.html:14 +#: app/templates/user/edit_settings.html:15 app/templates/user/filters.html:14 +#: app/templates/user/notifications.html:13 app/templates/user/people.html:13 +#: app/templates/user/show_profile.html:18 +#: app/templates/user/show_profile.html:38 +msgid "Home" +msgstr "" + +#: app/community/routes.py:310 +msgid "You cannot join this community" +msgstr "" + +#: app/community/routes.py:326 +msgid "" +"There was a problem while trying to communicate with remote server. If " +"other people have already joined this community it won't matter." +msgstr "" + +#: app/community/routes.py:516 app/community/routes.py:540 +#: app/community/routes.py:542 +#, python-format +msgid "Your post to %(name)s has been made." +msgstr "" + +#: app/community/routes.py:552 +msgid "Add post to community" +msgstr "" + +#: app/community/routes.py:574 +msgid "A community has been reported" +msgstr "" + +#: app/community/routes.py:585 +msgid "Community has been reported, thank you!" +msgstr "" + +#: app/community/routes.py:588 +msgid "Report community" +msgstr "" + +#: app/community/routes.py:683 +#: app/templates/community/community_mod_list.html:21 +#, python-format +msgid "Moderators for %(community)s" +msgstr "" + +#: app/community/routes.py:706 +msgid "Moderator added" +msgstr "" + +#: app/community/routes.py:710 +#, python-format +msgid "You are now a moderator of %(name)s" +msgstr "" + +#: app/community/routes.py:735 +msgid "Account not found" +msgstr "" + +#: app/community/routes.py:737 +#: app/templates/community/community_add_moderator.html:13 +#, python-format +msgid "Add moderator to %(community)s" +msgstr "" + +#: app/community/routes.py:755 +msgid "Moderator removed" +msgstr "" + +#: app/community/routes.py:772 app/post/routes.py:870 app/post/routes.py:962 +#, python-format +msgid "Content from %(name)s will be hidden." +msgstr "" + +#: app/community/routes.py:792 +#, python-format +msgid "%(name)s has been banned." +msgstr "" + +#: app/community/routes.py:799 +#, python-format +msgid "Posts by %(name)s have been deleted." +msgstr "" + +#: app/community/routes.py:805 +#, python-format +msgid "Comments by %(name)s have been deleted." +msgstr "" + +#: app/community/routes.py:823 +msgid "Ban from community" +msgstr "" + +#: app/domain/routes.py:113 +#, python-format +msgid "%(name)s blocked." +msgstr "" + +#: app/domain/routes.py:126 +#, python-format +msgid "%(name)s un-blocked." +msgstr "" + +#: app/domain/routes.py:139 +#, python-format +msgid "%(name)s banned for all users and all content deleted." +msgstr "" + +#: app/domain/routes.py:151 +#, python-format +msgid "%(name)s un-banned for all users." +msgstr "" + +#: app/main/routes.py:72 +msgid "Create an account to tailor this feed to your interests." +msgstr "" + +#: app/main/routes.py:156 app/templates/base.html:136 +#: app/templates/base.html:154 +msgid "Browse by topic" +msgstr "" + +#: app/main/routes.py:194 +msgid "Local communities" +msgstr "" + +#: app/main/routes.py:209 app/templates/base.html:163 +#: app/templates/list_communities.html:19 +msgid "Joined communities" +msgstr "" + +#: app/main/routes.py:326 +msgid "Please click the link in your email inbox to verify your account." +msgstr "" + +#: app/post/forms.py:12 +msgid "Comment" +msgstr "" + +#: app/post/forms.py:16 app/user/forms.py:59 +msgid "Breaks community rules" +msgstr "" + +#: app/post/forms.py:20 app/user/forms.py:67 +msgid "Sharing personal info - doxing" +msgstr "" + +#: app/post/forms.py:42 app/post/routes.py:887 +#: app/templates/post/post_mea_culpa.html:13 +msgid "I changed my mind" +msgstr "" + +#: app/post/routes.py:45 +#, python-format +msgid "%(name)s has indicated they made a mistake in this post." +msgstr "" + +#: app/post/routes.py:66 app/post/routes.py:443 +#, python-format +msgid "You cannot reply to %(name)s" +msgstr "" + +#: app/post/routes.py:76 app/post/routes.py:456 +msgid "This type of comment is not accepted, sorry." +msgstr "" + +#: app/post/routes.py:414 app/post/routes.py:579 +#, python-format +msgid "Discussing %(title)s" +msgstr "" + +#: app/post/routes.py:628 app/post/routes.py:985 app/user/routes.py:137 +#: app/user/routes.py:198 app/user/routes.py:670 app/user/routes.py:701 +msgid "Your changes have been saved." +msgstr "" + +#: app/post/routes.py:725 app/templates/post/post_edit.html:43 +msgid "Edit post" +msgstr "" + +#: app/post/routes.py:746 +msgid "Post deleted." +msgstr "" + +#: app/post/routes.py:804 +msgid "A post has been reported" +msgstr "" + +#: app/post/routes.py:822 +msgid "Post has been reported, thank you!" +msgstr "" + +#: app/post/routes.py:827 +msgid "Report post" +msgstr "" + +#: app/post/routes.py:841 app/post/routes.py:946 +#, python-format +msgid "%(name)s has been blocked." +msgstr "" + +#: app/post/routes.py:857 +#, python-format +msgid "Posts linking to %(name)s will be hidden." +msgstr "" + +#: app/post/routes.py:908 +msgid "A comment has been reported" +msgstr "" + +#: app/post/routes.py:926 +msgid "Comment has been reported, thank you!" +msgstr "" + +#: app/post/routes.py:931 +msgid "Report comment" +msgstr "" + +#: app/post/routes.py:1062 +msgid "Edit comment" +msgstr "" + +#: app/post/routes.py:1086 +msgid "Comment deleted." +msgstr "" + +#: app/search/routes.py:45 +#, python-format +msgid "Search results for %(q)s" +msgstr "" + +#: app/templates/_home_nav.html:3 app/templates/community/_community_nav.html:8 +#: app/templates/post/post.html:66 app/user/forms.py:44 +msgid "Hot" +msgstr "" + +#: app/templates/_home_nav.html:6 +#: app/templates/community/_community_nav.html:11 +#: app/templates/post/post.html:69 app/user/forms.py:45 +msgid "Top" +msgstr "" + +#: app/templates/_home_nav.html:9 +#: app/templates/community/_community_nav.html:14 +#: app/templates/post/post.html:72 app/user/forms.py:46 +msgid "New" +msgstr "" + +#: app/templates/_home_nav.html:12 +#: app/templates/community/_community_nav.html:17 +#: app/templates/list_communities.html:71 app/user/forms.py:47 +msgid "Active" +msgstr "" + +#: app/templates/_inoculation_links.html:4 +msgid "Rational Discourse Toolkit" +msgstr "" + +#: app/templates/base.html:52 +msgid "PieFed" +msgstr "" + +#: app/templates/base.html:110 app/templates/base.html:184 +#: app/templates/user/notifications.html:18 app/user/routes.py:521 +msgid "Notifications" +msgstr "" + +#: app/templates/base.html:130 app/templates/base.html:148 +msgid "Popular" +msgstr "" + +#: app/templates/base.html:131 app/templates/base.html:149 +msgid "All posts" +msgstr "" + +#: app/templates/base.html:137 app/templates/base.html:155 +#: app/templates/list_communities.html:13 +msgid "All communities" +msgstr "" + +#: app/templates/auth/login.html:9 app/templates/base.html:140 +msgid "Log in" +msgstr "" + +#: app/templates/base.html:142 app/templates/base.html:178 +#: app/templates/donate.html:10 +msgid "Donate" +msgstr "" + +#: app/templates/base.html:157 +msgid "Moderating" +msgstr "" + +#: app/templates/base.html:171 +msgid "Account" +msgstr "" + +#: app/templates/base.html:173 +msgid "View profile" +msgstr "" + +#: app/templates/base.html:174 +msgid "Edit profile & settings" +msgstr "" + +#: app/templates/base.html:175 +msgid "Chats" +msgstr "" + +#: app/templates/base.html:182 +msgid "Log out" +msgstr "" + +#: app/templates/base.html:184 +#, python-format +msgid "%(num)d unread notifications" +msgstr "" + +#: app/templates/base.html:194 +msgid "Light mode" +msgstr "" + +#: app/templates/base.html:195 +msgid "Dark mode" +msgstr "" + +#: app/templates/base.html:223 app/templates/keyboard_shortcuts.html:10 +msgid "Keyboard shortcuts" +msgstr "" + +#: app/templates/donate.html:26 app/templates/index.html:65 +#: app/templates/keyboard_shortcuts.html:63 +#: app/templates/search/results.html:63 +#, python-format +msgid "About %(site_name)s" +msgstr "" + +#: app/templates/index.html:17 +msgid "No posts yet. Join some communities to see more." +msgstr "" + +#: app/templates/community/community.html:168 app/templates/index.html:18 +#: app/templates/index.html:59 app/templates/list_topics.html:26 +#: app/templates/post/post.html:217 app/templates/search/results.html:57 +#: app/templates/topic/show_topic.html:91 +msgid "Explore communities" +msgstr "" + +#: app/templates/admin/activities.html:54 +#: app/templates/admin/communities.html:51 app/templates/admin/posts.html:26 +#: app/templates/admin/reports.html:58 app/templates/admin/users.html:69 +#: app/templates/community/community.html:92 +#: app/templates/domain/domain.html:30 app/templates/domain/domains.html:51 +#: app/templates/domain/domains_blocked.html:59 app/templates/index.html:25 +#: app/templates/search/results.html:23 app/templates/topic/show_topic.html:52 +#: app/templates/user/show_profile.html:72 +#: app/templates/user/show_profile.html:95 +msgid "Previous page" +msgstr "" + +#: app/templates/admin/activities.html:59 +#: app/templates/admin/communities.html:56 app/templates/admin/posts.html:31 +#: app/templates/admin/reports.html:63 app/templates/admin/users.html:74 +#: app/templates/community/community.html:97 +#: app/templates/domain/domain.html:35 app/templates/domain/domains.html:56 +#: app/templates/domain/domains_blocked.html:64 app/templates/index.html:30 +#: app/templates/search/results.html:28 app/templates/topic/show_topic.html:57 +#: app/templates/user/show_profile.html:77 +#: app/templates/user/show_profile.html:100 +msgid "Next page" +msgstr "" + +#: app/templates/index.html:47 app/templates/search/results.html:45 +msgid "Active communities" +msgstr "" + +#: app/templates/keyboard_shortcuts.html:11 +msgid "Most shortcuts are the same as what reddit has." +msgstr "" + +#: app/templates/keyboard_shortcuts.html:14 +msgid "Navigation" +msgstr "" + +#: app/templates/community/community_mod_list.html:31 +#: app/templates/keyboard_shortcuts.html:43 app/templates/user/filters.html:31 +msgid "Action" +msgstr "" + +#: app/templates/keyboard_shortcuts.html:46 +msgid "Upvote" +msgstr "" + +#: app/templates/keyboard_shortcuts.html:50 +msgid "Downvote" +msgstr "" + +#: app/templates/keyboard_shortcuts.html:55 +msgid "" +"When viewing a list of posts actions like voting or going to a post " +"depend on which is the current post. The current post is determined by " +"hovering with the mouse or the J and K keys." +msgstr "" + +#: app/templates/list_communities.html:14 +msgid "All" +msgstr "" + +#: app/templates/list_communities.html:16 +msgid "Communities on this server" +msgstr "" + +#: app/templates/list_communities.html:17 +msgid "Local" +msgstr "" + +#: app/templates/list_communities.html:20 +#: app/templates/user/show_profile.html:59 +msgid "Joined" +msgstr "" + +#: app/templates/list_communities.html:28 +msgid "Choose a topic to filter communities by" +msgstr "" + +#: app/templates/list_communities.html:40 +msgid "Create local community" +msgstr "" + +#: app/templates/list_communities.html:40 +msgid "Create local" +msgstr "" + +#: app/templates/list_communities.html:41 +msgid "Add community from another instance" +msgstr "" + +#: app/templates/list_communities.html:41 +msgid "Add remote" +msgstr "" + +#: app/templates/list_communities.html:56 +msgid "Sort by name" +msgstr "" + +#: app/templates/list_communities.html:61 +msgid "Sort by post count" +msgstr "" + +#: app/templates/list_communities.html:61 +msgid "Posts" +msgstr "" + +#: app/templates/list_communities.html:66 +msgid "Sort by reply count" +msgstr "" + +#: app/templates/list_communities.html:66 app/templates/post/post.html:61 +#: app/templates/post/post.html:155 +msgid "Comments" +msgstr "" + +#: app/templates/list_communities.html:71 +msgid "Sort by recent activity" +msgstr "" + +#: app/templates/list_communities.html:82 +#, python-format +msgid "Leave %(name)s" +msgstr "" + +#: app/templates/community/add_remote.html:32 +#: app/templates/community/community.html:112 +#: app/templates/list_communities.html:82 app/templates/post/add_reply.html:48 +#: app/templates/post/continue_discussion.html:96 +#: app/templates/post/post.html:174 +msgid "Leave" +msgstr "" + +#: app/templates/community/community.html:114 +#: app/templates/list_communities.html:84 +msgid "Pending" +msgstr "" + +#: app/templates/list_communities.html:86 +#: app/templates/list_communities.html:89 +#, python-format +msgid "Join %(name)s" +msgstr "" + +#: app/templates/community/add_remote.html:34 +#: app/templates/community/community.html:116 +#: app/templates/list_communities.html:86 +#: app/templates/list_communities.html:89 app/templates/post/add_reply.html:50 +#: app/templates/post/continue_discussion.html:98 +#: app/templates/post/post.html:176 +msgid "Join" +msgstr "" + +#: app/templates/list_communities.html:96 +#, python-format +msgid "Browse %(name)s" +msgstr "" + +#: app/templates/list_communities.html:106 app/templates/list_topics.html:24 +msgid "There are no communities yet." +msgstr "" + +#: app/templates/list_topics.html:11 +msgid "Choose a topic" +msgstr "" + +#: app/templates/privacy.html:10 +msgid "Privacy" +msgstr "" + +#: app/templates/admin/_nav.html:2 +msgid "Admin navigation" +msgstr "" + +#: app/templates/admin/_nav.html:3 +msgid "Admin home" +msgstr "" + +#: app/templates/admin/_nav.html:9 +msgid "Watch" +msgstr "" + +#: app/templates/admin/_nav.html:11 +msgid "Registration applications" +msgstr "" + +#: app/templates/admin/_nav.html:13 +msgid "Moderation" +msgstr "" + +#: app/templates/admin/_nav.html:14 +msgid "Federation" +msgstr "" + +#: app/templates/admin/_nav.html:15 +msgid "Newsletter" +msgstr "" + +#: app/templates/admin/_nav.html:16 +msgid "Activities" +msgstr "" + +#: app/templates/admin/add_user.html:17 +msgid "Add new user" +msgstr "" + +#: app/templates/admin/approve_registrations.html:18 +#, python-format +msgid "When registering, people are asked \"%(question)s\"." +msgstr "" + +#: app/templates/admin/approve_registrations.html:43 +msgid "Approve" +msgstr "" + +#: app/templates/admin/approve_registrations.html:44 +msgid "View" +msgstr "" + +#: app/templates/admin/approve_registrations.html:45 +#: app/templates/post/post_options.html:20 +#: app/templates/post/post_reply_options.html:20 +#: app/templates/user/show_profile.html:176 +msgid "Delete" +msgstr "" + +#: app/templates/admin/approve_registrations.html:51 +msgid "No one is waiting to be approved." +msgstr "" + +#: app/templates/admin/edit_community.html:17 +#, python-format +msgid "Edit %(community_name)s" +msgstr "" + +#: app/templates/admin/edit_community.html:43 +msgid "Will not be overwritten by remote server" +msgstr "" + +#: app/templates/admin/edit_topic.html:18 +#, python-format +msgid "Edit %(topic_name)s" +msgstr "" + +#: app/templates/admin/edit_user.html:17 +#, python-format +msgid "Edit %(user_name)s (%(display_name)s)" +msgstr "" + +#: app/templates/admin/posts.html:17 +msgid "Most downvoted in the last 3 days" +msgstr "" + +#: app/templates/admin/users.html:17 +msgid "Add local user" +msgstr "" + +#: app/templates/auth/check_email.html:9 +msgid "" +"We sent you an email containing a link that you need to click to enable " +"your account." +msgstr "" + +#: app/templates/auth/login.html:14 +msgid "New User?" +msgstr "" + +#: app/templates/auth/login.html:14 +msgid "Register new account" +msgstr "" + +#: app/templates/auth/login.html:16 +msgid "Forgot Your Password?" +msgstr "" + +#: app/templates/auth/login.html:17 +msgid "Reset it" +msgstr "" + +#: app/templates/auth/permission_denied.html:8 +#: app/templates/chat/blocked.html:13 app/templates/chat/denied.html:14 +msgid "Sorry" +msgstr "" + +#: app/templates/auth/permission_denied.html:12 +msgid "Your account does not have access to that area." +msgstr "" + +#: app/templates/auth/please_wait.html:8 +msgid "Thanks for registering" +msgstr "" + +#: app/templates/auth/please_wait.html:9 +msgid "" +"We are reviewing your application and will email you once it has been " +"accepted." +msgstr "" + +#: app/templates/auth/register.html:19 +msgid "Create new account" +msgstr "" + +#: app/templates/auth/register.html:22 +msgid "Registration is closed. Only admins can create accounts." +msgstr "" + +#: app/templates/auth/reset_password.html:13 +#: app/templates/auth/reset_password_request.html:13 +msgid "Reset your password" +msgstr "" + +#: app/templates/auth/validation_required.html:8 +msgid "Please check your email inbox" +msgstr "" + +#: app/templates/auth/validation_required.html:12 +msgid "" +"To keep spam and bots to a managable level, we send every new account an " +"email with a link in it that needs to be clicked to fully enable the " +"account." +msgstr "" + +#: app/templates/chat/blocked.html:15 +msgid "You have blocked this person or they have blocked you." +msgstr "" + +#: app/templates/chat/chat_options.html:14 +#, python-format +msgid "Options for conversation with \"%(member_names)s\"" +msgstr "" + +#: app/templates/chat/chat_options.html:17 +msgid "Delete conversation" +msgstr "" + +#: app/templates/chat/chat_options.html:21 +#, python-format +msgid "Block @%(author_name)s" +msgstr "" + +#: app/templates/chat/chat_options.html:26 +#, python-format +msgid "Block chats and posts from instance: %(name)s" +msgstr "" + +#: app/templates/chat/chat_options.html:29 +#: app/templates/post/post_options.html:48 +#: app/templates/post/post_reply_options.html:32 +msgid "Report to moderators" +msgstr "" + +#: app/templates/chat/chat_options.html:31 +msgid "" +"If you are reporting abuse then do not delete the conversation - " +"moderators will not be able to read it if you delete it." +msgstr "" + +#: app/templates/chat/conversation.html:37 +msgid "Chat" +msgstr "" + +#: app/templates/chat/conversation.html:42 app/templates/user/filters.html:56 +#: app/templates/user/notifications.html:14 app/templates/user/people.html:14 +#: app/templates/user/people.html:17 app/templates/user/show_profile.html:19 +#: app/templates/user/show_profile.html:39 app/user/routes.py:34 +msgid "People" +msgstr "" + +#: app/templates/chat/conversation.html:59 +#, python-format +msgid "Messages with %(name)s" +msgstr "" + +#: app/templates/chat/conversation.html:60 +msgid "Messages with: " +msgstr "" + +#: app/templates/chat/conversation.html:75 +#: app/templates/post/_post_teaser.html:80 +msgid "Options" +msgstr "" + +#: app/templates/chat/denied.html:16 +msgid "" +"You have not been using PieFed long enough to be allowed to send messages" +" to people." +msgstr "" + +#: app/templates/chat/empty.html:13 +msgid "No chats" +msgstr "" + +#: app/templates/chat/empty.html:15 +msgid "" +"There are no chats involving you, yet. Start a conversation using the " +"\"Send message\" button on someone's profile." +msgstr "" + +#: app/templates/chat/report.html:14 +#, python-format +msgid "Report conversation with \"%(member_names)s\"" +msgstr "" + +#: app/templates/community/_community_nav.html:3 +#: app/templates/community/add_post.html:11 +#: app/templates/community/community.html:108 +#: app/templates/post/add_reply.html:54 +#: app/templates/post/continue_discussion.html:102 +#: app/templates/post/post.html:170 app/templates/post/post_reply_edit.html:50 +#: app/templates/topic/show_topic.html:68 +msgid "Create post" +msgstr "" + +#: app/templates/community/_community_nav.html:7 +msgid "Sort by hot" +msgstr "" + +#: app/templates/community/_community_nav.html:10 +msgid "Sort by top" +msgstr "" + +#: app/templates/community/_community_nav.html:13 +msgid "Sort by new" +msgstr "" + +#: app/templates/community/_community_nav.html:16 +msgid "Sort by active" +msgstr "" + +#: app/templates/community/_community_nav.html:26 +msgid "Tile" +msgstr "" + +#: app/templates/community/_community_nav.html:29 +msgid "Wide tile" +msgstr "" + +#: app/templates/community/_notification_toggle.html:5 +msgid "Notify about every new post. Not advisable in high traffic communities!" +msgstr "" + +#: app/templates/community/add_local.html:31 +#, python-format +msgid "Only people using %(name)s can post or reply" +msgstr "" + +#: app/templates/community/add_post.html:44 +#: app/templates/community/add_post.html:65 +#: app/templates/community/add_post.html:88 +#: app/templates/post/add_reply.html:37 app/templates/post/post.html:42 +#: app/templates/user/edit_profile.html:44 +msgid "Enable markdown editor" +msgstr "" + +#: app/templates/community/add_post.html:73 +#: app/templates/post/post_edit.html:98 +msgid "Describe the image, to help visually impaired people." +msgstr "" + +#: app/templates/community/add_remote.html:25 +msgid "Found a community:" +msgstr "" + +#: app/templates/community/community.html:27 +#: app/templates/community/community.html:48 +#: app/templates/community/community.html:66 +#: app/templates/post/_post_full.html:20 app/templates/post/_post_full.html:66 +#: app/templates/post/_post_teaser.html:56 +msgid "Not safe for work" +msgstr "" + +#: app/templates/community/community.html:28 +#: app/templates/community/community.html:49 +#: app/templates/community/community.html:67 +msgid "Not safe for life" +msgstr "" + +#: app/templates/community/community.html:76 +#: app/templates/community/community.html:84 +msgid "No posts in this community yet." +msgstr "" + +#: app/templates/community/community.html:121 +#: app/templates/post/add_reply.html:58 +#: app/templates/post/continue_discussion.html:106 +#: app/templates/post/post.html:181 app/templates/post/post_reply_edit.html:54 +msgid "Search this community" +msgstr "" + +#: app/templates/community/community.html:127 +#: app/templates/post/add_reply.html:64 +#: app/templates/post/continue_discussion.html:112 +#: app/templates/post/post.html:187 app/templates/post/post_reply_edit.html:60 +msgid "About community" +msgstr "" + +#: app/templates/community/community.html:146 +#, python-format +msgid "Only people on %(instance_name)s can post or reply in this community." +msgstr "" + +#: app/templates/community/community.html:156 app/templates/post/post.html:205 +msgid "Related communities" +msgstr "" + +#: app/templates/community/community.html:162 app/templates/post/post.html:211 +#: app/templates/topic/show_topic.html:85 +msgid "Go to community" +msgstr "" + +#: app/templates/community/community.html:175 +#: app/templates/post/add_reply.html:82 +#: app/templates/post/continue_discussion.html:130 +#: app/templates/post/post.html:224 app/templates/post/post_reply_edit.html:78 +msgid "Community Settings" +msgstr "" + +#: app/templates/community/community.html:178 +#: app/templates/post/add_reply.html:85 +#: app/templates/post/continue_discussion.html:133 +#: app/templates/post/post.html:227 app/templates/post/post_reply_edit.html:81 +msgid "Moderate" +msgstr "" + +#: app/templates/community/community.html:180 +#: app/templates/community/community_edit.html:15 +#: app/templates/community/community_mod_list.html:15 +#: app/templates/post/add_reply.html:86 +#: app/templates/post/continue_discussion.html:134 +#: app/templates/post/post.html:228 app/templates/post/post_reply_edit.html:82 +#: app/templates/user/_user_nav.html:5 app/templates/user/notifications.html:57 +#: app/templates/user/show_profile.html:121 +msgid "Settings" +msgstr "" + +#: app/templates/community/community_ban_user.html:13 +#, python-format +msgid "Ban \"%(user_name)s\" from %(community_name)s" +msgstr "" + +#: app/templates/community/community_delete.html:13 +#, python-format +msgid "Delete \"%(community_title)s\"" +msgstr "" + +#: app/templates/community/community_edit.html:51 +#: app/templates/community/community_mod_list.html:16 +msgid "Moderators" +msgstr "" + +#: app/templates/community/community_mod_list.html:24 +msgid "Add moderator" +msgstr "" + +#: app/templates/community/community_mod_list.html:41 +msgid "Remove" +msgstr "" + +#: app/templates/domain/domain.html:14 app/templates/domain/domains.html:12 +#: app/templates/domain/domains.html:21 +#: app/templates/domain/domains_blocked.html:21 +#: app/templates/user/filters.html:60 +msgid "Domains" +msgstr "" + +#: app/templates/domain/domain.html:23 +msgid "No posts in this domain yet." +msgstr "" + +#: app/templates/domain/domain.html:45 +msgid "Domain management" +msgstr "" + +#: app/templates/domain/domain.html:51 app/templates/user/filters.html:71 +#: app/templates/user/filters.html:76 app/templates/user/filters.html:89 +#: app/templates/user/filters.html:94 app/templates/user/filters.html:107 +#: app/templates/user/filters.html:112 app/templates/user/filters.html:125 +#: app/templates/user/filters.html:130 app/templates/user/show_profile.html:52 +msgid "Unblock" +msgstr "" + +#: app/templates/domain/domain.html:55 app/templates/user/show_profile.html:54 +msgid "Block" +msgstr "" + +#: app/templates/domain/domain.html:61 +#: app/templates/domain/domains_blocked.html:46 +#: app/templates/user/show_profile.html:166 +msgid "Unban" +msgstr "" + +#: app/templates/domain/domain.html:65 +msgid "Ban instance-wide" +msgstr "" + +#: app/templates/domain/domains.html:14 +#, python-format +msgid "Domains containing \"%(search)s\"" +msgstr "" + +#: app/templates/domain/domains.html:24 +#: app/templates/domain/domains_blocked.html:24 +msgid "Banned domains" +msgstr "" + +#: app/templates/domain/domains.html:38 +msgid "How many times has something on this domain been posted" +msgstr "" + +#: app/templates/domain/domains_blocked.html:12 +msgid "Blocked domains" +msgstr "" + +#: app/templates/domain/domains_blocked.html:14 +#, python-format +msgid "Blocked domains containing \"%(search)s\"" +msgstr "" + +#: app/templates/domain/domains_blocked.html:46 +msgid "Unbanning this domain allows future posts linking to that domain." +msgstr "" + +#: app/templates/domain/domains_blocked.html:48 +msgid "" +"Banning this domain will delete all posts linking to this domain and " +"prevent future posts linking to that domain." +msgstr "" + +#: app/templates/errors/404.html:12 +msgid "Ooops, something is broken!" +msgstr "" + +#: app/templates/errors/404.html:15 +msgid "The page your browser tried to load could not be found." +msgstr "" + +#: app/templates/errors/404.html:16 app/templates/errors/500.html:16 +msgid "Back" +msgstr "" + +#: app/templates/errors/500.html:12 +msgid "An unexpected error has occurred" +msgstr "" + +#: app/templates/errors/500.html:15 +msgid "" +"Sorry for the inconvenience! Please let us know about this, so we can " +"repair it and make PieFed better for everyone." +msgstr "" + +#: app/templates/post/_comment_voting_buttons.html:3 +msgid "UpVote button." +msgstr "" + +#: app/templates/post/_comment_voting_buttons.html:9 +msgid "Score: " +msgstr "" + +#: app/templates/post/_comment_voting_buttons.html:11 +msgid "DownVote button." +msgstr "" + +#: app/templates/post/_comment_voting_buttons.html:21 +msgid "Score:" +msgstr "" + +#: app/templates/post/_post_full.html:21 app/templates/post/_post_full.html:67 +#: app/templates/post/_post_teaser.html:57 +msgid "Potentially emotionally scarring content" +msgstr "" + +#: app/templates/post/_post_full.html:28 app/templates/post/_post_full.html:76 +#: app/templates/post/_post_teaser.html:59 +msgid "Reported. Check post for issues." +msgstr "" + +#: app/templates/post/_post_reply_teaser.html:3 +msgid "View context" +msgstr "" + +#: app/templates/post/_post_teaser.html:6 +#: app/templates/post/_post_teaser_masonry.html:6 +msgid "Filtered: " +msgstr "" + +#: app/templates/post/_post_teaser.html:18 +#: app/templates/post/_post_teaser.html:26 +#: app/templates/post/_post_teaser.html:42 +msgid "Read article" +msgstr "" + +#: app/templates/post/_post_teaser.html:20 +#: app/templates/post/_post_teaser.html:30 +#: app/templates/post/_post_teaser.html:74 +#: app/templates/post/_post_teaser.html:76 +#: app/templates/post/_post_teaser_masonry.html:16 +#: app/templates/post/_post_teaser_masonry.html:20 +#: app/templates/post/_post_teaser_masonry.html:23 +#: app/templates/post/_post_teaser_masonry.html:55 +msgid "View image" +msgstr "" + +#: app/templates/post/_post_teaser.html:22 +#: app/templates/post/_post_teaser.html:34 +msgid "Read post" +msgstr "" + +#: app/templates/post/_post_teaser.html:54 +msgid "All posts about this domain" +msgstr "" + +#: app/templates/post/_post_teaser.html:63 +#, python-format +msgid "Go to community %(name)s" +msgstr "" + +#: app/templates/post/_post_teaser.html:71 +#: app/templates/post/_post_teaser_masonry.html:47 +#: app/templates/post/_post_teaser_masonry.html:48 +#: app/templates/post/_post_teaser_masonry.html:68 +#: app/templates/post/_post_teaser_masonry.html:69 +msgid "View comments" +msgstr "" + +#: app/templates/post/_post_teaser.html:71 +msgid "Number of comments:" +msgstr "" + +#: app/templates/post/_post_voting_buttons.html:3 +#, python-format +msgid "UpVote button, %(count)d upvotes so far." +msgstr "" + +#: app/templates/post/_post_voting_buttons.html:11 +#, python-format +msgid "DownVote button, %(count)d downvotes so far." +msgstr "" + +#: app/templates/post/_post_voting_buttons_masonry.html:3 +msgid "UpVote" +msgstr "" + +#: app/templates/post/_post_voting_buttons_masonry.html:10 +msgid "DownVote" +msgstr "" + +#: app/templates/post/add_reply.html:21 app/templates/post/post.html:23 +msgid "" +"This post is hosted on beehaw.org which has higher standards of behaviour than " +"most places. Be nice." +msgstr "" + +#: app/templates/post/continue_discussion.html:44 +#: app/templates/post/post.html:105 +msgid "Reported. Check comment for issues." +msgstr "" + +#: app/templates/post/post.html:26 +msgid "" +"This post is hosted on lemmy.ml which will ban you for saying anything " +"negative about China, Russia or Putin. Tread carefully." +msgstr "" + +#: app/templates/post/post.html:52 +msgid "Verify your email address to comment" +msgstr "" + +#: app/templates/post/post.html:55 +msgid "Log in to comment" +msgstr "" + +#: app/templates/post/post.html:58 +msgid "Comments are disabled." +msgstr "" + +#: app/templates/post/post.html:65 +msgid "Sort by magic" +msgstr "" + +#: app/templates/post/post.html:68 +msgid "Comments with the most upvotes" +msgstr "" + +#: app/templates/post/post.html:71 +msgid "Show newest first" +msgstr "" + +#: app/templates/post/post.html:87 +msgid "Author" +msgstr "" + +#: app/templates/post/post.html:101 +msgid "Post creator" +msgstr "" + +#: app/templates/post/post.html:102 +msgid "When: " +msgstr "" + +#: app/templates/post/post.html:131 +msgid "Comment options" +msgstr "" + +#: app/templates/post/post_mea_culpa.html:15 +msgid "" +"If you wish to de-escalate the discussion on your post and now feel like " +"it was a mistake, click the button below." +msgstr "" + +#: app/templates/post/post_mea_culpa.html:16 +msgid "" +"No further comments will be posted and a message saying you made a " +"mistake in this post will be displayed." +msgstr "" + +#: app/templates/post/post_mea_culpa.html:17 +msgid "The effect of downvotes on your reputation score will be removed." +msgstr "" + +#: app/templates/post/post_options.html:13 +#, python-format +msgid "Options for \"%(post_title)s\"" +msgstr "" + +#: app/templates/post/post_options.html:18 +#: app/templates/post/post_reply_options.html:18 +msgid "Edit" +msgstr "" + +#: app/templates/post/post_options.html:24 +msgid "I made a mistake with this post and have changed my mind about the topic" +msgstr "" + +#: app/templates/post/post_options.html:28 +#, python-format +msgid "Block post author @%(author_name)s" +msgstr "" + +#: app/templates/post/post_options.html:31 +#, python-format +msgid "Ban post author @%(author_name)s from
%(community_name)s" +msgstr "" + +#: app/templates/post/post_options.html:35 +#, python-format +msgid "Block domain %(domain)s" +msgstr "" + +#: app/templates/post/post_options.html:39 +#: app/templates/post/post_reply_options.html:27 +#, python-format +msgid "Hide every post from author's instance: %(name)s" +msgstr "" + +#: app/templates/post/post_options.html:45 +#, python-format +msgid "View original on %(domain)s" +msgstr "" + +#: app/templates/post/post_options.html:50 +#: app/templates/post/post_reply_options.html:34 +msgid "" +"If you want to perform more than one of these (e.g. block and report), " +"hold down Ctrl and click, then complete the operation in the new tabs " +"that open." +msgstr "" + +#: app/templates/post/post_reply_edit.html:44 +msgid "Unsubscribe" +msgstr "" + +#: app/templates/post/post_reply_edit.html:46 +msgid "Subscribe" +msgstr "" + +#: app/templates/post/post_reply_options.html:13 +#, python-format +msgid "Options for comment on \"%(post_title)s\"" +msgstr "" + +#: app/templates/post/post_reply_options.html:24 +#, python-format +msgid "Block author @%(author_name)s" +msgstr "" + +#: app/templates/post/post_reply_report.html:13 +#, python-format +msgid "Report comment on \"%(post_title)s\" by %(reply_name)s" +msgstr "" + +#: app/templates/post/post_report.html:13 +#, python-format +msgid "Report \"%(post_title)s\"" +msgstr "" + +#: app/templates/search/results.html:11 +msgid "Search results for" +msgstr "" + +#: app/templates/search/results.html:16 +msgid "No posts match your search." +msgstr "" + +#: app/templates/search/start.html:13 +msgid "Search for posts" +msgstr "" + +#: app/templates/search/start.html:20 +msgid "Example searches:" +msgstr "" + +#: app/templates/search/start.html:23 +msgid "star wars" +msgstr "" + +#: app/templates/search/start.html:24 +msgid "" +"There is an implied \"and\" here. Results will have both words somewhere " +"in them." +msgstr "" + +#: app/templates/search/start.html:27 +msgid "star or wars" +msgstr "" + +#: app/templates/search/start.html:28 +msgid "" +"This will broaden the search to include results that contain any of the " +"words." +msgstr "" + +#: app/templates/search/start.html:31 +msgid "star -wars" +msgstr "" + +#: app/templates/search/start.html:32 +msgid "" +"To search for things containing \"star\" but not \"wars\" you can put a -" +" before the word you want to exclude." +msgstr "" + +#: app/templates/search/start.html:35 +msgid "\"star wars\"" +msgstr "" + +#: app/templates/search/start.html:36 +msgid "Results will have exactly that phrase in them." +msgstr "" + +#: app/templates/topic/choose_topics.html:9 +msgid "Please choose at least 3 topics that interest you." +msgstr "" + +#: app/templates/topic/show_topic.html:23 +msgid "Sub-topics" +msgstr "" + +#: app/templates/topic/show_topic.html:36 +#: app/templates/topic/show_topic.html:44 +msgid "No posts in this topic yet." +msgstr "" + +#: app/templates/topic/show_topic.html:79 +msgid "Topic communities" +msgstr "" + +#: app/templates/topic/topic_create_post.html:9 +#, python-format +msgid "Which community within %(topic)s to post in?" +msgstr "" + +#: app/templates/topic/topic_create_post.html:17 +#, python-format +msgid "Post in %(name)s" +msgstr "" + +#: app/templates/user/_user_nav.html:8 app/templates/user/notifications.html:54 +#: app/templates/user/show_profile.html:118 +msgid "Profile" +msgstr "" + +#: app/templates/user/_user_nav.html:11 +msgid "Blocks & Filters" +msgstr "" + +#: app/templates/user/delete_account.html:15 +#: app/templates/user/edit_settings.html:17 +#: app/templates/user/edit_settings.html:20 +msgid "Change settings" +msgstr "" + +#: app/templates/user/delete_account.html:18 +#, python-format +msgid "Delete %(username)s" +msgstr "" + +#: app/templates/user/delete_account.html:20 +#, python-format +msgid "" +"You are about to permanently delete the account with the username " +"\"%(username)s.\" This means your profile will " +"disappear, pictures will be deleted. Text-based posts will stay but look " +"like they are from someone named \"deleted.\"" +msgstr "" + +#: app/templates/user/delete_account.html:21 +#, python-format +msgid "" +"Once you hit delete, nobody can use \"%(username)s\" as a username again." +" We are doing this so nobody pretends to be you." +msgstr "" + +#: app/templates/user/delete_account.html:22 +msgid "" +"We will tell other websites (fediverse instances) that your account is " +"gone. But it's up to them to decide what to do with any copies they have " +"of your stuff. Some websites work differently than ours." +msgstr "" + +#: app/templates/user/delete_account.html:23 +msgid "" +"Remember, once you do this, there's no going back. Are you sure you want " +"to continue?" +msgstr "" + +#: app/templates/user/edit_filters.html:16 app/templates/user/filters.html:16 +#: app/templates/user/filters.html:19 +msgid "Filters" +msgstr "" + +#: app/templates/user/edit_filters.html:18 app/user/routes.py:713 +msgid "Edit filter" +msgstr "" + +#: app/templates/user/edit_filters.html:20 +#: app/templates/user/edit_filters.html:27 app/templates/user/filters.html:22 +#: app/user/routes.py:673 +msgid "Add filter" +msgstr "" + +#: app/templates/user/edit_filters.html:25 +#, python-format +msgid "Filter %(name)s" +msgstr "" + +#: app/templates/user/edit_filters.html:33 +msgid "Filter in these places" +msgstr "" + +#: app/templates/user/edit_filters.html:39 +msgid "One per line. Case does not matter." +msgstr "" + +#: app/templates/user/edit_filters.html:41 +msgid "Stop applying this filter after this date. Optional." +msgstr "" + +#: app/templates/user/edit_profile.html:16 app/user/routes.py:147 +#: app/user/routes.py:212 +msgid "Edit profile" +msgstr "" + +#: app/templates/user/edit_profile.html:19 +#, python-format +msgid "Edit profile of %(name)s" +msgstr "" + +#: app/templates/user/edit_profile.html:58 +msgid "Delete account" +msgstr "" + +#: app/templates/user/email_notifs_unsubscribed.html:9 +#: app/templates/user/newsletter_unsubscribed.html:9 +msgid "Unsubscribed" +msgstr "" + +#: app/templates/user/email_notifs_unsubscribed.html:10 +msgid "" +"You have unsubscribed from emails about unread notifications. We might " +"email you for other reasons, though." +msgstr "" + +#: app/templates/user/email_notifs_unsubscribed.html:11 +#: app/templates/user/newsletter_unsubscribed.html:11 +msgid "More email settings" +msgstr "" + +#: app/templates/user/filters.html:25 +msgid "" +"Filters can hide posts that contain keywords you specify, either by " +"making them less noticeable or invisible." +msgstr "" + +#: app/templates/user/filters.html:30 +msgid "Keywords" +msgstr "" + +#: app/templates/user/filters.html:32 +msgid "Expires" +msgstr "" + +#: app/templates/user/filters.html:39 +msgid "Invisible" +msgstr "" + +#: app/templates/user/filters.html:39 +msgid "Semi-transparent" +msgstr "" + +#: app/templates/user/filters.html:49 +msgid "No filters defined yet." +msgstr "" + +#: app/templates/user/filters.html:62 +msgid "Instances" +msgstr "" + +#: app/templates/user/filters.html:81 +msgid "No blocked people" +msgstr "" + +#: app/templates/user/filters.html:99 +msgid "No blocked communities" +msgstr "" + +#: app/templates/user/filters.html:117 +msgid "No blocked domains" +msgstr "" + +#: app/templates/user/filters.html:135 +msgid "No blocked instances" +msgstr "" + +#: app/templates/user/newsletter_unsubscribed.html:10 +msgid "" +"You have unsubscribed from the email newsletter. We might email you for " +"other reasons, though." +msgstr "" + +#: app/templates/user/notifications.html:25 +msgid "Mark all as read" +msgstr "" + +#: app/templates/user/notifications.html:49 +#: app/templates/user/show_profile.html:113 +msgid "Manage" +msgstr "" + +#: app/templates/user/notifications.html:95 +#: app/templates/user/show_profile.html:189 +msgid "Upvoted" +msgstr "" + +#: app/templates/user/people.html:32 +msgid "No people to show" +msgstr "" + +#: app/templates/user/show_profile.html:24 +#: app/templates/user/show_profile.html:29 +msgid "Profile pic" +msgstr "" + +#: app/templates/user/show_profile.html:47 +msgid "Send message" +msgstr "" + +#: app/templates/user/show_profile.html:49 +msgid "Send message with matrix chat" +msgstr "" + +#: app/templates/user/show_profile.html:49 +msgid "Send message using Matrix" +msgstr "" + +#: app/templates/user/show_profile.html:60 +msgid "Attitude" +msgstr "" + +#: app/templates/user/show_profile.html:60 +msgid "Ratio of upvotes cast to downvotes cast. Higher is more positive." +msgstr "" + +#: app/templates/user/show_profile.html:69 +msgid "Post pagination" +msgstr "" + +#: app/templates/user/show_profile.html:82 +msgid "No posts yet." +msgstr "" + +#: app/templates/user/show_profile.html:92 +msgid "Comment pagination" +msgstr "" + +#: app/templates/user/show_profile.html:105 +msgid "No comments yet." +msgstr "" + +#: app/templates/user/show_profile.html:134 +msgid "Member of" +msgstr "" + +#: app/templates/user/show_profile.html:159 +msgid "Crush" +msgstr "" + +#: app/templates/user/show_profile.html:179 +msgid "Ban + Purge" +msgstr "" + +#: app/templates/user/user_report.html:13 +#, python-format +msgid "Report \"%(user_name)s\"" +msgstr "" + +#: app/topic/forms.py:13 +msgid "Choose some topics you are interested in" +msgstr "" + +#: app/topic/forms.py:14 +msgid "Choose" +msgstr "" + +#: app/topic/routes.py:168 +msgid "" +"You have joined some communities relating to those interests. Find them " +"on the Topics menu or browse the home page." +msgstr "" + +#: app/topic/routes.py:172 +msgid "" +"You did not choose any topics. Would you like to choose individual " +"communities instead?" +msgstr "" + +#: app/user/forms.py:13 +msgid "Display name" +msgstr "" + +#: app/user/forms.py:15 +msgid "Set new password" +msgstr "" + +#: app/user/forms.py:22 +msgid "Save profile" +msgstr "" + +#: app/user/forms.py:26 +msgid "That email address is already in use by another account" +msgstr "" + +#: app/user/forms.py:30 +msgid "Matrix user ids start with @" +msgstr "" + +#: app/user/forms.py:35 +msgid "Receive email about missed notifications" +msgstr "" + +#: app/user/forms.py:39 +msgid "Use markdown editor GUI when writing" +msgstr "" + +#: app/user/forms.py:41 +msgid "My posts appear in search results" +msgstr "" + +#: app/user/forms.py:43 +msgid "Import community subscriptions and user blocks from Lemmy" +msgstr "" + +#: app/user/forms.py:49 +msgid "By default, sort posts by" +msgstr "" + +#: app/user/forms.py:50 +msgid "Theme" +msgstr "" + +#: app/user/forms.py:51 +msgid "Save settings" +msgstr "" + +#: app/user/forms.py:55 +msgid "Yes, delete my account" +msgstr "" + +#: app/user/forms.py:66 +msgid "Malicious reporting" +msgstr "" + +#: app/user/forms.py:90 +msgid "Home feed" +msgstr "" + +#: app/user/forms.py:91 +msgid "Posts in communities" +msgstr "" + +#: app/user/forms.py:92 +msgid "Comments on posts" +msgstr "" + +#: app/user/forms.py:93 +msgid "Make semi-transparent" +msgstr "" + +#: app/user/forms.py:93 +msgid "Hide completely" +msgstr "" + +#: app/user/forms.py:94 +msgid "Action to take" +msgstr "" + +#: app/user/forms.py:95 +msgid "Keywords that trigger this filter" +msgstr "" + +#: app/user/forms.py:98 +msgid "Expire after" +msgstr "" + +#: app/user/routes.py:42 +msgid "This user has been banned." +msgstr "" + +#: app/user/routes.py:44 +msgid "This user has been deleted." +msgstr "" + +#: app/user/routes.py:77 +#, python-format +msgid "Posts by %(user_name)s" +msgstr "" + +#: app/user/routes.py:194 +msgid "" +"Your subscriptions and blocks are being imported. If you have many it " +"could take a few minutes." +msgstr "" + +#: app/user/routes.py:229 +msgid "You cannot ban yourself." +msgstr "" + +#: app/user/routes.py:254 +msgid "You cannot unban yourself." +msgstr "" + +#: app/user/routes.py:278 +msgid "You cannot block yourself." +msgstr "" + +#: app/user/routes.py:307 +msgid "You cannot unblock yourself." +msgstr "" + +#: app/user/routes.py:352 +#, python-format +msgid "%(user_name)s has been reported, thank you!" +msgstr "" + +#: app/user/routes.py:358 +msgid "Report user" +msgstr "" + +#: app/user/routes.py:375 +msgid "You cannot delete yourself." +msgstr "" + +#: app/user/routes.py:432 +msgid "Account deletion in progress. Give it a few minutes." +msgstr "" + +#: app/user/routes.py:437 +msgid "Delete my account" +msgstr "" + +#: app/user/routes.py:482 +msgid "You cannot purge yourself." +msgstr "" + +#: app/user/routes.py:559 +msgid "All notifications marked as read." +msgstr "" + +#: app/user/routes.py:730 +msgid "Filter deleted." +msgstr "" + diff --git a/app/translations/pt/LC_MESSAGES/messages.po b/app/translations/pt/LC_MESSAGES/messages.po new file mode 100644 index 00000000..030a3e78 --- /dev/null +++ b/app/translations/pt/LC_MESSAGES/messages.po @@ -0,0 +1,2683 @@ +# Portuguese translations for PROJECT. +# Copyright (C) 2024 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2024-03-17 19:06+1300\n" +"PO-Revision-Date: 2024-03-17 19:10+1300\n" +"Last-Translator: FULL NAME \n" +"Language: pt\n" +"Language-Team: pt \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: app/__init__.py:26 +msgid "Please log in to access this page." +msgstr "" + +#: app/cli.py:238 app/main/routes.py:300 +msgid "[PieFed] You have unread notifications" +msgstr "" + +#: app/email.py:16 +msgid "[PieFed] Reset Your Password" +msgstr "" + +#: app/email.py:26 +msgid "[PieFed] Please verify your email address" +msgstr "" + +#: app/email.py:34 +msgid "Your application has been approved - welcome to PieFed" +msgstr "" + +#: app/email.py:34 +msgid "Welcome to PieFed" +msgstr "" + +#: app/activitypub/util.py:1205 app/post/routes.py:85 app/post/routes.py:472 +#, python-format +msgid "Reply from %(name)s on %(post_title)s" +msgstr "" + +#: app/admin/forms.py:13 app/admin/forms.py:97 app/community/forms.py:18 +#: app/templates/community/community_mod_list.html:30 +#: app/templates/user/filters.html:29 app/templates/user/filters.html:70 +#: app/templates/user/filters.html:88 app/templates/user/filters.html:106 +#: app/templates/user/filters.html:124 app/user/forms.py:89 +msgid "Name" +msgstr "" + +#: app/admin/forms.py:14 +msgid "Tagline" +msgstr "" + +#: app/admin/forms.py:15 +msgid "Icon" +msgstr "" + +#: app/admin/forms.py:18 +msgid "Sidebar" +msgstr "" + +#: app/admin/forms.py:19 +msgid "Legal information" +msgstr "" + +#: app/admin/forms.py:20 app/admin/forms.py:36 app/admin/forms.py:44 +#: app/admin/forms.py:81 app/admin/forms.py:100 app/admin/forms.py:126 +#: app/admin/forms.py:188 app/community/forms.py:56 app/community/forms.py:95 +#: app/user/forms.py:99 +msgid "Save" +msgstr "" + +#: app/admin/forms.py:24 +msgid "Enable downvotes" +msgstr "" + +#: app/admin/forms.py:25 +msgid "Allow local image posts" +msgstr "" + +#: app/admin/forms.py:26 +msgid "Days to cache images from remote instances for" +msgstr "" + +#: app/admin/forms.py:27 +msgid "Allow NSFW communities" +msgstr "" + +#: app/admin/forms.py:28 +msgid "Allow NSFL communities and posts" +msgstr "" + +#: app/admin/forms.py:29 +msgid "Only admins can create new local communities" +msgstr "" + +#: app/admin/forms.py:30 +msgid "Notify admins about reports, not just moderators" +msgstr "" + +#: app/admin/forms.py:31 +msgid "Open" +msgstr "" + +#: app/admin/forms.py:31 +msgid "Require application" +msgstr "" + +#: app/admin/forms.py:31 +msgid "Closed" +msgstr "" + +#: app/admin/forms.py:32 +msgid "Registration mode" +msgstr "" + +#: app/admin/forms.py:33 +msgid "Question to ask people applying for an account" +msgstr "" + +#: app/admin/forms.py:34 +msgid "Log ActivityPub JSON for debugging" +msgstr "" + +#: app/admin/forms.py:35 +msgid "Default theme" +msgstr "" + +#: app/admin/forms.py:40 +msgid "Allowlist instead of blocklist" +msgstr "" + +#: app/admin/forms.py:41 +msgid "Allow federation with these instances" +msgstr "" + +#: app/admin/forms.py:42 +msgid "Blocklist instead of allowlist" +msgstr "" + +#: app/admin/forms.py:43 +msgid "Deny federation with these instances" +msgstr "" + +#: app/admin/forms.py:48 app/community/forms.py:42 app/community/forms.py:80 +#: app/community/forms.py:82 app/community/forms.py:86 +msgid "Title" +msgstr "" + +#: app/admin/forms.py:49 app/admin/forms.py:98 app/community/forms.py:19 +msgid "Url" +msgstr "" + +#: app/admin/forms.py:50 app/community/forms.py:20 app/community/forms.py:43 +msgid "Description" +msgstr "" + +#: app/admin/forms.py:51 app/community/forms.py:21 app/community/forms.py:44 +msgid "Icon image" +msgstr "" + +#: app/admin/forms.py:52 app/community/forms.py:22 app/community/forms.py:45 +msgid "Banner image" +msgstr "" + +#: app/admin/forms.py:53 app/community/forms.py:23 app/community/forms.py:46 +msgid "Rules" +msgstr "" + +#: app/admin/forms.py:54 app/community/forms.py:47 +msgid "Porn community" +msgstr "" + +#: app/admin/forms.py:55 +msgid "Banned - no new posts accepted" +msgstr "" + +#: app/admin/forms.py:56 app/community/forms.py:48 +msgid "Only accept posts from current instance" +msgstr "" + +#: app/admin/forms.py:57 app/community/forms.py:49 +msgid "Only moderators can post" +msgstr "" + +#: app/admin/forms.py:58 app/community/forms.py:50 +msgid "New moderators wanted" +msgstr "" + +#: app/admin/forms.py:59 +msgid "Posts show on home page" +msgstr "" + +#: app/admin/forms.py:60 +msgid "Posts can be popular" +msgstr "" + +#: app/admin/forms.py:61 +msgid "Posts show in All list" +msgstr "" + +#: app/admin/forms.py:62 +msgid "Low quality / toxic - upvotes in here don't add to reputation" +msgstr "" + +#: app/admin/forms.py:63 +msgid "Forever" +msgstr "" + +#: app/admin/forms.py:64 +msgid "1 week" +msgstr "" + +#: app/admin/forms.py:65 +msgid "2 weeks" +msgstr "" + +#: app/admin/forms.py:66 +msgid "1 month" +msgstr "" + +#: app/admin/forms.py:67 +msgid "2 months" +msgstr "" + +#: app/admin/forms.py:68 +msgid "3 months" +msgstr "" + +#: app/admin/forms.py:69 +msgid "6 months" +msgstr "" + +#: app/admin/forms.py:70 +msgid "1 year" +msgstr "" + +#: app/admin/forms.py:71 +msgid "2 years" +msgstr "" + +#: app/admin/forms.py:72 +msgid "5 years" +msgstr "" + +#: app/admin/forms.py:73 +msgid "10 years" +msgstr "" + +#: app/admin/forms.py:75 +msgid "Retain content" +msgstr "" + +#: app/admin/forms.py:76 app/community/forms.py:51 +msgid "Topic" +msgstr "" + +#: app/admin/forms.py:77 app/community/forms.py:52 +#: app/templates/community/_community_nav.html:23 +msgid "List" +msgstr "" + +#: app/admin/forms.py:78 app/community/forms.py:53 +msgid "Masonry" +msgstr "" + +#: app/admin/forms.py:79 app/community/forms.py:54 +msgid "Wide masonry" +msgstr "" + +#: app/admin/forms.py:80 app/community/forms.py:55 +msgid "Layout" +msgstr "" + +#: app/admin/forms.py:87 app/community/forms.py:32 +msgid "Url is required." +msgstr "" + +#: app/admin/forms.py:91 app/community/forms.py:36 +msgid "- cannot be in Url. Use _ instead?" +msgstr "" + +#: app/admin/forms.py:99 +msgid "Parent topic" +msgstr "" + +#: app/admin/forms.py:104 app/auth/forms.py:10 app/auth/forms.py:17 +#: app/community/forms.py:60 +msgid "User name" +msgstr "" + +#: app/admin/forms.py:106 app/admin/forms.py:169 app/user/forms.py:14 +msgid "Email address" +msgstr "" + +#: app/admin/forms.py:107 app/auth/forms.py:11 app/auth/forms.py:20 +#: app/auth/forms.py:74 +msgid "Password" +msgstr "" + +#: app/admin/forms.py:109 app/auth/forms.py:22 app/auth/forms.py:76 +msgid "Repeat password" +msgstr "" + +#: app/admin/forms.py:110 app/admin/forms.py:168 app/user/forms.py:17 +msgid "Bio" +msgstr "" + +#: app/admin/forms.py:111 app/admin/forms.py:170 app/user/forms.py:18 +msgid "Matrix User ID" +msgstr "" + +#: app/admin/forms.py:112 app/admin/forms.py:171 app/user/forms.py:19 +msgid "Avatar image" +msgstr "" + +#: app/admin/forms.py:113 app/admin/forms.py:172 app/user/forms.py:20 +msgid "Top banner image" +msgstr "" + +#: app/admin/forms.py:114 app/admin/forms.py:173 app/user/forms.py:21 +msgid "This profile is a bot" +msgstr "" + +#: app/admin/forms.py:115 app/admin/forms.py:174 +msgid "Email address is verified" +msgstr "" + +#: app/admin/forms.py:116 app/admin/forms.py:175 +msgid "Banned" +msgstr "" + +#: app/admin/forms.py:117 app/admin/forms.py:176 app/user/forms.py:34 +msgid "Subscribe to email newsletter" +msgstr "" + +#: app/admin/forms.py:118 app/admin/forms.py:177 app/user/forms.py:36 +msgid "Hide posts by bots" +msgstr "" + +#: app/admin/forms.py:119 app/admin/forms.py:178 app/user/forms.py:37 +msgid "Show NSFW posts" +msgstr "" + +#: app/admin/forms.py:120 app/admin/forms.py:179 app/user/forms.py:38 +msgid "Show NSFL posts" +msgstr "" + +#: app/admin/forms.py:121 app/admin/forms.py:183 +msgid "User" +msgstr "" + +#: app/admin/forms.py:122 app/admin/forms.py:184 +msgid "Staff" +msgstr "" + +#: app/admin/forms.py:123 app/admin/forms.py:185 app/admin/routes.py:29 +#: app/templates/base.html:180 +msgid "Admin" +msgstr "" + +#: app/admin/forms.py:125 app/admin/forms.py:187 +msgid "Role" +msgstr "" + +#: app/admin/forms.py:131 app/auth/forms.py:32 +msgid "An account with this email address already exists." +msgstr "" + +#: app/admin/forms.py:135 app/auth/forms.py:36 +msgid "User names cannot contain @." +msgstr "" + +#: app/admin/forms.py:139 app/auth/forms.py:40 +msgid "This username was used in the past and cannot be reused." +msgstr "" + +#: app/admin/forms.py:141 app/auth/forms.py:42 +msgid "An account with this user name already exists." +msgstr "" + +#: app/admin/forms.py:144 app/auth/forms.py:45 +msgid "A community with this name exists so it cannot be used for a user." +msgstr "" + +#: app/admin/forms.py:151 app/admin/forms.py:164 app/auth/forms.py:52 +#: app/auth/forms.py:65 +msgid "This password is too common." +msgstr "" + +#: app/admin/forms.py:161 app/auth/forms.py:62 +msgid "This password is not secure." +msgstr "" + +#: app/admin/forms.py:180 app/user/forms.py:40 +msgid "Show profile in user list" +msgstr "" + +#: app/admin/forms.py:181 +msgid "Allow search engines to index this profile" +msgstr "" + +#: app/admin/forms.py:182 app/user/forms.py:42 +msgid "Manually approve followers" +msgstr "" + +#: app/admin/forms.py:192 +msgid "Subject" +msgstr "" + +#: app/admin/forms.py:193 +msgid "Body (text)" +msgstr "" + +#: app/admin/forms.py:194 +msgid "Body (html)" +msgstr "" + +#: app/admin/forms.py:195 +msgid "Test mode" +msgstr "" + +#: app/admin/forms.py:196 app/admin/routes.py:732 +msgid "Send newsletter" +msgstr "" + +#: app/admin/routes.py:57 app/templates/admin/_nav.html:4 +msgid "Site profile" +msgstr "" + +#: app/admin/routes.py:102 app/templates/admin/_nav.html:5 +msgid "Misc settings" +msgstr "" + +#: app/admin/routes.py:133 +msgid "Admin settings saved" +msgstr "" + +#: app/admin/routes.py:143 +msgid "Federation settings" +msgstr "" + +#: app/admin/routes.py:165 +msgid "ActivityPub Log" +msgstr "" + +#: app/admin/routes.py:175 +msgid "Activity JSON" +msgstr "" + +#: app/admin/routes.py:210 app/community/routes.py:215 app/main/routes.py:181 +#: app/post/routes.py:211 app/templates/admin/_nav.html:6 +#: app/templates/list_communities.html:51 app/templates/user/filters.html:58 +#: app/templates/user/notifications.html:66 +#: app/templates/user/show_profile.html:130 +msgid "Communities" +msgstr "" + +#: app/admin/routes.py:262 app/admin/routes.py:358 app/admin/routes.py:383 +#: app/admin/routes.py:578 app/community/routes.py:630 +msgid "Saved" +msgstr "" + +#: app/admin/routes.py:266 +msgid "" +"This is a remote community - most settings here will be regularly " +"overwritten with data from the original server." +msgstr "" + +#: app/admin/routes.py:283 app/community/routes.py:642 +#: app/templates/community/community_edit.html:20 +msgid "Edit community" +msgstr "" + +#: app/admin/routes.py:302 app/community/routes.py:664 +msgid "Community deleted" +msgstr "" + +#: app/admin/routes.py:336 app/community/routes.py:201 app/post/routes.py:197 +#: app/templates/admin/_nav.html:7 app/templates/base.html:134 +#: app/templates/base.html:152 app/templates/topic/show_topic.html:14 +msgid "Topics" +msgstr "" + +#: app/admin/routes.py:361 app/templates/admin/topics.html:35 +msgid "Add topic" +msgstr "" + +#: app/admin/routes.py:389 +msgid "Edit topic" +msgstr "" + +#: app/admin/routes.py:404 +msgid "Topic deleted" +msgstr "" + +#: app/admin/routes.py:406 +msgid "Cannot delete topic with communities assigned to it." +msgstr "" + +#: app/admin/routes.py:433 app/templates/admin/_nav.html:8 +msgid "Users" +msgstr "" + +#: app/admin/routes.py:463 +msgid "Problematic users" +msgstr "" + +#: app/admin/routes.py:484 +msgid "Bad posts" +msgstr "" + +#: app/admin/routes.py:517 +msgid "Registration approved." +msgstr "" + +#: app/admin/routes.py:574 +msgid "" +"Permissions are cached for 50 seconds so new admin roles won't take " +"effect immediately." +msgstr "" + +#: app/admin/routes.py:582 +msgid "" +"This is a remote user - most settings here will be regularly overwritten " +"with data from the original server." +msgstr "" + +#: app/admin/routes.py:599 +msgid "Edit user" +msgstr "" + +#: app/admin/routes.py:664 +msgid "User added" +msgstr "" + +#: app/admin/routes.py:667 +msgid "Add user" +msgstr "" + +#: app/admin/routes.py:691 +msgid "User deleted" +msgstr "" + +#: app/admin/routes.py:714 +msgid "Reports" +msgstr "" + +#: app/admin/util.py:125 +msgid "None" +msgstr "" + +#: app/auth/forms.py:12 +msgid "Low bandwidth mode" +msgstr "" + +#: app/auth/forms.py:13 +msgid "Log In" +msgstr "" + +#: app/auth/forms.py:18 app/auth/forms.py:19 app/auth/forms.py:69 +msgid "Email" +msgstr "" + +#: app/auth/forms.py:24 +msgid "Why would you like to join this site?" +msgstr "" + +#: app/auth/forms.py:27 app/auth/routes.py:140 app/templates/base.html:141 +msgid "Register" +msgstr "" + +#: app/auth/forms.py:70 +msgid "Request password reset" +msgstr "" + +#: app/auth/forms.py:78 +msgid "Set password" +msgstr "" + +#: app/auth/routes.py:29 app/auth/routes.py:32 +msgid "No account exists with that user name." +msgstr "" + +#: app/auth/routes.py:36 +msgid "" +"Invalid password. Please reset " +"your password." +msgstr "" + +#: app/auth/routes.py:39 +msgid "Invalid password" +msgstr "" + +#: app/auth/routes.py:42 +msgid "You have been banned." +msgstr "" + +#: app/auth/routes.py:74 +msgid "Login" +msgstr "" + +#: app/auth/routes.py:97 +msgid "Sorry, you cannot use that email address" +msgstr "" + +#: app/auth/routes.py:99 +msgid "Sorry, you cannot use that user name" +msgstr "" + +#: app/auth/routes.py:106 +#, python-format +msgid "Your username contained special letters so it was changed to %(name)s." +msgstr "" + +#: app/auth/routes.py:145 +msgid "Account under review" +msgstr "" + +#: app/auth/routes.py:150 app/templates/auth/check_email.html:8 +msgid "Check your email" +msgstr "" + +#: app/auth/routes.py:161 +msgid "Sorry, you cannot use that email address." +msgstr "" + +#: app/auth/routes.py:166 +msgid "Check your email for a link to reset your password." +msgstr "" + +#: app/auth/routes.py:169 +msgid "No account with that email address exists" +msgstr "" + +#: app/auth/routes.py:171 +msgid "Reset Password" +msgstr "" + +#: app/auth/routes.py:185 +#, python-format +msgid "" +"Your password has been reset. Please use it to log in with user name of " +"%(name)s." +msgstr "" + +#: app/auth/routes.py:205 +msgid "Thank you for verifying your email address." +msgstr "" + +#: app/auth/routes.py:207 +msgid "Email address validation failed." +msgstr "" + +#: app/chat/forms.py:13 +msgid "Message" +msgstr "" + +#: app/chat/forms.py:14 +msgid "Reply" +msgstr "" + +#: app/chat/forms.py:18 app/post/forms.py:16 app/user/forms.py:60 +msgid "Spam" +msgstr "" + +#: app/chat/forms.py:19 app/post/forms.py:16 app/user/forms.py:61 +msgid "Harassment" +msgstr "" + +#: app/chat/forms.py:20 app/post/forms.py:17 app/user/forms.py:62 +msgid "Threatening violence" +msgstr "" + +#: app/chat/forms.py:21 app/user/forms.py:63 +msgid "Promoting hate / genocide" +msgstr "" + +#: app/chat/forms.py:22 app/post/forms.py:18 app/user/forms.py:64 +msgid "Misinformation / disinformation" +msgstr "" + +#: app/chat/forms.py:23 app/post/forms.py:19 app/user/forms.py:65 +msgid "Racism, sexism, transphobia" +msgstr "" + +#: app/chat/forms.py:24 app/post/forms.py:21 app/user/forms.py:68 +msgid "Minor abuse or sexualization" +msgstr "" + +#: app/chat/forms.py:25 app/post/forms.py:22 app/user/forms.py:69 +msgid "Non-consensual intimate media" +msgstr "" + +#: app/chat/forms.py:26 app/post/forms.py:23 app/user/forms.py:70 +msgid "Prohibited transaction" +msgstr "" + +#: app/chat/forms.py:26 app/post/forms.py:23 app/user/forms.py:70 +msgid "Impersonation" +msgstr "" + +#: app/chat/forms.py:27 app/post/forms.py:24 app/user/forms.py:71 +msgid "Copyright violation" +msgstr "" + +#: app/chat/forms.py:27 app/post/forms.py:24 app/user/forms.py:71 +msgid "Trademark violation" +msgstr "" + +#: app/chat/forms.py:28 app/post/forms.py:25 app/user/forms.py:72 +msgid "Self-harm or suicide" +msgstr "" + +#: app/chat/forms.py:29 app/community/forms.py:155 app/post/forms.py:26 +#: app/user/forms.py:73 +msgid "Other" +msgstr "" + +#: app/chat/forms.py:30 app/community/forms.py:70 app/community/forms.py:157 +#: app/post/forms.py:27 app/user/forms.py:74 +msgid "Reason" +msgstr "" + +#: app/chat/forms.py:31 app/community/forms.py:158 app/post/forms.py:28 +#: app/user/forms.py:75 +msgid "More info" +msgstr "" + +#: app/chat/forms.py:33 app/community/forms.py:160 app/post/forms.py:30 +#: app/templates/user/show_profile.html:56 app/user/forms.py:77 +msgid "Report" +msgstr "" + +#: app/chat/routes.py:49 +#, python-format +msgid "Chat with %(name)s" +msgstr "" + +#: app/chat/routes.py:69 +msgid "Send" +msgstr "" + +#: app/chat/routes.py:79 app/templates/chat/new_message.html:14 +#, python-format +msgid "New message to \"%(recipient_name)s\"" +msgstr "" + +#: app/chat/routes.py:124 +msgid "Conversation deleted" +msgstr "" + +#: app/chat/routes.py:135 +msgid "Instance blocked." +msgstr "" + +#: app/chat/routes.py:165 +msgid "This conversation has been reported, thank you!" +msgstr "" + +#: app/chat/routes.py:170 +msgid "Report conversation" +msgstr "" + +#: app/chat/util.py:58 +#, python-format +msgid "Message failed to send to %(name)s." +msgstr "" + +#: app/chat/util.py:60 +msgid "Message sent." +msgstr "" + +#: app/community/forms.py:26 +msgid "Create" +msgstr "" + +#: app/community/forms.py:61 +msgid "Add" +msgstr "" + +#: app/community/forms.py:65 +msgid "Community address" +msgstr "" + +#: app/community/forms.py:66 app/search/routes.py:52 +#: app/templates/base.html:193 app/templates/community/add_remote.html:13 +#: app/templates/domain/domains.html:29 +#: app/templates/domain/domains_blocked.html:29 app/templates/index.html:40 +#: app/templates/list_communities.html:36 app/templates/search/results.html:38 +msgid "Search" +msgstr "" + +#: app/community/forms.py:71 +msgid "Ban until" +msgstr "" + +#: app/community/forms.py:72 +msgid "Also delete all their posts" +msgstr "" + +#: app/community/forms.py:73 +msgid "Also delete all their comments" +msgstr "" + +#: app/community/forms.py:74 app/templates/domain/domains_blocked.html:48 +#: app/templates/user/show_profile.html:170 +msgid "Ban" +msgstr "" + +#: app/community/forms.py:78 app/templates/list_communities.html:56 +msgid "Community" +msgstr "" + +#: app/community/forms.py:81 app/community/forms.py:83 +#: app/community/forms.py:88 app/post/forms.py:10 +msgid "Body" +msgstr "" + +#: app/community/forms.py:85 +msgid "URL" +msgstr "" + +#: app/community/forms.py:87 +msgid "Alt text" +msgstr "" + +#: app/community/forms.py:90 +msgid "Image" +msgstr "" + +#: app/community/forms.py:92 +msgid "NSFW" +msgstr "" + +#: app/community/forms.py:93 +msgid "Gore/gross" +msgstr "" + +#: app/community/forms.py:94 app/post/forms.py:11 +#: app/templates/post/_post_notification_toggle.html:4 +#: app/templates/post/_reply_notification_toggle.html:4 +msgid "Notify about replies" +msgstr "" + +#: app/community/forms.py:105 app/community/forms.py:109 +#: app/community/forms.py:120 +msgid "Title is required." +msgstr "" + +#: app/community/forms.py:112 +msgid "URL is required." +msgstr "" + +#: app/community/forms.py:116 +#, python-format +msgid "Links to %(domain)s are not allowed." +msgstr "" + +#: app/community/forms.py:123 +msgid "File is required." +msgstr "" + +#: app/community/forms.py:140 +msgid "Images cannot be posted to local communities." +msgstr "" + +#: app/community/forms.py:142 +msgid "Poll not implemented yet." +msgstr "" + +#: app/community/forms.py:149 +msgid "Breaks instance rules" +msgstr "" + +#: app/community/forms.py:150 +msgid "Abandoned by moderators" +msgstr "" + +#: app/community/forms.py:151 +msgid "Cult" +msgstr "" + +#: app/community/forms.py:152 +msgid "Scam" +msgstr "" + +#: app/community/forms.py:153 +msgid "Alt-right pipeline" +msgstr "" + +#: app/community/forms.py:154 app/post/forms.py:17 +msgid "Hate / genocide" +msgstr "" + +#: app/community/forms.py:172 app/community/routes.py:667 +msgid "Delete community" +msgstr "" + +#: app/community/routes.py:72 +msgid "Your new community has been created." +msgstr "" + +#: app/community/routes.py:78 app/templates/community/add_local.html:13 +#: app/templates/community/community_edit.html:22 +msgid "Create community" +msgstr "" + +#: app/community/routes.py:102 +msgid "Community not found." +msgstr "" + +#: app/community/routes.py:104 +msgid "" +"Community not found. If you are searching for a nsfw community it is " +"blocked by this instance." +msgstr "" + +#: app/community/routes.py:107 +#, python-format +msgid "That community is banned from %(site)s." +msgstr "" + +#: app/community/routes.py:110 +msgid "Add remote community" +msgstr "" + +#: app/community/routes.py:184 app/post/routes.py:180 +#: app/templates/base.html:127 app/templates/base.html:129 +#: app/templates/base.html:145 app/templates/base.html:147 +#: app/templates/chat/conversation.html:36 +#: app/templates/community/community_edit.html:13 +#: app/templates/community/community_mod_list.html:13 +#: app/templates/domain/domain.html:13 app/templates/topic/show_topic.html:13 +#: app/templates/user/delete_account.html:13 +#: app/templates/user/edit_filters.html:14 +#: app/templates/user/edit_profile.html:14 +#: app/templates/user/edit_settings.html:15 app/templates/user/filters.html:14 +#: app/templates/user/notifications.html:13 app/templates/user/people.html:13 +#: app/templates/user/show_profile.html:18 +#: app/templates/user/show_profile.html:38 +msgid "Home" +msgstr "" + +#: app/community/routes.py:310 +msgid "You cannot join this community" +msgstr "" + +#: app/community/routes.py:326 +msgid "" +"There was a problem while trying to communicate with remote server. If " +"other people have already joined this community it won't matter." +msgstr "" + +#: app/community/routes.py:516 app/community/routes.py:540 +#: app/community/routes.py:542 +#, python-format +msgid "Your post to %(name)s has been made." +msgstr "" + +#: app/community/routes.py:552 +msgid "Add post to community" +msgstr "" + +#: app/community/routes.py:574 +msgid "A community has been reported" +msgstr "" + +#: app/community/routes.py:585 +msgid "Community has been reported, thank you!" +msgstr "" + +#: app/community/routes.py:588 +msgid "Report community" +msgstr "" + +#: app/community/routes.py:683 +#: app/templates/community/community_mod_list.html:21 +#, python-format +msgid "Moderators for %(community)s" +msgstr "" + +#: app/community/routes.py:706 +msgid "Moderator added" +msgstr "" + +#: app/community/routes.py:710 +#, python-format +msgid "You are now a moderator of %(name)s" +msgstr "" + +#: app/community/routes.py:735 +msgid "Account not found" +msgstr "" + +#: app/community/routes.py:737 +#: app/templates/community/community_add_moderator.html:13 +#, python-format +msgid "Add moderator to %(community)s" +msgstr "" + +#: app/community/routes.py:755 +msgid "Moderator removed" +msgstr "" + +#: app/community/routes.py:772 app/post/routes.py:870 app/post/routes.py:962 +#, python-format +msgid "Content from %(name)s will be hidden." +msgstr "" + +#: app/community/routes.py:792 +#, python-format +msgid "%(name)s has been banned." +msgstr "" + +#: app/community/routes.py:799 +#, python-format +msgid "Posts by %(name)s have been deleted." +msgstr "" + +#: app/community/routes.py:805 +#, python-format +msgid "Comments by %(name)s have been deleted." +msgstr "" + +#: app/community/routes.py:823 +msgid "Ban from community" +msgstr "" + +#: app/domain/routes.py:113 +#, python-format +msgid "%(name)s blocked." +msgstr "" + +#: app/domain/routes.py:126 +#, python-format +msgid "%(name)s un-blocked." +msgstr "" + +#: app/domain/routes.py:139 +#, python-format +msgid "%(name)s banned for all users and all content deleted." +msgstr "" + +#: app/domain/routes.py:151 +#, python-format +msgid "%(name)s un-banned for all users." +msgstr "" + +#: app/main/routes.py:72 +msgid "Create an account to tailor this feed to your interests." +msgstr "" + +#: app/main/routes.py:156 app/templates/base.html:136 +#: app/templates/base.html:154 +msgid "Browse by topic" +msgstr "" + +#: app/main/routes.py:194 +msgid "Local communities" +msgstr "" + +#: app/main/routes.py:209 app/templates/base.html:163 +#: app/templates/list_communities.html:19 +msgid "Joined communities" +msgstr "" + +#: app/main/routes.py:326 +msgid "Please click the link in your email inbox to verify your account." +msgstr "" + +#: app/post/forms.py:12 +msgid "Comment" +msgstr "" + +#: app/post/forms.py:16 app/user/forms.py:59 +msgid "Breaks community rules" +msgstr "" + +#: app/post/forms.py:20 app/user/forms.py:67 +msgid "Sharing personal info - doxing" +msgstr "" + +#: app/post/forms.py:42 app/post/routes.py:887 +#: app/templates/post/post_mea_culpa.html:13 +msgid "I changed my mind" +msgstr "" + +#: app/post/routes.py:45 +#, python-format +msgid "%(name)s has indicated they made a mistake in this post." +msgstr "" + +#: app/post/routes.py:66 app/post/routes.py:443 +#, python-format +msgid "You cannot reply to %(name)s" +msgstr "" + +#: app/post/routes.py:76 app/post/routes.py:456 +msgid "This type of comment is not accepted, sorry." +msgstr "" + +#: app/post/routes.py:414 app/post/routes.py:579 +#, python-format +msgid "Discussing %(title)s" +msgstr "" + +#: app/post/routes.py:628 app/post/routes.py:985 app/user/routes.py:137 +#: app/user/routes.py:198 app/user/routes.py:670 app/user/routes.py:701 +msgid "Your changes have been saved." +msgstr "" + +#: app/post/routes.py:725 app/templates/post/post_edit.html:43 +msgid "Edit post" +msgstr "" + +#: app/post/routes.py:746 +msgid "Post deleted." +msgstr "" + +#: app/post/routes.py:804 +msgid "A post has been reported" +msgstr "" + +#: app/post/routes.py:822 +msgid "Post has been reported, thank you!" +msgstr "" + +#: app/post/routes.py:827 +msgid "Report post" +msgstr "" + +#: app/post/routes.py:841 app/post/routes.py:946 +#, python-format +msgid "%(name)s has been blocked." +msgstr "" + +#: app/post/routes.py:857 +#, python-format +msgid "Posts linking to %(name)s will be hidden." +msgstr "" + +#: app/post/routes.py:908 +msgid "A comment has been reported" +msgstr "" + +#: app/post/routes.py:926 +msgid "Comment has been reported, thank you!" +msgstr "" + +#: app/post/routes.py:931 +msgid "Report comment" +msgstr "" + +#: app/post/routes.py:1062 +msgid "Edit comment" +msgstr "" + +#: app/post/routes.py:1086 +msgid "Comment deleted." +msgstr "" + +#: app/search/routes.py:45 +#, python-format +msgid "Search results for %(q)s" +msgstr "" + +#: app/templates/_home_nav.html:3 app/templates/community/_community_nav.html:8 +#: app/templates/post/post.html:66 app/user/forms.py:44 +msgid "Hot" +msgstr "" + +#: app/templates/_home_nav.html:6 +#: app/templates/community/_community_nav.html:11 +#: app/templates/post/post.html:69 app/user/forms.py:45 +msgid "Top" +msgstr "" + +#: app/templates/_home_nav.html:9 +#: app/templates/community/_community_nav.html:14 +#: app/templates/post/post.html:72 app/user/forms.py:46 +msgid "New" +msgstr "" + +#: app/templates/_home_nav.html:12 +#: app/templates/community/_community_nav.html:17 +#: app/templates/list_communities.html:71 app/user/forms.py:47 +msgid "Active" +msgstr "" + +#: app/templates/_inoculation_links.html:4 +msgid "Rational Discourse Toolkit" +msgstr "" + +#: app/templates/base.html:52 +msgid "PieFed" +msgstr "" + +#: app/templates/base.html:110 app/templates/base.html:184 +#: app/templates/user/notifications.html:18 app/user/routes.py:521 +msgid "Notifications" +msgstr "" + +#: app/templates/base.html:130 app/templates/base.html:148 +msgid "Popular" +msgstr "" + +#: app/templates/base.html:131 app/templates/base.html:149 +msgid "All posts" +msgstr "" + +#: app/templates/base.html:137 app/templates/base.html:155 +#: app/templates/list_communities.html:13 +msgid "All communities" +msgstr "" + +#: app/templates/auth/login.html:9 app/templates/base.html:140 +msgid "Log in" +msgstr "" + +#: app/templates/base.html:142 app/templates/base.html:178 +#: app/templates/donate.html:10 +msgid "Donate" +msgstr "" + +#: app/templates/base.html:157 +msgid "Moderating" +msgstr "" + +#: app/templates/base.html:171 +msgid "Account" +msgstr "" + +#: app/templates/base.html:173 +msgid "View profile" +msgstr "" + +#: app/templates/base.html:174 +msgid "Edit profile & settings" +msgstr "" + +#: app/templates/base.html:175 +msgid "Chats" +msgstr "" + +#: app/templates/base.html:182 +msgid "Log out" +msgstr "" + +#: app/templates/base.html:184 +#, python-format +msgid "%(num)d unread notifications" +msgstr "" + +#: app/templates/base.html:194 +msgid "Light mode" +msgstr "" + +#: app/templates/base.html:195 +msgid "Dark mode" +msgstr "" + +#: app/templates/base.html:223 app/templates/keyboard_shortcuts.html:10 +msgid "Keyboard shortcuts" +msgstr "" + +#: app/templates/donate.html:26 app/templates/index.html:65 +#: app/templates/keyboard_shortcuts.html:63 +#: app/templates/search/results.html:63 +#, python-format +msgid "About %(site_name)s" +msgstr "" + +#: app/templates/index.html:17 +msgid "No posts yet. Join some communities to see more." +msgstr "" + +#: app/templates/community/community.html:168 app/templates/index.html:18 +#: app/templates/index.html:59 app/templates/list_topics.html:26 +#: app/templates/post/post.html:217 app/templates/search/results.html:57 +#: app/templates/topic/show_topic.html:91 +msgid "Explore communities" +msgstr "" + +#: app/templates/admin/activities.html:54 +#: app/templates/admin/communities.html:51 app/templates/admin/posts.html:26 +#: app/templates/admin/reports.html:58 app/templates/admin/users.html:69 +#: app/templates/community/community.html:92 +#: app/templates/domain/domain.html:30 app/templates/domain/domains.html:51 +#: app/templates/domain/domains_blocked.html:59 app/templates/index.html:25 +#: app/templates/search/results.html:23 app/templates/topic/show_topic.html:52 +#: app/templates/user/show_profile.html:72 +#: app/templates/user/show_profile.html:95 +msgid "Previous page" +msgstr "" + +#: app/templates/admin/activities.html:59 +#: app/templates/admin/communities.html:56 app/templates/admin/posts.html:31 +#: app/templates/admin/reports.html:63 app/templates/admin/users.html:74 +#: app/templates/community/community.html:97 +#: app/templates/domain/domain.html:35 app/templates/domain/domains.html:56 +#: app/templates/domain/domains_blocked.html:64 app/templates/index.html:30 +#: app/templates/search/results.html:28 app/templates/topic/show_topic.html:57 +#: app/templates/user/show_profile.html:77 +#: app/templates/user/show_profile.html:100 +msgid "Next page" +msgstr "" + +#: app/templates/index.html:47 app/templates/search/results.html:45 +msgid "Active communities" +msgstr "" + +#: app/templates/keyboard_shortcuts.html:11 +msgid "Most shortcuts are the same as what reddit has." +msgstr "" + +#: app/templates/keyboard_shortcuts.html:14 +msgid "Navigation" +msgstr "" + +#: app/templates/community/community_mod_list.html:31 +#: app/templates/keyboard_shortcuts.html:43 app/templates/user/filters.html:31 +msgid "Action" +msgstr "" + +#: app/templates/keyboard_shortcuts.html:46 +msgid "Upvote" +msgstr "" + +#: app/templates/keyboard_shortcuts.html:50 +msgid "Downvote" +msgstr "" + +#: app/templates/keyboard_shortcuts.html:55 +msgid "" +"When viewing a list of posts actions like voting or going to a post " +"depend on which is the current post. The current post is determined by " +"hovering with the mouse or the J and K keys." +msgstr "" + +#: app/templates/list_communities.html:14 +msgid "All" +msgstr "" + +#: app/templates/list_communities.html:16 +msgid "Communities on this server" +msgstr "" + +#: app/templates/list_communities.html:17 +msgid "Local" +msgstr "" + +#: app/templates/list_communities.html:20 +#: app/templates/user/show_profile.html:59 +msgid "Joined" +msgstr "" + +#: app/templates/list_communities.html:28 +msgid "Choose a topic to filter communities by" +msgstr "" + +#: app/templates/list_communities.html:40 +msgid "Create local community" +msgstr "" + +#: app/templates/list_communities.html:40 +msgid "Create local" +msgstr "" + +#: app/templates/list_communities.html:41 +msgid "Add community from another instance" +msgstr "" + +#: app/templates/list_communities.html:41 +msgid "Add remote" +msgstr "" + +#: app/templates/list_communities.html:56 +msgid "Sort by name" +msgstr "" + +#: app/templates/list_communities.html:61 +msgid "Sort by post count" +msgstr "" + +#: app/templates/list_communities.html:61 +msgid "Posts" +msgstr "" + +#: app/templates/list_communities.html:66 +msgid "Sort by reply count" +msgstr "" + +#: app/templates/list_communities.html:66 app/templates/post/post.html:61 +#: app/templates/post/post.html:155 +msgid "Comments" +msgstr "" + +#: app/templates/list_communities.html:71 +msgid "Sort by recent activity" +msgstr "" + +#: app/templates/list_communities.html:82 +#, python-format +msgid "Leave %(name)s" +msgstr "" + +#: app/templates/community/add_remote.html:32 +#: app/templates/community/community.html:112 +#: app/templates/list_communities.html:82 app/templates/post/add_reply.html:48 +#: app/templates/post/continue_discussion.html:96 +#: app/templates/post/post.html:174 +msgid "Leave" +msgstr "" + +#: app/templates/community/community.html:114 +#: app/templates/list_communities.html:84 +msgid "Pending" +msgstr "" + +#: app/templates/list_communities.html:86 +#: app/templates/list_communities.html:89 +#, python-format +msgid "Join %(name)s" +msgstr "" + +#: app/templates/community/add_remote.html:34 +#: app/templates/community/community.html:116 +#: app/templates/list_communities.html:86 +#: app/templates/list_communities.html:89 app/templates/post/add_reply.html:50 +#: app/templates/post/continue_discussion.html:98 +#: app/templates/post/post.html:176 +msgid "Join" +msgstr "" + +#: app/templates/list_communities.html:96 +#, python-format +msgid "Browse %(name)s" +msgstr "" + +#: app/templates/list_communities.html:106 app/templates/list_topics.html:24 +msgid "There are no communities yet." +msgstr "" + +#: app/templates/list_topics.html:11 +msgid "Choose a topic" +msgstr "" + +#: app/templates/privacy.html:10 +msgid "Privacy" +msgstr "" + +#: app/templates/admin/_nav.html:2 +msgid "Admin navigation" +msgstr "" + +#: app/templates/admin/_nav.html:3 +msgid "Admin home" +msgstr "" + +#: app/templates/admin/_nav.html:9 +msgid "Watch" +msgstr "" + +#: app/templates/admin/_nav.html:11 +msgid "Registration applications" +msgstr "" + +#: app/templates/admin/_nav.html:13 +msgid "Moderation" +msgstr "" + +#: app/templates/admin/_nav.html:14 +msgid "Federation" +msgstr "" + +#: app/templates/admin/_nav.html:15 +msgid "Newsletter" +msgstr "" + +#: app/templates/admin/_nav.html:16 +msgid "Activities" +msgstr "" + +#: app/templates/admin/add_user.html:17 +msgid "Add new user" +msgstr "" + +#: app/templates/admin/approve_registrations.html:18 +#, python-format +msgid "When registering, people are asked \"%(question)s\"." +msgstr "" + +#: app/templates/admin/approve_registrations.html:43 +msgid "Approve" +msgstr "" + +#: app/templates/admin/approve_registrations.html:44 +msgid "View" +msgstr "" + +#: app/templates/admin/approve_registrations.html:45 +#: app/templates/post/post_options.html:20 +#: app/templates/post/post_reply_options.html:20 +#: app/templates/user/show_profile.html:176 +msgid "Delete" +msgstr "" + +#: app/templates/admin/approve_registrations.html:51 +msgid "No one is waiting to be approved." +msgstr "" + +#: app/templates/admin/edit_community.html:17 +#, python-format +msgid "Edit %(community_name)s" +msgstr "" + +#: app/templates/admin/edit_community.html:43 +msgid "Will not be overwritten by remote server" +msgstr "" + +#: app/templates/admin/edit_topic.html:18 +#, python-format +msgid "Edit %(topic_name)s" +msgstr "" + +#: app/templates/admin/edit_user.html:17 +#, python-format +msgid "Edit %(user_name)s (%(display_name)s)" +msgstr "" + +#: app/templates/admin/posts.html:17 +msgid "Most downvoted in the last 3 days" +msgstr "" + +#: app/templates/admin/users.html:17 +msgid "Add local user" +msgstr "" + +#: app/templates/auth/check_email.html:9 +msgid "" +"We sent you an email containing a link that you need to click to enable " +"your account." +msgstr "" + +#: app/templates/auth/login.html:14 +msgid "New User?" +msgstr "" + +#: app/templates/auth/login.html:14 +msgid "Register new account" +msgstr "" + +#: app/templates/auth/login.html:16 +msgid "Forgot Your Password?" +msgstr "" + +#: app/templates/auth/login.html:17 +msgid "Reset it" +msgstr "" + +#: app/templates/auth/permission_denied.html:8 +#: app/templates/chat/blocked.html:13 app/templates/chat/denied.html:14 +msgid "Sorry" +msgstr "" + +#: app/templates/auth/permission_denied.html:12 +msgid "Your account does not have access to that area." +msgstr "" + +#: app/templates/auth/please_wait.html:8 +msgid "Thanks for registering" +msgstr "" + +#: app/templates/auth/please_wait.html:9 +msgid "" +"We are reviewing your application and will email you once it has been " +"accepted." +msgstr "" + +#: app/templates/auth/register.html:19 +msgid "Create new account" +msgstr "" + +#: app/templates/auth/register.html:22 +msgid "Registration is closed. Only admins can create accounts." +msgstr "" + +#: app/templates/auth/reset_password.html:13 +#: app/templates/auth/reset_password_request.html:13 +msgid "Reset your password" +msgstr "" + +#: app/templates/auth/validation_required.html:8 +msgid "Please check your email inbox" +msgstr "" + +#: app/templates/auth/validation_required.html:12 +msgid "" +"To keep spam and bots to a managable level, we send every new account an " +"email with a link in it that needs to be clicked to fully enable the " +"account." +msgstr "" + +#: app/templates/chat/blocked.html:15 +msgid "You have blocked this person or they have blocked you." +msgstr "" + +#: app/templates/chat/chat_options.html:14 +#, python-format +msgid "Options for conversation with \"%(member_names)s\"" +msgstr "" + +#: app/templates/chat/chat_options.html:17 +msgid "Delete conversation" +msgstr "" + +#: app/templates/chat/chat_options.html:21 +#, python-format +msgid "Block @%(author_name)s" +msgstr "" + +#: app/templates/chat/chat_options.html:26 +#, python-format +msgid "Block chats and posts from instance: %(name)s" +msgstr "" + +#: app/templates/chat/chat_options.html:29 +#: app/templates/post/post_options.html:48 +#: app/templates/post/post_reply_options.html:32 +msgid "Report to moderators" +msgstr "" + +#: app/templates/chat/chat_options.html:31 +msgid "" +"If you are reporting abuse then do not delete the conversation - " +"moderators will not be able to read it if you delete it." +msgstr "" + +#: app/templates/chat/conversation.html:37 +msgid "Chat" +msgstr "" + +#: app/templates/chat/conversation.html:42 app/templates/user/filters.html:56 +#: app/templates/user/notifications.html:14 app/templates/user/people.html:14 +#: app/templates/user/people.html:17 app/templates/user/show_profile.html:19 +#: app/templates/user/show_profile.html:39 app/user/routes.py:34 +msgid "People" +msgstr "" + +#: app/templates/chat/conversation.html:59 +#, python-format +msgid "Messages with %(name)s" +msgstr "" + +#: app/templates/chat/conversation.html:60 +msgid "Messages with: " +msgstr "" + +#: app/templates/chat/conversation.html:75 +#: app/templates/post/_post_teaser.html:80 +msgid "Options" +msgstr "" + +#: app/templates/chat/denied.html:16 +msgid "" +"You have not been using PieFed long enough to be allowed to send messages" +" to people." +msgstr "" + +#: app/templates/chat/empty.html:13 +msgid "No chats" +msgstr "" + +#: app/templates/chat/empty.html:15 +msgid "" +"There are no chats involving you, yet. Start a conversation using the " +"\"Send message\" button on someone's profile." +msgstr "" + +#: app/templates/chat/report.html:14 +#, python-format +msgid "Report conversation with \"%(member_names)s\"" +msgstr "" + +#: app/templates/community/_community_nav.html:3 +#: app/templates/community/add_post.html:11 +#: app/templates/community/community.html:108 +#: app/templates/post/add_reply.html:54 +#: app/templates/post/continue_discussion.html:102 +#: app/templates/post/post.html:170 app/templates/post/post_reply_edit.html:50 +#: app/templates/topic/show_topic.html:68 +msgid "Create post" +msgstr "" + +#: app/templates/community/_community_nav.html:7 +msgid "Sort by hot" +msgstr "" + +#: app/templates/community/_community_nav.html:10 +msgid "Sort by top" +msgstr "" + +#: app/templates/community/_community_nav.html:13 +msgid "Sort by new" +msgstr "" + +#: app/templates/community/_community_nav.html:16 +msgid "Sort by active" +msgstr "" + +#: app/templates/community/_community_nav.html:26 +msgid "Tile" +msgstr "" + +#: app/templates/community/_community_nav.html:29 +msgid "Wide tile" +msgstr "" + +#: app/templates/community/_notification_toggle.html:5 +msgid "Notify about every new post. Not advisable in high traffic communities!" +msgstr "" + +#: app/templates/community/add_local.html:31 +#, python-format +msgid "Only people using %(name)s can post or reply" +msgstr "" + +#: app/templates/community/add_post.html:44 +#: app/templates/community/add_post.html:65 +#: app/templates/community/add_post.html:88 +#: app/templates/post/add_reply.html:37 app/templates/post/post.html:42 +#: app/templates/user/edit_profile.html:44 +msgid "Enable markdown editor" +msgstr "" + +#: app/templates/community/add_post.html:73 +#: app/templates/post/post_edit.html:98 +msgid "Describe the image, to help visually impaired people." +msgstr "" + +#: app/templates/community/add_remote.html:25 +msgid "Found a community:" +msgstr "" + +#: app/templates/community/community.html:27 +#: app/templates/community/community.html:48 +#: app/templates/community/community.html:66 +#: app/templates/post/_post_full.html:20 app/templates/post/_post_full.html:66 +#: app/templates/post/_post_teaser.html:56 +msgid "Not safe for work" +msgstr "" + +#: app/templates/community/community.html:28 +#: app/templates/community/community.html:49 +#: app/templates/community/community.html:67 +msgid "Not safe for life" +msgstr "" + +#: app/templates/community/community.html:76 +#: app/templates/community/community.html:84 +msgid "No posts in this community yet." +msgstr "" + +#: app/templates/community/community.html:121 +#: app/templates/post/add_reply.html:58 +#: app/templates/post/continue_discussion.html:106 +#: app/templates/post/post.html:181 app/templates/post/post_reply_edit.html:54 +msgid "Search this community" +msgstr "" + +#: app/templates/community/community.html:127 +#: app/templates/post/add_reply.html:64 +#: app/templates/post/continue_discussion.html:112 +#: app/templates/post/post.html:187 app/templates/post/post_reply_edit.html:60 +msgid "About community" +msgstr "" + +#: app/templates/community/community.html:146 +#, python-format +msgid "Only people on %(instance_name)s can post or reply in this community." +msgstr "" + +#: app/templates/community/community.html:156 app/templates/post/post.html:205 +msgid "Related communities" +msgstr "" + +#: app/templates/community/community.html:162 app/templates/post/post.html:211 +#: app/templates/topic/show_topic.html:85 +msgid "Go to community" +msgstr "" + +#: app/templates/community/community.html:175 +#: app/templates/post/add_reply.html:82 +#: app/templates/post/continue_discussion.html:130 +#: app/templates/post/post.html:224 app/templates/post/post_reply_edit.html:78 +msgid "Community Settings" +msgstr "" + +#: app/templates/community/community.html:178 +#: app/templates/post/add_reply.html:85 +#: app/templates/post/continue_discussion.html:133 +#: app/templates/post/post.html:227 app/templates/post/post_reply_edit.html:81 +msgid "Moderate" +msgstr "" + +#: app/templates/community/community.html:180 +#: app/templates/community/community_edit.html:15 +#: app/templates/community/community_mod_list.html:15 +#: app/templates/post/add_reply.html:86 +#: app/templates/post/continue_discussion.html:134 +#: app/templates/post/post.html:228 app/templates/post/post_reply_edit.html:82 +#: app/templates/user/_user_nav.html:5 app/templates/user/notifications.html:57 +#: app/templates/user/show_profile.html:121 +msgid "Settings" +msgstr "" + +#: app/templates/community/community_ban_user.html:13 +#, python-format +msgid "Ban \"%(user_name)s\" from %(community_name)s" +msgstr "" + +#: app/templates/community/community_delete.html:13 +#, python-format +msgid "Delete \"%(community_title)s\"" +msgstr "" + +#: app/templates/community/community_edit.html:51 +#: app/templates/community/community_mod_list.html:16 +msgid "Moderators" +msgstr "" + +#: app/templates/community/community_mod_list.html:24 +msgid "Add moderator" +msgstr "" + +#: app/templates/community/community_mod_list.html:41 +msgid "Remove" +msgstr "" + +#: app/templates/domain/domain.html:14 app/templates/domain/domains.html:12 +#: app/templates/domain/domains.html:21 +#: app/templates/domain/domains_blocked.html:21 +#: app/templates/user/filters.html:60 +msgid "Domains" +msgstr "" + +#: app/templates/domain/domain.html:23 +msgid "No posts in this domain yet." +msgstr "" + +#: app/templates/domain/domain.html:45 +msgid "Domain management" +msgstr "" + +#: app/templates/domain/domain.html:51 app/templates/user/filters.html:71 +#: app/templates/user/filters.html:76 app/templates/user/filters.html:89 +#: app/templates/user/filters.html:94 app/templates/user/filters.html:107 +#: app/templates/user/filters.html:112 app/templates/user/filters.html:125 +#: app/templates/user/filters.html:130 app/templates/user/show_profile.html:52 +msgid "Unblock" +msgstr "" + +#: app/templates/domain/domain.html:55 app/templates/user/show_profile.html:54 +msgid "Block" +msgstr "" + +#: app/templates/domain/domain.html:61 +#: app/templates/domain/domains_blocked.html:46 +#: app/templates/user/show_profile.html:166 +msgid "Unban" +msgstr "" + +#: app/templates/domain/domain.html:65 +msgid "Ban instance-wide" +msgstr "" + +#: app/templates/domain/domains.html:14 +#, python-format +msgid "Domains containing \"%(search)s\"" +msgstr "" + +#: app/templates/domain/domains.html:24 +#: app/templates/domain/domains_blocked.html:24 +msgid "Banned domains" +msgstr "" + +#: app/templates/domain/domains.html:38 +msgid "How many times has something on this domain been posted" +msgstr "" + +#: app/templates/domain/domains_blocked.html:12 +msgid "Blocked domains" +msgstr "" + +#: app/templates/domain/domains_blocked.html:14 +#, python-format +msgid "Blocked domains containing \"%(search)s\"" +msgstr "" + +#: app/templates/domain/domains_blocked.html:46 +msgid "Unbanning this domain allows future posts linking to that domain." +msgstr "" + +#: app/templates/domain/domains_blocked.html:48 +msgid "" +"Banning this domain will delete all posts linking to this domain and " +"prevent future posts linking to that domain." +msgstr "" + +#: app/templates/errors/404.html:12 +msgid "Ooops, something is broken!" +msgstr "" + +#: app/templates/errors/404.html:15 +msgid "The page your browser tried to load could not be found." +msgstr "" + +#: app/templates/errors/404.html:16 app/templates/errors/500.html:16 +msgid "Back" +msgstr "" + +#: app/templates/errors/500.html:12 +msgid "An unexpected error has occurred" +msgstr "" + +#: app/templates/errors/500.html:15 +msgid "" +"Sorry for the inconvenience! Please let us know about this, so we can " +"repair it and make PieFed better for everyone." +msgstr "" + +#: app/templates/post/_comment_voting_buttons.html:3 +msgid "UpVote button." +msgstr "" + +#: app/templates/post/_comment_voting_buttons.html:9 +msgid "Score: " +msgstr "" + +#: app/templates/post/_comment_voting_buttons.html:11 +msgid "DownVote button." +msgstr "" + +#: app/templates/post/_comment_voting_buttons.html:21 +msgid "Score:" +msgstr "" + +#: app/templates/post/_post_full.html:21 app/templates/post/_post_full.html:67 +#: app/templates/post/_post_teaser.html:57 +msgid "Potentially emotionally scarring content" +msgstr "" + +#: app/templates/post/_post_full.html:28 app/templates/post/_post_full.html:76 +#: app/templates/post/_post_teaser.html:59 +msgid "Reported. Check post for issues." +msgstr "" + +#: app/templates/post/_post_reply_teaser.html:3 +msgid "View context" +msgstr "" + +#: app/templates/post/_post_teaser.html:6 +#: app/templates/post/_post_teaser_masonry.html:6 +msgid "Filtered: " +msgstr "" + +#: app/templates/post/_post_teaser.html:18 +#: app/templates/post/_post_teaser.html:26 +#: app/templates/post/_post_teaser.html:42 +msgid "Read article" +msgstr "" + +#: app/templates/post/_post_teaser.html:20 +#: app/templates/post/_post_teaser.html:30 +#: app/templates/post/_post_teaser.html:74 +#: app/templates/post/_post_teaser.html:76 +#: app/templates/post/_post_teaser_masonry.html:16 +#: app/templates/post/_post_teaser_masonry.html:20 +#: app/templates/post/_post_teaser_masonry.html:23 +#: app/templates/post/_post_teaser_masonry.html:55 +msgid "View image" +msgstr "" + +#: app/templates/post/_post_teaser.html:22 +#: app/templates/post/_post_teaser.html:34 +msgid "Read post" +msgstr "" + +#: app/templates/post/_post_teaser.html:54 +msgid "All posts about this domain" +msgstr "" + +#: app/templates/post/_post_teaser.html:63 +#, python-format +msgid "Go to community %(name)s" +msgstr "" + +#: app/templates/post/_post_teaser.html:71 +#: app/templates/post/_post_teaser_masonry.html:47 +#: app/templates/post/_post_teaser_masonry.html:48 +#: app/templates/post/_post_teaser_masonry.html:68 +#: app/templates/post/_post_teaser_masonry.html:69 +msgid "View comments" +msgstr "" + +#: app/templates/post/_post_teaser.html:71 +msgid "Number of comments:" +msgstr "" + +#: app/templates/post/_post_voting_buttons.html:3 +#, python-format +msgid "UpVote button, %(count)d upvotes so far." +msgstr "" + +#: app/templates/post/_post_voting_buttons.html:11 +#, python-format +msgid "DownVote button, %(count)d downvotes so far." +msgstr "" + +#: app/templates/post/_post_voting_buttons_masonry.html:3 +msgid "UpVote" +msgstr "" + +#: app/templates/post/_post_voting_buttons_masonry.html:10 +msgid "DownVote" +msgstr "" + +#: app/templates/post/add_reply.html:21 app/templates/post/post.html:23 +msgid "" +"This post is hosted on beehaw.org which has higher standards of behaviour than " +"most places. Be nice." +msgstr "" + +#: app/templates/post/continue_discussion.html:44 +#: app/templates/post/post.html:105 +msgid "Reported. Check comment for issues." +msgstr "" + +#: app/templates/post/post.html:26 +msgid "" +"This post is hosted on lemmy.ml which will ban you for saying anything " +"negative about China, Russia or Putin. Tread carefully." +msgstr "" + +#: app/templates/post/post.html:52 +msgid "Verify your email address to comment" +msgstr "" + +#: app/templates/post/post.html:55 +msgid "Log in to comment" +msgstr "" + +#: app/templates/post/post.html:58 +msgid "Comments are disabled." +msgstr "" + +#: app/templates/post/post.html:65 +msgid "Sort by magic" +msgstr "" + +#: app/templates/post/post.html:68 +msgid "Comments with the most upvotes" +msgstr "" + +#: app/templates/post/post.html:71 +msgid "Show newest first" +msgstr "" + +#: app/templates/post/post.html:87 +msgid "Author" +msgstr "" + +#: app/templates/post/post.html:101 +msgid "Post creator" +msgstr "" + +#: app/templates/post/post.html:102 +msgid "When: " +msgstr "" + +#: app/templates/post/post.html:131 +msgid "Comment options" +msgstr "" + +#: app/templates/post/post_mea_culpa.html:15 +msgid "" +"If you wish to de-escalate the discussion on your post and now feel like " +"it was a mistake, click the button below." +msgstr "" + +#: app/templates/post/post_mea_culpa.html:16 +msgid "" +"No further comments will be posted and a message saying you made a " +"mistake in this post will be displayed." +msgstr "" + +#: app/templates/post/post_mea_culpa.html:17 +msgid "The effect of downvotes on your reputation score will be removed." +msgstr "" + +#: app/templates/post/post_options.html:13 +#, python-format +msgid "Options for \"%(post_title)s\"" +msgstr "" + +#: app/templates/post/post_options.html:18 +#: app/templates/post/post_reply_options.html:18 +msgid "Edit" +msgstr "" + +#: app/templates/post/post_options.html:24 +msgid "I made a mistake with this post and have changed my mind about the topic" +msgstr "" + +#: app/templates/post/post_options.html:28 +#, python-format +msgid "Block post author @%(author_name)s" +msgstr "" + +#: app/templates/post/post_options.html:31 +#, python-format +msgid "Ban post author @%(author_name)s from
%(community_name)s" +msgstr "" + +#: app/templates/post/post_options.html:35 +#, python-format +msgid "Block domain %(domain)s" +msgstr "" + +#: app/templates/post/post_options.html:39 +#: app/templates/post/post_reply_options.html:27 +#, python-format +msgid "Hide every post from author's instance: %(name)s" +msgstr "" + +#: app/templates/post/post_options.html:45 +#, python-format +msgid "View original on %(domain)s" +msgstr "" + +#: app/templates/post/post_options.html:50 +#: app/templates/post/post_reply_options.html:34 +msgid "" +"If you want to perform more than one of these (e.g. block and report), " +"hold down Ctrl and click, then complete the operation in the new tabs " +"that open." +msgstr "" + +#: app/templates/post/post_reply_edit.html:44 +msgid "Unsubscribe" +msgstr "" + +#: app/templates/post/post_reply_edit.html:46 +msgid "Subscribe" +msgstr "" + +#: app/templates/post/post_reply_options.html:13 +#, python-format +msgid "Options for comment on \"%(post_title)s\"" +msgstr "" + +#: app/templates/post/post_reply_options.html:24 +#, python-format +msgid "Block author @%(author_name)s" +msgstr "" + +#: app/templates/post/post_reply_report.html:13 +#, python-format +msgid "Report comment on \"%(post_title)s\" by %(reply_name)s" +msgstr "" + +#: app/templates/post/post_report.html:13 +#, python-format +msgid "Report \"%(post_title)s\"" +msgstr "" + +#: app/templates/search/results.html:11 +msgid "Search results for" +msgstr "" + +#: app/templates/search/results.html:16 +msgid "No posts match your search." +msgstr "" + +#: app/templates/search/start.html:13 +msgid "Search for posts" +msgstr "" + +#: app/templates/search/start.html:20 +msgid "Example searches:" +msgstr "" + +#: app/templates/search/start.html:23 +msgid "star wars" +msgstr "" + +#: app/templates/search/start.html:24 +msgid "" +"There is an implied \"and\" here. Results will have both words somewhere " +"in them." +msgstr "" + +#: app/templates/search/start.html:27 +msgid "star or wars" +msgstr "" + +#: app/templates/search/start.html:28 +msgid "" +"This will broaden the search to include results that contain any of the " +"words." +msgstr "" + +#: app/templates/search/start.html:31 +msgid "star -wars" +msgstr "" + +#: app/templates/search/start.html:32 +msgid "" +"To search for things containing \"star\" but not \"wars\" you can put a -" +" before the word you want to exclude." +msgstr "" + +#: app/templates/search/start.html:35 +msgid "\"star wars\"" +msgstr "" + +#: app/templates/search/start.html:36 +msgid "Results will have exactly that phrase in them." +msgstr "" + +#: app/templates/topic/choose_topics.html:9 +msgid "Please choose at least 3 topics that interest you." +msgstr "" + +#: app/templates/topic/show_topic.html:23 +msgid "Sub-topics" +msgstr "" + +#: app/templates/topic/show_topic.html:36 +#: app/templates/topic/show_topic.html:44 +msgid "No posts in this topic yet." +msgstr "" + +#: app/templates/topic/show_topic.html:79 +msgid "Topic communities" +msgstr "" + +#: app/templates/topic/topic_create_post.html:9 +#, python-format +msgid "Which community within %(topic)s to post in?" +msgstr "" + +#: app/templates/topic/topic_create_post.html:17 +#, python-format +msgid "Post in %(name)s" +msgstr "" + +#: app/templates/user/_user_nav.html:8 app/templates/user/notifications.html:54 +#: app/templates/user/show_profile.html:118 +msgid "Profile" +msgstr "" + +#: app/templates/user/_user_nav.html:11 +msgid "Blocks & Filters" +msgstr "" + +#: app/templates/user/delete_account.html:15 +#: app/templates/user/edit_settings.html:17 +#: app/templates/user/edit_settings.html:20 +msgid "Change settings" +msgstr "" + +#: app/templates/user/delete_account.html:18 +#, python-format +msgid "Delete %(username)s" +msgstr "" + +#: app/templates/user/delete_account.html:20 +#, python-format +msgid "" +"You are about to permanently delete the account with the username " +"\"%(username)s.\" This means your profile will " +"disappear, pictures will be deleted. Text-based posts will stay but look " +"like they are from someone named \"deleted.\"" +msgstr "" + +#: app/templates/user/delete_account.html:21 +#, python-format +msgid "" +"Once you hit delete, nobody can use \"%(username)s\" as a username again." +" We are doing this so nobody pretends to be you." +msgstr "" + +#: app/templates/user/delete_account.html:22 +msgid "" +"We will tell other websites (fediverse instances) that your account is " +"gone. But it's up to them to decide what to do with any copies they have " +"of your stuff. Some websites work differently than ours." +msgstr "" + +#: app/templates/user/delete_account.html:23 +msgid "" +"Remember, once you do this, there's no going back. Are you sure you want " +"to continue?" +msgstr "" + +#: app/templates/user/edit_filters.html:16 app/templates/user/filters.html:16 +#: app/templates/user/filters.html:19 +msgid "Filters" +msgstr "" + +#: app/templates/user/edit_filters.html:18 app/user/routes.py:713 +msgid "Edit filter" +msgstr "" + +#: app/templates/user/edit_filters.html:20 +#: app/templates/user/edit_filters.html:27 app/templates/user/filters.html:22 +#: app/user/routes.py:673 +msgid "Add filter" +msgstr "" + +#: app/templates/user/edit_filters.html:25 +#, python-format +msgid "Filter %(name)s" +msgstr "" + +#: app/templates/user/edit_filters.html:33 +msgid "Filter in these places" +msgstr "" + +#: app/templates/user/edit_filters.html:39 +msgid "One per line. Case does not matter." +msgstr "" + +#: app/templates/user/edit_filters.html:41 +msgid "Stop applying this filter after this date. Optional." +msgstr "" + +#: app/templates/user/edit_profile.html:16 app/user/routes.py:147 +#: app/user/routes.py:212 +msgid "Edit profile" +msgstr "" + +#: app/templates/user/edit_profile.html:19 +#, python-format +msgid "Edit profile of %(name)s" +msgstr "" + +#: app/templates/user/edit_profile.html:58 +msgid "Delete account" +msgstr "" + +#: app/templates/user/email_notifs_unsubscribed.html:9 +#: app/templates/user/newsletter_unsubscribed.html:9 +msgid "Unsubscribed" +msgstr "" + +#: app/templates/user/email_notifs_unsubscribed.html:10 +msgid "" +"You have unsubscribed from emails about unread notifications. We might " +"email you for other reasons, though." +msgstr "" + +#: app/templates/user/email_notifs_unsubscribed.html:11 +#: app/templates/user/newsletter_unsubscribed.html:11 +msgid "More email settings" +msgstr "" + +#: app/templates/user/filters.html:25 +msgid "" +"Filters can hide posts that contain keywords you specify, either by " +"making them less noticeable or invisible." +msgstr "" + +#: app/templates/user/filters.html:30 +msgid "Keywords" +msgstr "" + +#: app/templates/user/filters.html:32 +msgid "Expires" +msgstr "" + +#: app/templates/user/filters.html:39 +msgid "Invisible" +msgstr "" + +#: app/templates/user/filters.html:39 +msgid "Semi-transparent" +msgstr "" + +#: app/templates/user/filters.html:49 +msgid "No filters defined yet." +msgstr "" + +#: app/templates/user/filters.html:62 +msgid "Instances" +msgstr "" + +#: app/templates/user/filters.html:81 +msgid "No blocked people" +msgstr "" + +#: app/templates/user/filters.html:99 +msgid "No blocked communities" +msgstr "" + +#: app/templates/user/filters.html:117 +msgid "No blocked domains" +msgstr "" + +#: app/templates/user/filters.html:135 +msgid "No blocked instances" +msgstr "" + +#: app/templates/user/newsletter_unsubscribed.html:10 +msgid "" +"You have unsubscribed from the email newsletter. We might email you for " +"other reasons, though." +msgstr "" + +#: app/templates/user/notifications.html:25 +msgid "Mark all as read" +msgstr "" + +#: app/templates/user/notifications.html:49 +#: app/templates/user/show_profile.html:113 +msgid "Manage" +msgstr "" + +#: app/templates/user/notifications.html:95 +#: app/templates/user/show_profile.html:189 +msgid "Upvoted" +msgstr "" + +#: app/templates/user/people.html:32 +msgid "No people to show" +msgstr "" + +#: app/templates/user/show_profile.html:24 +#: app/templates/user/show_profile.html:29 +msgid "Profile pic" +msgstr "" + +#: app/templates/user/show_profile.html:47 +msgid "Send message" +msgstr "" + +#: app/templates/user/show_profile.html:49 +msgid "Send message with matrix chat" +msgstr "" + +#: app/templates/user/show_profile.html:49 +msgid "Send message using Matrix" +msgstr "" + +#: app/templates/user/show_profile.html:60 +msgid "Attitude" +msgstr "" + +#: app/templates/user/show_profile.html:60 +msgid "Ratio of upvotes cast to downvotes cast. Higher is more positive." +msgstr "" + +#: app/templates/user/show_profile.html:69 +msgid "Post pagination" +msgstr "" + +#: app/templates/user/show_profile.html:82 +msgid "No posts yet." +msgstr "" + +#: app/templates/user/show_profile.html:92 +msgid "Comment pagination" +msgstr "" + +#: app/templates/user/show_profile.html:105 +msgid "No comments yet." +msgstr "" + +#: app/templates/user/show_profile.html:134 +msgid "Member of" +msgstr "" + +#: app/templates/user/show_profile.html:159 +msgid "Crush" +msgstr "" + +#: app/templates/user/show_profile.html:179 +msgid "Ban + Purge" +msgstr "" + +#: app/templates/user/user_report.html:13 +#, python-format +msgid "Report \"%(user_name)s\"" +msgstr "" + +#: app/topic/forms.py:13 +msgid "Choose some topics you are interested in" +msgstr "" + +#: app/topic/forms.py:14 +msgid "Choose" +msgstr "" + +#: app/topic/routes.py:168 +msgid "" +"You have joined some communities relating to those interests. Find them " +"on the Topics menu or browse the home page." +msgstr "" + +#: app/topic/routes.py:172 +msgid "" +"You did not choose any topics. Would you like to choose individual " +"communities instead?" +msgstr "" + +#: app/user/forms.py:13 +msgid "Display name" +msgstr "" + +#: app/user/forms.py:15 +msgid "Set new password" +msgstr "" + +#: app/user/forms.py:22 +msgid "Save profile" +msgstr "" + +#: app/user/forms.py:26 +msgid "That email address is already in use by another account" +msgstr "" + +#: app/user/forms.py:30 +msgid "Matrix user ids start with @" +msgstr "" + +#: app/user/forms.py:35 +msgid "Receive email about missed notifications" +msgstr "" + +#: app/user/forms.py:39 +msgid "Use markdown editor GUI when writing" +msgstr "" + +#: app/user/forms.py:41 +msgid "My posts appear in search results" +msgstr "" + +#: app/user/forms.py:43 +msgid "Import community subscriptions and user blocks from Lemmy" +msgstr "" + +#: app/user/forms.py:49 +msgid "By default, sort posts by" +msgstr "" + +#: app/user/forms.py:50 +msgid "Theme" +msgstr "" + +#: app/user/forms.py:51 +msgid "Save settings" +msgstr "" + +#: app/user/forms.py:55 +msgid "Yes, delete my account" +msgstr "" + +#: app/user/forms.py:66 +msgid "Malicious reporting" +msgstr "" + +#: app/user/forms.py:90 +msgid "Home feed" +msgstr "" + +#: app/user/forms.py:91 +msgid "Posts in communities" +msgstr "" + +#: app/user/forms.py:92 +msgid "Comments on posts" +msgstr "" + +#: app/user/forms.py:93 +msgid "Make semi-transparent" +msgstr "" + +#: app/user/forms.py:93 +msgid "Hide completely" +msgstr "" + +#: app/user/forms.py:94 +msgid "Action to take" +msgstr "" + +#: app/user/forms.py:95 +msgid "Keywords that trigger this filter" +msgstr "" + +#: app/user/forms.py:98 +msgid "Expire after" +msgstr "" + +#: app/user/routes.py:42 +msgid "This user has been banned." +msgstr "" + +#: app/user/routes.py:44 +msgid "This user has been deleted." +msgstr "" + +#: app/user/routes.py:77 +#, python-format +msgid "Posts by %(user_name)s" +msgstr "" + +#: app/user/routes.py:194 +msgid "" +"Your subscriptions and blocks are being imported. If you have many it " +"could take a few minutes." +msgstr "" + +#: app/user/routes.py:229 +msgid "You cannot ban yourself." +msgstr "" + +#: app/user/routes.py:254 +msgid "You cannot unban yourself." +msgstr "" + +#: app/user/routes.py:278 +msgid "You cannot block yourself." +msgstr "" + +#: app/user/routes.py:307 +msgid "You cannot unblock yourself." +msgstr "" + +#: app/user/routes.py:352 +#, python-format +msgid "%(user_name)s has been reported, thank you!" +msgstr "" + +#: app/user/routes.py:358 +msgid "Report user" +msgstr "" + +#: app/user/routes.py:375 +msgid "You cannot delete yourself." +msgstr "" + +#: app/user/routes.py:432 +msgid "Account deletion in progress. Give it a few minutes." +msgstr "" + +#: app/user/routes.py:437 +msgid "Delete my account" +msgstr "" + +#: app/user/routes.py:482 +msgid "You cannot purge yourself." +msgstr "" + +#: app/user/routes.py:559 +msgid "All notifications marked as read." +msgstr "" + +#: app/user/routes.py:730 +msgid "Filter deleted." +msgstr "" + diff --git a/app/utils.py b/app/utils.py index e6ca7c59..4fbcd545 100644 --- a/app/utils.py +++ b/app/utils.py @@ -13,7 +13,9 @@ import math from urllib.parse import urlparse, parse_qs, urlencode from functools import wraps import flask -from bs4 import BeautifulSoup, NavigableString +from bs4 import BeautifulSoup, NavigableString, MarkupResemblesLocatorWarning +import warnings +warnings.filterwarnings("ignore", category=MarkupResemblesLocatorWarning) import requests import os from flask import current_app, json, redirect, url_for, request, make_response, Response, g @@ -57,7 +59,7 @@ def return_304(etag, content_type=None): resp = make_response('', 304) resp.headers.add_header('ETag', request.headers['If-None-Match']) resp.headers.add_header('Cache-Control', 'no-cache, max-age=600, must-revalidate') - resp.headers.add_header('Vary', 'Accept, Cookie') + resp.headers.add_header('Vary', 'Accept, Cookie, Accept-Language') if content_type: resp.headers.set('Content-Type', content_type) return resp @@ -91,6 +93,9 @@ def get_request(uri, params=None, headers=None) -> requests.Response: except requests.exceptions.ReadTimeout as read_timeout: current_app.logger.info(f"{uri} {read_timeout}") raise requests.exceptions.ReadTimeout from read_timeout + except requests.exceptions.ConnectionError as connection_error: + current_app.logger.info(f"{uri} {connection_error}") + raise requests.exceptions.ConnectionError from connection_error return response @@ -194,7 +199,7 @@ def allowlist_html(html: str) -> str: else: # Filter and sanitize attributes for attr in list(tag.attrs): - if attr not in ['href', 'src', 'alt']: + if attr not in ['href', 'src', 'alt', 'class']: del tag[attr] # Add nofollow and target=_blank to anchors if tag.name == 'a': @@ -246,7 +251,7 @@ def html_to_markdown_worker(element, indent_level=0): def markdown_to_html(markdown_text) -> str: if markdown_text: - return allowlist_html(markdown2.markdown(markdown_text, safe_mode=True, extras={'middle-word-em': False, 'tables': True})) + return allowlist_html(markdown2.markdown(markdown_text, safe_mode=True, extras={'middle-word-em': False, 'tables': True, 'fenced-code-blocks': True, 'spoiler': True})) else: return '' diff --git a/babel.cfg b/babel.cfg index c40b2e89..2c649d5c 100644 --- a/babel.cfg +++ b/babel.cfg @@ -1,3 +1,2 @@ [python: app/**.py] -[jinja2: app/templates/**.html] -extensions=jinja2.ext.autoescape,jinja2.ext.with_ +[jinja2: app/templates/**.html] \ No newline at end of file diff --git a/config.py b/config.py index 75604f98..77733c73 100644 --- a/config.py +++ b/config.py @@ -22,7 +22,7 @@ class Config(object): RECAPTCHA_PUBLIC_KEY = os.environ.get("RECAPTCHA_PUBLIC_KEY") RECAPTCHA_PRIVATE_KEY = os.environ.get("RECAPTCHA_PRIVATE_KEY") MODE = os.environ.get('MODE') or 'development' - LANGUAGES = ['en'] + LANGUAGES = ['de', 'en'] FULL_AP_CONTEXT = bool(int(os.environ.get('FULL_AP_CONTEXT', 0))) CACHE_TYPE = os.environ.get('CACHE_TYPE') or 'FileSystemCache' CACHE_REDIS_URL = os.environ.get('CACHE_REDIS_URL') or 'redis://localhost:6379/1' diff --git a/deploy.sh b/deploy.sh index bf0ced13..6f0fa361 100755 --- a/deploy.sh +++ b/deploy.sh @@ -4,6 +4,8 @@ date > updated.txt sudo systemctl stop celery.service git pull source venv/bin/activate +export FLASK_APP=pyfedi.py flask db upgrade +pybabel compile -d app/translations sudo systemctl start celery.service sudo systemctl restart pyfedi.service diff --git a/dev_notes.txt b/dev_notes.txt index 30b56799..4f220105 100644 --- a/dev_notes.txt +++ b/dev_notes.txt @@ -16,3 +16,18 @@ python profile_app.py instead of flask run + + +translations: + +See https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xiii-i18n-and-l10n-2018 + +to add a new language which can be worked on: + +pybabel init -i messages.pot -d app/translations -l + +after changes to the files in app/translations/* are mode, they need to be compiled +pybabel compile -d app/translations + + + diff --git a/migrations/versions/81175e11c083_report_in_community.py b/migrations/versions/81175e11c083_report_in_community.py new file mode 100644 index 00000000..7258b495 --- /dev/null +++ b/migrations/versions/81175e11c083_report_in_community.py @@ -0,0 +1,38 @@ +"""report in community + +Revision ID: 81175e11c083 +Revises: e72aa356e4d0 +Create Date: 2024-03-18 20:37:43.216482 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '81175e11c083' +down_revision = 'e72aa356e4d0' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('report', schema=None) as batch_op: + batch_op.add_column(sa.Column('in_community_id', sa.Integer(), nullable=True)) + batch_op.drop_constraint('report_suspect_community_id_fkey', type_='foreignkey') + batch_op.create_foreign_key(None, 'community', ['suspect_community_id'], ['id']) + batch_op.create_foreign_key(None, 'community', ['in_community_id'], ['id']) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('report', schema=None) as batch_op: + batch_op.drop_constraint(None, type_='foreignkey') + batch_op.drop_constraint(None, type_='foreignkey') + batch_op.create_foreign_key('report_suspect_community_id_fkey', 'user', ['suspect_community_id'], ['id']) + batch_op.drop_column('in_community_id') + + # ### end Alembic commands ###