From a804926c35bd1fa0fa84165d9ae90387c2df3340 Mon Sep 17 00:00:00 2001 From: ed neville Date: Sun, 28 Jun 2020 10:49:35 +0100 Subject: [PATCH 01/45] Minor correction of nouns in README.md 'Reddit' and 'Lemmy' are used as nouns so they should be title-cased. Signed-off-by: ed neville --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 41ba48099..3668d147e 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@

Lemmy

- A link aggregator / reddit clone for the fediverse. + A link aggregator / Reddit clone for the fediverse.

View Site @@ -40,9 +40,9 @@ Front Page|Post For a link aggregator, this means a user registered on one server can subscribe to forums on any other server, and can have discussions with users registered elsewhere. -The overall goal is to create an easily self-hostable, decentralized alternative to reddit and other link aggregators, outside of their corporate control and meddling. +The overall goal is to create an easily self-hostable, decentralized alternative to Reddit and other link aggregators, outside of their corporate control and meddling. -Each lemmy server can set its own moderation policy; appointing site-wide admins, and community moderators to keep out the trolls, and foster a healthy, non-toxic environment where all can feel comfortable contributing. +Each Lemmy server can set its own moderation policy; appointing site-wide admins, and community moderators to keep out the trolls, and foster a healthy, non-toxic environment where all can feel comfortable contributing. *Note: Federation is still in active development and the WebSocket, as well as, HTTP API are currently unstable* @@ -70,7 +70,7 @@ Each lemmy server can set its own moderation policy; appointing site-wide admins - Only a minimum of a username and password is required to sign up! - User avatar support. - Live-updating Comment threads. - - Full vote scores `(+/-)` like old reddit. + - Full vote scores `(+/-)` like old Reddit. - Themes, including light, dark, and solarized. - Emojis with autocomplete support. Start typing `:` - User tagging using `@`, Community tagging using `!`. From c293c278bfa7de9e7e3cc73efc9ac0264c6cbb79 Mon Sep 17 00:00:00 2001 From: Panos Alevropoulos Date: Sun, 28 Jun 2020 17:01:14 +0000 Subject: [PATCH 02/45] Translated using Weblate (Greek) Currently translated at 64.2% (160 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/el/ Translated using Weblate (Greek) Currently translated at 64.2% (160 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/el/ --- ui/translations/el.json | 172 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 171 insertions(+), 1 deletion(-) diff --git a/ui/translations/el.json b/ui/translations/el.json index 0967ef424..1498b6a7a 100644 --- a/ui/translations/el.json +++ b/ui/translations/el.json @@ -1 +1,171 @@ -{} +{ + "invalid_community_name": "Άκυρο όνομα.", + "click_to_delete_picture": "Κλικ για διαγραφή εικόνας.", + "picture_deleted": "Η φωτογραφία διαγράφηκε.", + "cross_posts": "Αυτός ο σύνδεσμος έχει επίσης δημοσιευτεί σε:", + "create_post": "Δημιουργία δημοσίευσης", + "create_a_post": "Δημιουργία μιας δημοσίευσης", + "number_of_posts": "{{count}} Δημοσίευση", + "number_of_posts_plural": "{{count}} Δημοσιεύσεις", + "posts": "Δημοσιεύσεις", + "related_posts": "Αυτές οι δημοσιεύσεις μπορεί να σχετίζονται", + "cross_post": "Επαναδημοσίευση", + "cross_posted_to": "Επαναδημοσιευμένο σε: ", + "comments": "Σχόλια", + "number_of_comments": "{{count}} Σχόλιο", + "number_of_comments_plural": "{{count}} Σχόλια", + "post": "Δημοσίευση", + "remove_post": "Αφαίρεση δημοσίευσης", + "no_posts": "Δεν υπάρχουν δημοσιεύσεις.", + "remove_comment": "Αφαίρεση σχολίου", + "communities": "Κοινότητες", + "users": "Χρήστες", + "create_a_community": "Δημιουργία μιας κοινότητας", + "create_community": "Δημιουργία κοινότητας", + "remove_community": "Αφαίρεση κοινότητας", + "subscribed_to_communities": "Εγγεγραμμένος σε <1>κοινότητες", + "trending_communities": "Τάση σε <1>κοινότητες", + "list_of_communities": "Κατάλογος κοινοτήτων", + "number_of_communities": "{{count}} Κοινότητα", + "number_of_communities_plural": "{{count}} Κοινότητες", + "community_reqs": "πεζά (μικρά) γράμματα, υπογραμμίσεις, και καθόλου κενά.", + "create_private_message": "Δημιουργία προσωπικού μηνύματος", + "send_secure_message": "Αποστολή ασφαλούς μηνύματος", + "send_message": "Αποστολή μηνύματος", + "message": "Μήνυμα", + "edit": "επεξεργασία", + "reply": "απάντηση", + "more": "περισσότερα", + "cancel": "Ακύρωση", + "preview": "Προεπισκόπηση", + "upload_image": "φόρτωση εικόνας", + "avatar": "Άβαταρ", + "upload_avatar": "Φόρτωση άβαταρ", + "show_avatars": "Εμφάνιση των άβαταρς", + "show_context": "Εμφάνιση συμφραζόμενων", + "formatting_help": "βοήθεια μορφοποίησης", + "sorting_help": "βοήθεια ταξινόμησης", + "view_source": "εμφάνιση πηγής", + "unlock": "ξεκλείδωμα", + "lock": "κλείδωμα", + "sticky": "κόλλημα", + "unsticky": "ξεκόλλημα", + "link": "σύνδεσμος", + "archive_link": "αρχειοθέτηση συνδέσμου", + "mod": "συντονιστής", + "mods": "συντονιστές", + "moderates": "Συντονίζει", + "settings": "Ρυθμίσεις", + "admin_settings": "Ρυθμίσεις διαχειριστή", + "appoint_as_mod": "διορισμός ως συντονιστή", + "site_config": "Διαμόρφωση ιστοτόπου", + "remove_as_mod": "αφαίρεση από συντονιστή", + "modlog": "Αρχείο συντονιστών", + "admin": "διαχειριστής", + "admins": "διαχειριστές", + "remove_as_admin": "αφαίρεση από διαχειριστή", + "appoint_as_admin": "διορισμός ως διαχειριστή", + "remove": "αφαίρεση", + "removed": "έγινε αφαίρεση από συντονιστή", + "locked": "κλειδωμένο", + "stickied": "καρφιτσωμένο", + "reason": "Λόγος", + "mark_as_read": "επισήμανση ως διαβασμένο", + "mark_as_unread": "επισήμανση ως μη διαβασμένο", + "delete": "διαγραφή", + "deleted": "διαγράφηκε από τον δημιουργό", + "delete_account": "Διαγραφή λογαριασμού", + "delete_account_confirm": "Προσοχή: αυτό θα διαγράψει όλα τα δεδομένα σας. Είσαγετε τον κωδικό σας για επιβεβαίωση.", + "restore": "επαναφορά", + "ban": "απαγόρευση", + "ban_from_site": "απαγόρευση εισόδου στον ιστότοπο", + "unban": "άρση απαγόρευσης", + "unban_from_site": "άρση απαγόρευσης εισόδου στον ιστότοπο", + "banned": "αποβεβλημένος", + "banned_users": "Αποβεβλημένοι Χρήστες", + "save": "αποθήκευση", + "unsave": "αναίρεση αποθήκευσης", + "create": "δημιουργία", + "creator": "δημιουργός", + "username": "Όνομα χρήστη", + "email_or_username": "Διεύθυνση ηλεκτρονικού ταχυδρομείου ή Όνομα χρήστη", + "number_of_users": "{{count}} Χρήστης", + "number_of_users_plural": "{{count}} Χρήστες", + "number_of_subscribers": "{{count}} Εγγεγραμμένος", + "number_of_subscribers_plural": "{{count}} Εγγεγραμμένοι", + "number_of_points": "{{count}} Βαθμός", + "number_of_points_plural": "{{count}} Βαθμοί", + "number_online": "{{count}} Ενεργός Χρήστης", + "number_online_plural": "{{count}} Ενεργοί Χρήστες", + "name": "Όνομα", + "title": "Επικεφαλίδα", + "category": "Κατηγορία", + "subscribers": "Εγγεγραμμένοι", + "both": "Και οι δύο", + "saved": "Αποθηκεύτηκε", + "prev": "Προηγούμενο", + "next": "Επόμενο", + "sidebar": "Πλευρικό μενού", + "sort_type": "Ταξινόμηση κατά", + "hot": "Δημοφιλή", + "new": "Νέα", + "old": "Παλιά", + "unsubscribe": "Απεγγραφή", + "subscribe": "Εγγραφή", + "inbox_for": "Εισερχόμενα για <1>{{user}}", + "mark_all_as_read": "επισήμανση όλων ως διαβασμένα", + "type": "Είδος", + "unread": "Επισήμανση ως μη διαβασμένο", + "url": "Ενιαίος Εντοπιστής Πόρων (URL)", + "subscribed": "Εγγεγραμμένος", + "week": "Εβδομάδα", + "month": "Μήνας", + "year": "Έτος", + "all": "Όλα", + "top": "Κορυφαία", + "api": "Διεπαφή Προγραμματισμού Εφαρμογών", + "docs": "Έγγραφα", + "inbox": "Εισερχόμενα", + "number_of_upvotes": "{{count}} Θετική ψήφος", + "number_of_upvotes_plural": "{{count}} Θετικές ψήφοι", + "number_of_downvotes": "{{count}} Αρνητική ψήφος", + "number_of_downvotes_plural": "{{count}} Αρνητικές ψήφοι", + "replies": "Απαντήσεις", + "mentions": "Αναφορές", + "reply_sent": "Η απάντηση στάλθηκε", + "message_sent": "Το μήνυμα στάλθηκε", + "search": "Αναζήτηση", + "overview": "Επισκόπηση", + "view": "Προβολή", + "logout": "Αποσύνδεση", + "login_sign_up": "Σύνδεση / Εγγραφή", + "login": "Σύνδεση", + "sign_up": "Εγγραφή", + "notifications_error": "Οι ειδοποιήσεις επιφάνειας εργασίας δεν είναι διαθέσιμες στο πρόγραμμα περιήγησής σας. Δοκιμάστε το Firefox ή το Chrome.", + "unread_messages": "Μη διαβασμένα μηνύματα", + "messages": "Μηνύματα", + "password": "Κωδικός", + "verify_password": "Επαλήθευση κωδικού", + "old_password": "Παλιός κωδικός", + "forgot_password": "ξέχασα τον κωδικό μου", + "reset_password_mail_sent": "Μόλις στάλθηκε ένα μήνυμα ηλεκτρονικού ταχυδρομείου για την επαναφορά του κωδικού σας.", + "password_change": "Αλλαγή κωδικού", + "new_password": "Νέος κωδικός", + "no_email_setup": "Αυτός ο διακομιστής δεν έχει εγκαταστήσει σωστά το ηλεκτρονικό ταχυδρομείο.", + "email": "Ηλεκτρονικό ταχυδρομείο", + "matrix_user_id": "Χρήστης Matrix", + "private_message_disclaimer": "Προσοχή: τα προσωπικά μηνύματα στο Lemmy δεν είναι ασφαλή. Παρακαλούμε δημιουργήστε έναν λογαριασμό στο <1>Riot.im για ασφαλή επικοινωνία.", + "send_notifications_to_email": "Αποστολή ειδοποιήσεων στη διεύθυνση ηλεκτρονικού ταχυδρομείου", + "optional": "Προαιρετικό", + "expires": "Λήγει", + "language": "Γλώσσα", + "browser_default": "Προεπιλεγμένο πρόγραμμα περιήγησης", + "downvotes_disabled": "Αρνητικές ψήφοι απενεργοποιημένες", + "enable_downvotes": "Ενεργοποίηση αρνητικών ψήφων", + "upvote": "Θετική ψήφος", + "downvote": "Αρνητική ψήφος", + "open_registration": "Ανοιχτή εγγραφή", + "registration_closed": "Εγγραφή κλειστή", + "enable_nsfw": "Ανοχή περιεχομένου ακατάλληλου για ανηλίκους", + "select_a_community": "Επιλογή μιας κοινότητας" +} From 7d861404ce6a4c81b33ecb3f946f3b68f20a4209 Mon Sep 17 00:00:00 2001 From: Sergio Varela Date: Sun, 28 Jun 2020 17:01:14 +0000 Subject: [PATCH 03/45] Translated using Weblate (Basque) Currently translated at 72.2% (180 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 144 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 134 insertions(+), 10 deletions(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index 22f30ae5a..e2ed52dca 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -14,29 +14,29 @@ "upload_image": "Irudia igo", "link": "esteka", "remove": "ezabatu", - "mark_as_unread": "irakurri gabea", + "mark_as_unread": "markatu irakurri gabeko mezu gisa", "delete": "ezabatu", - "delete_account": "Kontua Ezabatu", + "delete_account": "Ezabatu Kontua", "ban": "kaleratu", - "ban_from_site": "Lekutik kaleratu", + "ban_from_site": "kaleratu gunetik", "unban": "onartu", "save": "gorde", "create": "sortu", - "creator": "sortzaile", - "username": "Erabiltzailea", + "creator": "sortzailea", + "username": "Erabiltzailearen izena", "name": "Izena", "title": "Izenburua", "both": "Biak", "saved": "Gordeta", - "week": "Aste", - "month": "Hilabete", - "year": "Urte", + "week": "Astea", + "month": "Hilabetea", + "year": "Urtea", "all": "Dena", "api": "API", "unread": "Irakurri gabe", "replies": "Erantzunak", "search": "Bilatu", - "sign_up": "Kontua Sortu", + "sign_up": "Erregistratu", "messages": "Mezuak", "password": "Pasahitza", "password_change": "Pasahitza Aldatu", @@ -63,5 +63,129 @@ "number_of_users": "Erabiltzaile {{count}}", "number_of_users_plural": "{{count}} Erabiltzaile", "number_of_subscribers": "Jarraitzaile {{count}}", - "number_of_subscribers_plural": "{{count}} Jarraitzaile" + "number_of_subscribers_plural": "{{count}} Jarraitzaile", + "invalid_community_name": "Izen baliogabea.", + "click_to_delete_picture": "Egin klik irudia ezabatzeko.", + "picture_deleted": "Irudia ezabatuta.", + "send_secure_message": "Bidali mezu seguru bat", + "preview": "Aurretiko bista", + "avatar": "Profilaren argazkia", + "upload_avatar": "Profileko argazki bat igo", + "show_avatars": "Profilen argazkia erakutsi", + "show_context": "Erakutsi testuingurua", + "formatting_help": "formatuaren laguntza", + "sorting_help": "sailkatzeko laguntza", + "view_source": "ikusi iturria", + "unlock": "desblokeatu", + "lock": "blokeatu", + "sticky": "itsasgarria", + "unsticky": "ez itsaskorra", + "archive_link": "artxiboko esteka", + "mod": "Moderatzailea", + "mods": "Moderatzaileak", + "moderates": "Moderatuak", + "settings": "Doikuntzak", + "admin_settings": "Administrazio-doikuntzak", + "site_config": "Gunearen konfigurazioa", + "remove_as_mod": "ezabatu moderatzaile gisa", + "modlog": "Moderatzailearen erregistroa", + "appoint_as_mod": "moderatzaile bezala izendatu", + "admin": "administratzailea", + "admins": "administratzaileak", + "remove_as_admin": "ezabatu administratzaile gisa", + "appoint_as_admin": "administratzaile bezala izendatu", + "removed": "moderatzaileak ezabatua", + "locked": "blokeatuta", + "number_online": "Erabiltzaile {{count}} konektatuta", + "number_online_plural": "{{count}} Erabiltzaile konektatutak", + "subscribed": "Harpidetuta", + "prev": "Aurrekoa", + "create_community": "Komunitate bat sortu", + "create_post": "Sortu argitalpena", + "posts": "Argitalpenak", + "related_posts": "Argitalpen horiek zerikusia izan dezakete", + "cross_posts": "Esteka hau ere hemen argitaratu da:", + "comments": "Iruzkinak", + "number_of_comments": "{{count}} Iruzkin", + "number_of_comments_plural": "{{count}} Iruzkinak", + "remove_comment": "Ezabatu iruzkina", + "communities": "Komunitateak", + "create_a_community": "Komunitate bat sortu", + "cross_post": "Argitalpen gurutzatua", + "cross_posted_to": "Argitalpen gurutzatua: ", + "next": "Hurrengoa", + "remove_community": "Komunitatea ezabatu", + "subscribed_to_communities": "<1>komunitateetan harpidetuta", + "trending_communities": "<1>komunitateen joerak", + "list_of_communities": "Komunitateen zerrenda", + "community_reqs": "Letra xehez, azpimarratuta eta espaziorik gabe.", + "create_private_message": "Mezu pribatu bat sortu", + "cancel": "Ezeztatu", + "stickied": "itsatsita", + "reason": "Arrazoia", + "mark_as_read": "markatu irakurrita bezala", + "deleted": "sortzaileak ezabatua", + "delete_account_confirm": "Ohartarazpena: horrek etengabe ezabatuko ditu zure datu guztiak. Idatzi zure pasahitza baieztatzeko.", + "restore": "leheneratu", + "unban_from_site": "gunetik debekua kentzea", + "banned": "debekatuta", + "banned_users": "Erabiltzaile Debekatuak", + "unsave": "ez gorde", + "email_or_username": "Posta elektronikoa edo Erabiltzaile-izena", + "category": "Kategoria", + "subscribers": "Harpidedunak", + "unsubscribe": "Ez-harpidetu", + "subscribe": "Harpidetu", + "sidebar": "Alboko barra", + "sort_type": "Sailkapen mota", + "hot": "Beroa", + "new": "Berria", + "old": "Zaharra", + "top_day": "Egunik garrantzitsuena", + "top": "Garrantzitsuena", + "docs": "Dokumentazioa", + "inbox": "Mezuen sarrera", + "inbox_for": "Sarrera-erretilua <1>{{user}} -rentzat", + "mark_all_as_read": "markatu dena irakurrita bezala", + "type": "Mota", + "number_of_communities": "{{count}} Komunitate", + "number_of_communities_plural": "{{count}} Komunitateak", + "mentions": "Aipamenak", + "reply_sent": "Erantzuna bidalita", + "message_sent": "Bidali erantzuna", + "overview": "Ikuspegi orokorra", + "view": "Ikusi", + "logout": "Saioa itxi", + "login_sign_up": "Sartu / Erregistratu", + "login": "Sartu", + "notifications_error": "Mahaigaineko jakinarazpenak ez daude eskuragarri zure web-nabigatzailean. Probatu Firefox edo Chromerekin.", + "unread_messages": "Irakurri gabeko mezuak", + "verify_password": "Egiaztatu Pasahitza", + "old_password": "Pasahitz Zaharra", + "forgot_password": "pasahitza ahaztu", + "reset_password_mail_sent": "Mezu elektroniko bat bidali pasahitza berrezartzeko.", + "no_email_setup": "Zerbitzari honek ez du posta elektronikoa behar bezala konfiguratu.", + "matrix_user_id": "Matrix Erabiltzailea", + "private_message_disclaimer": "Ohartarazpena: Lemmy-en dauden mezu pribatuak ez dira seguruak. Mesedez, sortu kontu bat <1>Riot.im -en mezu seguruetarako.", + "send_notifications_to_email": "Bidali jakinarazpenak posta elektronikora", + "optional": "Ez-ohikoa", + "browser_default": "Nabigatzaile Lehenetsia", + "downvotes_disabled": "Puntuazio negatiboak desgaituta daude", + "enable_downvotes": "Kontrako botoak gaitu", + "upvote": "Aldeko botoa eman", + "downvote": "Kontrako botoa eman", + "number_of_downvotes": "Kontrako boto {{count}}", + "number_of_downvotes_plural": "{{count}} Kontrako botoak", + "number_of_upvotes": "Aldeko boto {{count}}", + "number_of_upvotes_plural": "{{count}} Aldeko botoak", + "open_registration": "Erregistro Irekia", + "registration_closed": "Erregistroa itxita", + "enable_nsfw": "NSFW gaitu", + "body": "Gorputza", + "copy_suggested_title": "Kopiatu iradokitako izenburua: {{title}}", + "community": "Komunitatea", + "expand_here": "Hedatu hemen", + "subscribe_to_communities": "Harpidetu zaitez <1>komunitate batzuetara.", + "recent_comments": "Duela gutxiko Iruzkinak", + "select_a_community": "Aukeratu komunitate bat" } From 0112d0d9551836c1a525203a8fef27c94e640405 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Sun, 28 Jun 2020 13:44:42 -0400 Subject: [PATCH 04/45] Fixing test deploy, adding a rate limiter to ansible nginx config. --- ansible/templates/nginx.conf | 4 ++++ docker/dev/test_deploy.sh | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ansible/templates/nginx.conf b/ansible/templates/nginx.conf index b710fdb30..5847bad01 100644 --- a/ansible/templates/nginx.conf +++ b/ansible/templates/nginx.conf @@ -1,4 +1,5 @@ proxy_cache_path /var/cache/lemmy_frontend levels=1:2 keys_zone=lemmy_frontend_cache:10m max_size=100m use_temp_path=off; +limit_req_zone $binary_remote_addr zone=lemmy_ratelimit:10m rate=1r/s; server { listen 80; @@ -51,6 +52,9 @@ server { # Upload limit for pictrs client_max_body_size 20M; + # Rate limit + limit_req zone=lemmy_ratelimit burst=30 nodelay; + location / { proxy_pass http://0.0.0.0:8536; proxy_set_header X-Real-IP $remote_addr; diff --git a/docker/dev/test_deploy.sh b/docker/dev/test_deploy.sh index c2ecc0c89..7641c9402 100755 --- a/docker/dev/test_deploy.sh +++ b/docker/dev/test_deploy.sh @@ -9,10 +9,10 @@ export COMPOSE_DOCKER_CLI_BUILD=1 export DOCKER_BUILDKIT=1 # Rebuilding dev docker -sudo docker build . -f "docker/dev/Dockerfile" -t "dessalines/lemmy:$BRANCH" +sudo docker build ../../ -f . -t "dessalines/lemmy:$BRANCH" sudo docker push "dessalines/lemmy:$BRANCH" # Run the playbook -pushd ../lemmy-ansible +pushd ../../../lemmy-ansible ansible-playbook -i test playbooks/site.yml popd From c1b37110902ea642b385b0a300cbe3a7dc11638e Mon Sep 17 00:00:00 2001 From: Dessalines Date: Sun, 28 Jun 2020 19:23:24 -0400 Subject: [PATCH 05/45] Adding line for council admins. --- docs/src/lemmy_council.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/src/lemmy_council.md b/docs/src/lemmy_council.md index 08c25fb83..9b24522af 100644 --- a/docs/src/lemmy_council.md +++ b/docs/src/lemmy_council.md @@ -1,6 +1,7 @@ # Lemmy Council -- A group of lemmy developers and users that use a well-defined democratic process to steer the project in a positive direction, keep it aligned to community goals, and resolve conflicts. +- A group of lemmy developers and users that use a well-defined democratic process to steer the project in a positive direction, keep it aligned to community goals, and resolve conflicts. +- Council members are also added as administrators to any official Lemmy instances. ## Voting / Decision-Making @@ -52,4 +53,4 @@ General Contact [@LemmyDev Mastodon](https://mastodon.social/@LemmyDev) - [Dessalines](https://dev.lemmy.ml/u/dessalines) - [Nutomic](https://dev.lemmy.ml/u/nutomic) - [AgreeableLandscape](https://dev.lemmy.ml/u/AgreeableLandscape) -- [fruechtchen](https://dev.lemmy.ml/u/fruechtchen) \ No newline at end of file +- [fruechtchen](https://dev.lemmy.ml/u/fruechtchen) From 022fd31b66bd942b87a9d9d2a574008fc3bb4c4a Mon Sep 17 00:00:00 2001 From: Dessalines Date: Sun, 28 Jun 2020 19:41:00 -0400 Subject: [PATCH 06/45] Slur additions. --- server/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/lib.rs b/server/src/lib.rs index b7c210497..d9654af6f 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -420,7 +420,7 @@ mod tests { lazy_static! { static ref EMAIL_REGEX: Regex = Regex::new(r"^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$").unwrap(); - static ref SLUR_REGEX: Regex = RegexBuilder::new(r"(fag(g|got|tard)?|maricos?|cock\s?sucker(s|ing)?|nig(\b|g?(a|er)?(s|z)?)\b|dindu(s?)|mudslime?s?|kikes?|mongoloids?|towel\s*heads?|\bspi(c|k)s?\b|\bchinks?|niglets?|beaners?|\bnips?\b|\bcoons?\b|jungle\s*bunn(y|ies?)|jigg?aboo?s?|\bpakis?\b|rag\s*heads?|gooks?|cunts?|bitch(es|ing|y)?|puss(y|ies?)|twats?|feminazis?|whor(es?|ing)|\bslut(s|t?y)?|\btrann?(y|ies?)|ladyboy(s?)|\b(b|re|r)tard(ed)?s?)").case_insensitive(true).build().unwrap(); + static ref SLUR_REGEX: Regex = RegexBuilder::new(r"(fag(g|got|tard)?|maricos?|cock\s?sucker(s|ing)?|n(i|1)g(\b|g?(a|er)?(s|z)?)\b|dindu(s?)|mudslime?s?|kikes?|mongoloids?|towel\s*heads?|\bspi(c|k)s?\b|\bchinks?|niglets?|beaners?|\bnips?\b|\bcoons?\b|jungle\s*bunn(y|ies?)|jigg?aboo?s?|\bpakis?\b|rag\s*heads?|gooks?|cunts?|bitch(es|ing|y)?|puss(y|ies?)|twats?|feminazis?|whor(es?|ing)|\bslut(s|t?y)?|\btr(a|@)nn?(y|ies?)|ladyboy(s?)|\b(b|re|r)tard(ed)?s?)").case_insensitive(true).build().unwrap(); static ref USERNAME_MATCHES_REGEX: Regex = Regex::new(r"/u/[a-zA-Z][0-9a-zA-Z_]*").unwrap(); // TODO keep this old one, it didn't work with port well tho // static ref WEBFINGER_USER_REGEX: Regex = Regex::new(r"@(?P[\w.]+)@(?P[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)").unwrap(); From ace5b715365df8f0de7fbed2da15fc556a8df0d9 Mon Sep 17 00:00:00 2001 From: Panos Alevropoulos Date: Mon, 29 Jun 2020 02:07:01 +0000 Subject: [PATCH 07/45] Translated using Weblate (Greek) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/el/ Translated using Weblate (Greek) Currently translated at 89.9% (224 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/el/ Translated using Weblate (Greek) Currently translated at 64.2% (160 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/el/ Translated using Weblate (Greek) Currently translated at 64.2% (160 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/el/ --- ui/translations/el.json | 261 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 260 insertions(+), 1 deletion(-) diff --git a/ui/translations/el.json b/ui/translations/el.json index 0967ef424..7d7d14978 100644 --- a/ui/translations/el.json +++ b/ui/translations/el.json @@ -1 +1,260 @@ -{} +{ + "invalid_community_name": "Άκυρο όνομα.", + "click_to_delete_picture": "Κλικ για διαγραφή εικόνας.", + "picture_deleted": "Η φωτογραφία διαγράφηκε.", + "cross_posts": "Αυτός ο σύνδεσμος έχει επίσης δημοσιευτεί σε:", + "create_post": "Δημιουργία δημοσίευσης", + "create_a_post": "Δημιουργία μιας δημοσίευσης", + "number_of_posts": "{{count}} Δημοσίευση", + "number_of_posts_plural": "{{count}} Δημοσιεύσεις", + "posts": "Δημοσιεύσεις", + "related_posts": "Αυτές οι δημοσιεύσεις μπορεί να σχετίζονται", + "cross_post": "Επαναδημοσίευση", + "cross_posted_to": "Επαναδημοσιευμένο σε: ", + "comments": "Σχόλια", + "number_of_comments": "{{count}} Σχόλιο", + "number_of_comments_plural": "{{count}} Σχόλια", + "post": "δημοσίευση", + "remove_post": "Αφαίρεση δημοσίευσης", + "no_posts": "Δεν υπάρχουν δημοσιεύσεις.", + "remove_comment": "Αφαίρεση σχολίου", + "communities": "Κοινότητες", + "users": "Χρήστες", + "create_a_community": "Δημιουργία μιας κοινότητας", + "create_community": "Δημιουργία κοινότητας", + "remove_community": "Αφαίρεση κοινότητας", + "subscribed_to_communities": "Εγγεγραμμένος σε <1>κοινότητες", + "trending_communities": "Τάση σε <1>κοινότητες", + "list_of_communities": "Κατάλογος κοινοτήτων", + "number_of_communities": "{{count}} Κοινότητα", + "number_of_communities_plural": "{{count}} Κοινότητες", + "community_reqs": "πεζά (μικρά) γράμματα, υπογραμμίσεις, και χωρίς κενά.", + "create_private_message": "Δημιουργία προσωπικού μηνύματος", + "send_secure_message": "Αποστολή ασφαλούς μηνύματος", + "send_message": "Αποστολή μηνύματος", + "message": "Μήνυμα", + "edit": "επεξεργασία", + "reply": "απάντηση", + "more": "περισσότερα", + "cancel": "Ακύρωση", + "preview": "Προεπισκόπηση", + "upload_image": "φόρτωση εικόνας", + "avatar": "Άβαταρ", + "upload_avatar": "Φόρτωση άβαταρ", + "show_avatars": "Εμφάνιση των άβαταρς", + "show_context": "Εμφάνιση συμφραζόμενων", + "formatting_help": "βοήθεια μορφοποίησης", + "sorting_help": "βοήθεια ταξινόμησης", + "view_source": "προβολή πηγής", + "unlock": "ξεκλείδωμα", + "lock": "κλείδωμα", + "sticky": "καρφίτσωμα", + "unsticky": "ξεκαρφίτσωμα", + "link": "σύνδεσμος", + "archive_link": "αρχειοθέτηση συνδέσμου", + "mod": "συντονιστής", + "mods": "συντονιστές", + "moderates": "Συντονίζει", + "settings": "Ρυθμίσεις", + "admin_settings": "Ρυθμίσεις διαχειριστή", + "appoint_as_mod": "διορισμός ως συντονιστής", + "site_config": "Διαμόρφωση ιστότοπου", + "remove_as_mod": "αφαίρεση ως συντονιστής", + "modlog": "Ιστορικό συντονισμού", + "admin": "διαχειριστής", + "admins": "διαχειριστές", + "remove_as_admin": "αφαίρεση ως διαχειριστής", + "appoint_as_admin": "διορισμός ως διαχειριστής", + "remove": "αφαίρεση", + "removed": "αφαιρέθηκε από συντονιστή", + "locked": "κλειδωμένο", + "stickied": "καρφιτσωμένο", + "reason": "Λόγος", + "mark_as_read": "επισήμανση ως διαβασμένο", + "mark_as_unread": "επισήμανση ως μη διαβασμένο", + "delete": "διαγραφή", + "deleted": "διαγράφηκε από τον δημιουργό", + "delete_account": "Διαγραφή λογαριασμού", + "delete_account_confirm": "Προσοχή: αυτό θα διαγράψει όλα τα δεδομένα σας. Είσαγετε τον κωδικό σας για επιβεβαίωση.", + "restore": "επαναφορά", + "ban": "απαγόρευση", + "ban_from_site": "απαγόρευση εισόδου στον ιστότοπο", + "unban": "άρση απαγόρευσης", + "unban_from_site": "άρση απαγόρευσης εισόδου στον ιστότοπο", + "banned": "αποβεβλημένος", + "banned_users": "Αποβεβλημένοι χρήστες", + "save": "αποθήκευση", + "unsave": "αναίρεση αποθήκευσης", + "create": "δημιουργία", + "creator": "δημιουργός", + "username": "Όνομα χρήστη", + "email_or_username": "Διεύθυνση ηλεκτρονικού ταχυδρομείου ή όνομα χρήστη", + "number_of_users": "{{count}} Χρήστης", + "number_of_users_plural": "{{count}} Χρήστες", + "number_of_subscribers": "{{count}} Εγγεγραμμένος", + "number_of_subscribers_plural": "{{count}} Εγγεγραμμένοι", + "number_of_points": "{{count}} Βαθμός", + "number_of_points_plural": "{{count}} Βαθμοί", + "number_online": "{{count}} Ενεργός χρήστης", + "number_online_plural": "{{count}} Ενεργοί χρήστες", + "name": "Όνομα", + "title": "Επικεφαλίδα", + "category": "Κατηγορία", + "subscribers": "Εγγεγραμμένοι", + "both": "Και οι δύο", + "saved": "Αποθηκεύτηκε", + "prev": "Προηγούμενο", + "next": "Επόμενο", + "sidebar": "Πλευρικό μενού", + "sort_type": "Ταξινόμηση κατά", + "hot": "Δημοφιλή", + "new": "Νέα", + "old": "Παλιά", + "unsubscribe": "Απεγγραφή", + "subscribe": "Εγγραφή", + "inbox_for": "Εισερχόμενα για <1>{{user}}", + "mark_all_as_read": "επισήμανση όλων ως διαβασμένα", + "type": "Είδος", + "unread": "Μη διαβασμένα", + "url": "Ενιαίος Εντοπιστής Πόρων (URL)", + "subscribed": "Εγγεγραμμένος", + "week": "Εβδομάδα", + "month": "Μήνας", + "year": "Έτος", + "all": "Όλα", + "top": "Κορυφαία", + "api": "Διεπαφή Προγραμματισμού Εφαρμογών (API)", + "docs": "Έγγραφα", + "inbox": "Εισερχόμενα", + "number_of_upvotes": "{{count}} Θετική ψήφος", + "number_of_upvotes_plural": "{{count}} Θετικές ψήφοι", + "number_of_downvotes": "{{count}} Αρνητική ψήφος", + "number_of_downvotes_plural": "{{count}} Αρνητικές ψήφοι", + "replies": "Απαντήσεις", + "mentions": "Αναφορές", + "reply_sent": "Η απάντηση στάλθηκε", + "message_sent": "Το μήνυμα στάλθηκε", + "search": "Αναζήτηση", + "overview": "Επισκόπηση", + "view": "Προβολή", + "logout": "Αποσύνδεση", + "login_sign_up": "Σύνδεση / Εγγραφή", + "login": "Σύνδεση", + "sign_up": "Εγγραφή", + "notifications_error": "Οι ειδοποιήσεις επιφάνειας εργασίας δεν είναι διαθέσιμες στο πρόγραμμα περιήγησής σας. Δοκιμάστε το Firefox ή το Chrome.", + "unread_messages": "Μη διαβασμένα μηνύματα", + "messages": "Μηνύματα", + "password": "Κωδικός", + "verify_password": "Επαλήθευση κωδικού", + "old_password": "Παλιός κωδικός", + "forgot_password": "ξέχασα τον κωδικό μου", + "reset_password_mail_sent": "Μόλις στάλθηκε ένα μήνυμα ηλεκτρονικού ταχυδρομείου για την επαναφορά του κωδικού σας.", + "password_change": "Αλλαγή κωδικού", + "new_password": "Νέος κωδικός", + "no_email_setup": "Αυτός ο διακομιστής δεν έχει εγκαταστήσει σωστά το ηλεκτρονικό ταχυδρομείο.", + "email": "Ηλεκτρονικό ταχυδρομείο", + "matrix_user_id": "Χρήστης Matrix", + "private_message_disclaimer": "Προσοχή: τα προσωπικά μηνύματα στο Lemmy δεν είναι ασφαλή. Παρακαλούμε δημιουργήστε έναν λογαριασμό στο <1>Riot.im για ασφαλή επικοινωνία.", + "send_notifications_to_email": "Αποστολή ειδοποιήσεων στη διεύθυνση ηλεκτρονικού ταχυδρομείου", + "optional": "Προαιρετικό", + "expires": "Λήγει", + "language": "Γλώσσα", + "browser_default": "Προεπιλογή από το πρόγραμμα περιήγησης", + "downvotes_disabled": "Αρνητικές ψήφοι απενεργοποιημένες", + "enable_downvotes": "Ενεργοποίηση αρνητικών ψήφων", + "upvote": "Θετική ψήφος", + "downvote": "Αρνητική ψήφος", + "open_registration": "Άνοιγμα εγγραφής", + "registration_closed": "Εγγραφή κλειστή", + "enable_nsfw": "Ανοχή περιεχομένου ακατάλληλου για ανηλίκους", + "select_a_community": "Επιλογή μιας κοινότητας", + "expand_here": "Προέκταση εδώ", + "body": "Κορμός", + "copy_suggested_title": "αντιγραφή προτεινόμενης επικεφαλίδας: {{title}}", + "community": "Κοινότητα", + "subscribe_to_communities": "Εγγραφείτε σε κάποιες <1>κοινότητες.", + "chat": "Συνομιλία", + "recent_comments": "Πρόσφατα σχόλια", + "no_results": "Κανένα αποτέλεσμα.", + "setup": "Εγκατάσταση", + "lemmy_instance_setup": "Εγκατάσταση στιγμιότυπου (instance) Lemmy", + "setup_admin": "Ορισμός διαχειριστή ιστοτόπου", + "your_site": "ο ιστότοπός σας", + "modified": "τροποποιημένο", + "nsfw": "Ακατάλληλο για ανηλίκους", + "show_nsfw": "Προβολή περιεχομένου ακατάλληλου για ανηλίκους", + "theme": "Θέμα", + "sponsors": "Χορηγοί", + "sponsors_of_lemmy": "Χορηγοί του Lemmy", + "sponsor_message": "To Lemmy είναι ελεύθερο, <1>ανοιχτού κώδικα λογισμικό, αυστηρά χωρίς διαφημίσεις ή εξωτερική χρηματοδότηση. Οι δωρεές σας υποστηρίζουν απευθείας την εξέλιξη του πρότζεκτ. Ευχαριστούμε τους ακόλουθους ανθρώπους:", + "support_on_patreon": "Υποστηρίξτε στο Patreon", + "support_on_liberapay": "Υποστηρίξτε στο Liberapay", + "support_on_open_collective": "Υποστηρίξτε στο OpenCollective", + "donate_to_lemmy": "Κάντε δωρεά στο Lemmy", + "donate": "Κάντε δωρεά", + "general_sponsors": "Γενικοί χορηγοί είναι εκείνοι που έκαναν δωρεά από $10 μέχρι $39 στο Lemmy.", + "silver_sponsors": "Ασημένιοι χορηγοί είναι εκείνοι που έκαναν δωρεά $40 στο Lemmy.", + "crypto": "Κρυπτονόμισμα", + "bitcoin": "Bitcoin", + "ethereum": "Ethereum", + "monero": "Monero", + "code": "Κώδικας", + "by": "από", + "to": "μέχρι", + "from": "από", + "transfer_community": "μεταφορά κοινότητας", + "transfer_site": "μεταφορά ιστότοπου", + "are_you_sure": "είστε σίγουρος;", + "powered_by": "Τροφοδοτείται από", + "landing": "Το Lemmy είναι μια <1>ιστοσελίδα συγκέντρωσης συνδέσμων / εναλλακτική του reddit, προορισμένη να δουλέψει μέσα στο <2>fediverse.<3>Μπορεί να φιλοξενηθεί σε διακομιστή οποιουδήποτε, ανανεώνει ζωντανά (live) τα σχόλια, και είναι μικροσκοπικό σε μέγεθος (<4>~80kB). Η ομοσπονδίωση με το ActivityPub δίκτυο βρίσκεται υπό εξέλιξη<5>Αυτή είναι μια <6>πολύ πρώιμη έκδοση beta, συνεπώς πολλές λειτουργίες είναι προς το παρόν αναξιόπιστες ή ανύπαρκτες. <7>Προτείνετε καινούριες λειτουργίες ή αναφέρετε σφάλματα <8>εδώ.<9>Γραμμένο με <10>Rust, <11>Actix, <12>Inferno, <13>Typescript.", + "not_logged_in": "Μη συνδεμένος.", + "logged_in": "Συνδεμένος.", + "site_saved": "Ο ιστότοπος αποθηκεύτηκε.", + "community_ban": "Έχετε αποβληθεί από αυτή την κοινότητα.", + "site_ban": "Έχετε αποβληθεί από τον ιστότοπο", + "couldnt_create_comment": "Δεν μπόρεσε να δημιουργηθεί το σχόλιο.", + "couldnt_like_comment": "Δεν μπόρεσε να ψηφισθεί θετικά το σχόλιο.", + "couldnt_update_comment": "Δεν μπόρεσε να ενημερωθεί το σχόλιο.", + "couldnt_save_comment": "Δεν μπόρεσε να αποθηκευτεί το σχόλιο.", + "couldnt_get_comments": "Δεν μπόρεσαν να φορτώσουν τα σχόλια.", + "no_post_edit_allowed": "Δεν επιτρέπεται η επεξεργασία της δημοσίευσης.", + "no_comment_edit_allowed": "Δεν επιτρέπεται η επεξεργασία του σχολίου.", + "no_community_edit_allowed": "Δεν επιτρέπεται η επεξεργασία της κοινότητας.", + "couldnt_find_community": "Δεν μπόρεσε να βρεθεί η κοινότητα.", + "couldnt_update_community": "Δεν μπόρεσε να ενημερωθεί η κοινότητα.", + "community_already_exists": "Η κοινότητα υπάρχει ήδη.", + "community_moderator_already_exists": "Ο χρήστης είναι ήδη συντονιστής της κοινότητας.", + "community_follower_already_exists": "Ο χρήστης είναι ήδη εγγεγραμμένος στην κοινότητα.", + "community_user_already_banned": "Ο χρήστης έχει ήδη αποβληθεί από την κοινότητα.", + "couldnt_create_post": "Δεν μπόρεσε να δημιουργηθεί η δημοσίευση.", + "post_title_too_long": "Η επικεφαλίδα της δημοσίευσης είναι υπερβολικά μεγάλη.", + "couldnt_like_post": "Δεν μπόρεσε να ψηφισθεί θετικά η δημοσίευση.", + "couldnt_find_post": "Δεν μπόρεσε να βρεθεί η δημοσίευση.", + "yes": "ναι", + "no": "όχι", + "top_day": "Κορυφαία σήμερα", + "joined": "Μέλος από", + "couldnt_get_posts": "Δεν μπόρεσαν να βρεθούν οι δημοσιεύσεις", + "couldnt_update_post": "Δεν μπόρεσε να ενημερωθεί η δημοσίευση", + "couldnt_save_post": "Δεν μπόρεσε να αποθηκευτεί η δημοσίευση.", + "no_slurs": "Όχι προσβολές.", + "not_an_admin": "Ο χρήστης δεν είναι διαχειριστής.", + "site_already_exists": "Ο ιστότοπος υπάρχει ήδη.", + "couldnt_update_site": "Δεν μπόρεσε να ενημερωθεί ο ιστότοπος.", + "couldnt_find_that_username_or_email": "Δεν μπόρεσε να βρεθεί αυτό το όνομα χρήστη ή η διεύθυνση ηλεκτρονικού ταχυδρομείου.", + "password_incorrect": "Λάθος κωδικός.", + "passwords_dont_match": "Οι κωδικοί δεν ταυτίζονται.", + "admin_already_created": "Δυστυχώς υπάρχει ήδη διαχειριστής.", + "user_already_exists": "Ο χρήστης υπάρχει ήδη.", + "email_already_exists": "Η διεύθυνση ηλεκτρονικού ταχυδρομείου υπάρχει ήδη.", + "couldnt_update_user": "Δεν μπόρεσε να ενημερωθεί ο χρήστης.", + "system_err_login": "Σφάλμα στο σύστημα. Προσπαθήστε να αποσυνδεθείτε και να συνδεθείτε ξανά.", + "couldnt_create_private_message": "Δεν μπόρεσε να δημιουργηθεί προσωπικό μήνυμα.", + "no_private_message_edit_allowed": "Δεν επιτρέπεται η επεξεργασία του προσωπικού μηνύματος.", + "time": "Χρόνος", + "couldnt_update_private_message": "Δεν μπόρεσε να ενημερωθεί το προσωπικό μήνυμα.", + "action": "Δράση", + "emoji_picker": "Διαλογέας emoji", + "block_leaving": "Είστε σίγουρος ότι θέλετε να φύγετε;", + "invalid_username": "Λάθος όνομα χρήστη." +} From 309620ebbc9221b341a60dc250424b5a25649d01 Mon Sep 17 00:00:00 2001 From: Sergio Varela Date: Mon, 29 Jun 2020 02:07:01 +0000 Subject: [PATCH 08/45] Translated using Weblate (Basque) Currently translated at 74.6% (186 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ Translated using Weblate (Basque) Currently translated at 72.6% (181 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ Translated using Weblate (Basque) Currently translated at 72.2% (180 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 150 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 140 insertions(+), 10 deletions(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index 22f30ae5a..922234815 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -14,29 +14,29 @@ "upload_image": "Irudia igo", "link": "esteka", "remove": "ezabatu", - "mark_as_unread": "irakurri gabea", + "mark_as_unread": "markatu irakurri gabeko mezu gisa", "delete": "ezabatu", - "delete_account": "Kontua Ezabatu", + "delete_account": "Ezabatu Kontua", "ban": "kaleratu", - "ban_from_site": "Lekutik kaleratu", + "ban_from_site": "kaleratu gunetik", "unban": "onartu", "save": "gorde", "create": "sortu", - "creator": "sortzaile", - "username": "Erabiltzailea", + "creator": "sortzailea", + "username": "Erabiltzailearen izena", "name": "Izena", "title": "Izenburua", "both": "Biak", "saved": "Gordeta", - "week": "Aste", - "month": "Hilabete", - "year": "Urte", + "week": "Astea", + "month": "Hilabetea", + "year": "Urtea", "all": "Dena", "api": "API", "unread": "Irakurri gabe", "replies": "Erantzunak", "search": "Bilatu", - "sign_up": "Kontua Sortu", + "sign_up": "Erregistratu", "messages": "Mezuak", "password": "Pasahitza", "password_change": "Pasahitza Aldatu", @@ -63,5 +63,135 @@ "number_of_users": "Erabiltzaile {{count}}", "number_of_users_plural": "{{count}} Erabiltzaile", "number_of_subscribers": "Jarraitzaile {{count}}", - "number_of_subscribers_plural": "{{count}} Jarraitzaile" + "number_of_subscribers_plural": "{{count}} Jarraitzaile", + "invalid_community_name": "Izen baliogabea.", + "click_to_delete_picture": "Egin klik irudia ezabatzeko.", + "picture_deleted": "Irudia ezabatuta.", + "send_secure_message": "Bidali mezu seguru bat", + "preview": "Aurretiko bista", + "avatar": "Profilaren argazkia", + "upload_avatar": "Profileko argazki bat igo", + "show_avatars": "Profilen argazkia erakutsi", + "show_context": "Erakutsi testuingurua", + "formatting_help": "formatuaren laguntza", + "sorting_help": "sailkatzeko laguntza", + "view_source": "ikusi iturria", + "unlock": "desblokeatu", + "lock": "blokeatu", + "sticky": "itsasgarria", + "unsticky": "ez itsaskorra", + "archive_link": "artxiboko esteka", + "mod": "Moderatzailea", + "mods": "Moderatzaileak", + "moderates": "Moderatuak", + "settings": "Doikuntzak", + "admin_settings": "Administrazio-doikuntzak", + "site_config": "Gunearen konfigurazioa", + "remove_as_mod": "ezabatu moderatzaile gisa", + "modlog": "Moderatzailearen erregistroa", + "appoint_as_mod": "moderatzaile bezala izendatu", + "admin": "administratzailea", + "admins": "administratzaileak", + "remove_as_admin": "ezabatu administratzaile gisa", + "appoint_as_admin": "administratzaile bezala izendatu", + "removed": "moderatzaileak ezabatua", + "locked": "blokeatuta", + "number_online": "Erabiltzaile {{count}} konektatuta", + "number_online_plural": "{{count}} Erabiltzaile konektatutak", + "subscribed": "Harpidetuta", + "prev": "Aurrekoa", + "create_community": "Komunitate bat sortu", + "create_post": "Sortu argitalpena", + "posts": "Argitalpenak", + "related_posts": "Argitalpen horiek zerikusia izan dezakete", + "cross_posts": "Esteka hau ere hemen argitaratu da:", + "comments": "Iruzkinak", + "number_of_comments": "{{count}} Iruzkin", + "number_of_comments_plural": "{{count}} Iruzkinak", + "remove_comment": "Ezabatu iruzkina", + "communities": "Komunitateak", + "create_a_community": "Komunitate bat sortu", + "cross_post": "Argitalpen gurutzatua", + "cross_posted_to": "Argitalpen gurutzatua: ", + "next": "Hurrengoa", + "remove_community": "Komunitatea ezabatu", + "subscribed_to_communities": "<1>komunitateetan harpidetuta", + "trending_communities": "<1>komunitateen joerak", + "list_of_communities": "Komunitateen zerrenda", + "community_reqs": "Letra xehez, azpimarratuta eta espaziorik gabe.", + "create_private_message": "Mezu pribatu bat sortu", + "cancel": "Ezeztatu", + "stickied": "itsatsita", + "reason": "Arrazoia", + "mark_as_read": "markatu irakurrita bezala", + "deleted": "sortzaileak ezabatua", + "delete_account_confirm": "Ohartarazpena: horrek etengabe ezabatuko ditu zure datu guztiak. Idatzi zure pasahitza baieztatzeko.", + "restore": "leheneratu", + "unban_from_site": "gunetik debekua kentzea", + "banned": "debekatuta", + "banned_users": "Erabiltzaile Debekatuak", + "unsave": "ez gorde", + "email_or_username": "Posta elektronikoa edo Erabiltzaile-izena", + "category": "Kategoria", + "subscribers": "Harpidedunak", + "unsubscribe": "Ez-harpidetu", + "subscribe": "Harpidetu", + "sidebar": "Alboko barra", + "sort_type": "Sailkapen mota", + "hot": "Beroa", + "new": "Berria", + "old": "Zaharra", + "top_day": "Egunik garrantzitsuena", + "top": "Garrantzitsuena", + "docs": "Dokumentazioa", + "inbox": "Mezuen sarrera", + "inbox_for": "Sarrera-erretilua <1>{{user}} -rentzat", + "mark_all_as_read": "markatu dena irakurrita bezala", + "type": "Mota", + "number_of_communities": "{{count}} Komunitate", + "number_of_communities_plural": "{{count}} Komunitateak", + "mentions": "Aipamenak", + "reply_sent": "Erantzuna bidalita", + "message_sent": "Bidali erantzuna", + "overview": "Ikuspegi orokorra", + "view": "Ikusi", + "logout": "Saioa itxi", + "login_sign_up": "Sartu / Erregistratu", + "login": "Sartu", + "notifications_error": "Mahaigaineko jakinarazpenak ez daude eskuragarri zure web-nabigatzailean. Probatu Firefox edo Chromerekin.", + "unread_messages": "Irakurri gabeko mezuak", + "verify_password": "Egiaztatu Pasahitza", + "old_password": "Pasahitz Zaharra", + "forgot_password": "pasahitza ahaztu", + "reset_password_mail_sent": "Mezu elektroniko bat bidali pasahitza berrezartzeko.", + "no_email_setup": "Zerbitzari honek ez du posta elektronikoa behar bezala konfiguratu.", + "matrix_user_id": "Matrix Erabiltzailea", + "private_message_disclaimer": "Ohartarazpena: Lemmy-en dauden mezu pribatuak ez dira seguruak. Mesedez, sortu kontu bat <1>Riot.im -en mezu seguruetarako.", + "send_notifications_to_email": "Bidali jakinarazpenak posta elektronikora", + "optional": "Ez-ohikoa", + "browser_default": "Nabigatzaile Lehenetsia", + "downvotes_disabled": "Puntuazio negatiboak desgaituta daude", + "enable_downvotes": "Kontrako botoak gaitu", + "upvote": "Aldeko botoa eman", + "downvote": "Kontrako botoa eman", + "number_of_downvotes": "Kontrako boto {{count}}", + "number_of_downvotes_plural": "{{count}} Kontrako botoak", + "number_of_upvotes": "Aldeko boto {{count}}", + "number_of_upvotes_plural": "{{count}} Aldeko botoak", + "open_registration": "Erregistro Irekia", + "registration_closed": "Erregistroa itxita", + "enable_nsfw": "NSFW gaitu", + "body": "Gorputza", + "copy_suggested_title": "Kopiatu iradokitako izenburua: {{title}}", + "community": "Komunitatea", + "expand_here": "Hedatu hemen", + "subscribe_to_communities": "Harpidetu zaitez <1>komunitate batzuetara.", + "recent_comments": "Duela gutxiko Iruzkinak", + "select_a_community": "Aukeratu komunitate bat", + "no_results": "Ez dago emaitzarik.", + "setup": "Instalazioa", + "lemmy_instance_setup": "Lemmy Instantziaren Konfigurazioa", + "setup_admin": "Gunearen Administratzailea Konfiguratu", + "modified": "aldatuta", + "show_nsfw": "Erakutsi NSFW edukia" } From 4a43dcc373c1d355af24b32a9dbe8dbaa7f442fa Mon Sep 17 00:00:00 2001 From: Fabio Ferrari Date: Mon, 29 Jun 2020 02:07:02 +0000 Subject: [PATCH 09/45] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/pt_BR/ --- ui/translations/pt_BR.json | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/ui/translations/pt_BR.json b/ui/translations/pt_BR.json index c7cce2021..30f3b05ea 100644 --- a/ui/translations/pt_BR.json +++ b/ui/translations/pt_BR.json @@ -58,14 +58,14 @@ "remove_as_admin": "remover como administrador", "appoint_as_admin": "designar como administrador", "remove": "remover", - "removed": "removido", + "removed": "removido por moderador", "locked": "trancado", "stickied": "fixado", "reason": "Motivo", "mark_as_read": "marcar como lido", "mark_as_unread": "marcar como não lido", "delete": "apagar", - "deleted": "apagado", + "deleted": "apagado pelo criador", "delete_account": "Apagar conta", "delete_account_confirm": "Aviso: isso vai apagar seus dados de forma permanente. Escreva sua senha para confirmar.", "restore": "restaurar", @@ -171,7 +171,7 @@ "theme": "Tema", "sponsors": "Patrocinadores", "sponsors_of_lemmy": "Patrocinadores do Lemmy", - "sponsor_message": "Lemmy é um programa livre e de código aberto, o que significa que não haverá publicidade, monetização ou capital de risco, jamais. Suas doações apoiam de forma direta o desenvolvimento em tempo integral do projeto. Muitos agradecimentos às sequintes pessoas:", + "sponsor_message": "Lemmy é um programa livre e de código aberto, o que significa que não haverá publicidade, monetização ou capital de risco, jamais. Suas doações apoiam de forma direta o desenvolvimento em tempo integral do projeto. Muitos agradecimentos às seguintes pessoas:", "support_on_patreon": "Colabore no Patreon", "support_on_liberapay": "Colabore no Liberapay", "donate_to_lemmy": "Faça uma doação ao Lemmy", @@ -244,5 +244,17 @@ "number_of_upvotes_plural": "{{count}} votos positivos", "number_of_downvotes": "{{count}} voto negativo", "number_of_downvotes_plural": "{{count}} votos negativos", - "show_context": "Mostrar contexto" + "show_context": "Mostrar contexto", + "invalid_community_name": "Nome inválido.", + "click_to_delete_picture": "Clique para apagar imagem.", + "picture_deleted": "Imagem removida.", + "admin_settings": "Configurações de Admin", + "site_config": "Configuração do Site", + "banned_users": "Usuários Banidos", + "support_on_open_collective": "Suporte no OpenCollective", + "silver_sponsors": "Patrocinadores Prata são aqueles que doaram $40 ao Lemmy.", + "site_saved": "Site Salvo.", + "emoji_picker": "Selecionador de Emoji", + "select_a_community": "Selecione uma comunidade", + "invalid_username": "Nome de usuário inválido." } From effd08c98aab28d38a0f5e935d1332651a13f001 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Mon, 29 Jun 2020 09:38:50 -0400 Subject: [PATCH 10/45] Adding some sponsors --- ui/src/components/sponsors.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ui/src/components/sponsors.tsx b/ui/src/components/sponsors.tsx index 35ec76358..7e5eed642 100644 --- a/ui/src/components/sponsors.tsx +++ b/ui/src/components/sponsors.tsx @@ -10,6 +10,9 @@ interface SilverUser { } let general = [ + 'Andrew Plaza', + 'Jonathan Cremin', + 'Arthur Nieuwland', 'Ernest Wiśniewski', 'HN', 'Forrest Weghorst', From 997e373bf9c7a821ab20602fb9f16e309a36e2f1 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Mon, 29 Jun 2020 09:55:23 -0400 Subject: [PATCH 11/45] Adding ansible comment line. --- docs/src/administration_install_ansible.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/src/administration_install_ansible.md b/docs/src/administration_install_ansible.md index 77d901b36..4676f47d4 100644 --- a/docs/src/administration_install_ansible.md +++ b/docs/src/administration_install_ansible.md @@ -11,6 +11,9 @@ git clone https://github.com/LemmyNet/lemmy.git cd lemmy/ansible/ cp inventory.example inventory nano inventory # enter your server, domain, contact email +# If the command below fails, you may need to comment out this line +# In the ansible.cfg file: +# interpreter_python=/usr/bin/python3 ansible-playbook lemmy.yml --become ``` From 5c8e2b5bae93b0ec0d3a7e7e5e7727743e8db07c Mon Sep 17 00:00:00 2001 From: Sunur Efe Vural Date: Mon, 29 Jun 2020 14:21:03 +0000 Subject: [PATCH 12/45] Translated using Weblate (Turkish) Currently translated at 98.7% (246 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/tr/ --- ui/translations/tr.json | 261 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 260 insertions(+), 1 deletion(-) diff --git a/ui/translations/tr.json b/ui/translations/tr.json index 0967ef424..d00d90000 100644 --- a/ui/translations/tr.json +++ b/ui/translations/tr.json @@ -1 +1,260 @@ -{} +{ + "show_avatars": "Avatarları Göster", + "show_context": "Bağlamı göster", + "formatting_help": "formatlama desteği", + "sorting_help": "sıralama desteği", + "view_source": "kaynağı göster", + "link": "bağlantı", + "mod": "idareci", + "mods": "idareciler", + "settings": "Ayarlar", + "site_config": "Site Konfigürasyonu", + "remove_as_mod": "idareciliğini feshet", + "appoint_as_mod": "idareciliğe ata", + "modlog": "İdare geçmişi", + "admin": "baş idareci", + "admins": "baş idareciler", + "remove_as_admin": "baş idareciliğini feshet", + "appoint_as_admin": "baş idareciliğe ata", + "locked": "kilitlendi", + "stickied": "bağlandı", + "reason": "Sebep", + "mark_as_unread": "okunmamış olarak işaretle", + "delete": "sil", + "deleted": "yazarı tarafından silindi", + "delete_account": "Hesabı Sil", + "click_to_delete_picture": "Resmi silmek için tıklayın.", + "picture_deleted": "Resim silindi.", + "restore": "geri al", + "ban_from_site": "siteden yasakla", + "unban": "yasağı kaldır", + "ban": "yasakla", + "unban_from_site": "siteden olan yasağını kaldır", + "banned_users": "Yasaklanmış Kullanıcılar", + "save": "kaydet", + "unlock": "kilidi aç", + "lock": "kilitle", + "sticky": "bağla", + "unsticky": "çöz", + "moderates": "İdare Ettikleri", + "remove": "kaldır", + "removed": "idareci tarafından kaldırıldı", + "banned": "yasaklandı", + "unsave": "kaydı kaldır", + "create": "yarat", + "number_of_subscribers": "{{count}} Takipçi", + "number_of_subscribers_plural": "{{count}} Takipçi", + "number_of_points": "{{count}} Puan", + "number_of_points_plural": "{{count}} Puan", + "number_online": "{{count}} Kullanıcı Hatta", + "number_online_plural": "{{count}} Kullanıcı Hatta", + "name": "Ad", + "title": "Başlık", + "category": "Kategori", + "subscribers": "Takipçiler", + "both": "İkisi", + "subscribe": "Takip et", + "subscribed": "Takibe alındı", + "prev": "Önceki", + "next": "Sonraki", + "sort_type": "Sıralama metodu", + "hot": "Flaş", + "new": "Yeni", + "old": "Eski", + "top_day": "Günün en iyileri", + "week": "Hafta", + "month": "Ay", + "year": "Yıl", + "all": "Hepsi", + "top": "En iyiler", + "api": "API", + "docs": "Kılavuzlar", + "inbox": "Gelen kutusu", + "mark_all_as_read": "hepsini okunmuş olarak işaretle", + "type": "Tür", + "unread": "Okunmamış", + "replies": "Cevaplar", + "mentions": "Bahisler", + "message_sent": "Mesaj yollandı", + "reply_sent": "Cevap yollandı", + "search": "Ara", + "overview": "Genel bakış", + "view": "Bakış", + "logout": "Çıkış", + "login_sign_up": "Giriş / Kayıt", + "login": "Giriş yap", + "sign_up": "Kaydol", + "creator": "müellif", + "email_or_username": "E-mail ya da Kullanıcı Adı", + "username": "Kullanıcı Adı", + "messages": "Mesajlar", + "password": "Şifre", + "verify_password": "Şifreyi doğrulayın", + "old_password": "Eski şifre", + "reset_password_mail_sent": "Şifrenin değiştirilebilmesi için e-mail yollandı.", + "password_change": "Şifre değişikliği", + "new_password": "Yeni şifre", + "email": "E-mail", + "matrix_user_id": "Matrix Kullanıcısı", + "optional": "İhtiyari", + "expires": "Tarihi geçecek", + "language": "Dil", + "browser_default": "Tarayıcının ayarına göre", + "upvote": "Artı oy ver", + "downvotes_disabled": "Eksi puan verme özelliği kaldırıldı", + "enable_downvotes": "Eksi puan verme özelliğini etkinleştir", + "number_of_upvotes": "{{count}} Artı oy", + "number_of_upvotes_plural": "{{count}} Artı oy", + "downvote": "Eksi oy", + "number_of_downvotes": "{{count}} Eksi oy", + "number_of_downvotes_plural": "{{count}} Eksi oy", + "open_registration": "Serbest kayıt", + "registration_closed": "Kayıt kapalı", + "enable_nsfw": "Müstehcen içeriği göster", + "url": "URL", + "body": "Metin", + "copy_suggested_title": "tavsiye edilen başlığı kopyala: {{title}}", + "community": "Topluluk", + "expand_here": "Burayı genişletip göster", + "subscribe_to_communities": "Bazı toplulukları takibe alın.", + "chat": "Sohbet", + "recent_comments": "Son yorumlar", + "no_results": "Sonuç yok.", + "setup": "Kurulum", + "setup_admin": "Siteye baş idareci ata", + "your_site": "sizin siteniz", + "modified": "değiştirilmiş", + "nsfw": "Müstehcen", + "show_nsfw": "Müstehcen içerikleri göster", + "theme": "Tema", + "sponsors": "Sponsorlar", + "sponsors_of_lemmy": "Lemmy'nin sponsorları", + "support_on_patreon": "Patreon üzerinden destekleyin", + "support_on_liberapay": "Liberapay üzerinden destekleyin", + "support_on_open_collective": "OpenCollective üzerinden destekleyin", + "donate_to_lemmy": "Lemmy'ye bağış yap", + "donate": "Bağış yap", + "silver_sponsors": "Gümüş Sponsorlar Lemmy'ye 40$ bağışta bulunanlardır.", + "crypto": "Kripto para", + "bitcoin": "Bitcoin", + "ethereum": "Ethereum", + "monero": "Monero", + "code": "Kaynak kodu", + "joined": "Katılanlar", + "by": "tarafından", + "to": "tarafına", + "from": "tarafından", + "transfer_site": "siteyi transfer et", + "are_you_sure": "Emin misiniz?", + "yes": "evet", + "no": "hayır", + "powered_by": "Altyapısı", + "not_logged_in": "Hesaba giriş yapılmamış.", + "logged_in": "Hesaba giriş yapıldı.", + "site_saved": "Site kaydedildi.", + "community_ban": "Bu topluluğa yazmanız yasaklandı.", + "site_ban": "Bu siteden yasaklandınız", + "couldnt_create_comment": "Yorum yapılamadı.", + "couldnt_like_comment": "Yorum beğenilemedi.", + "couldnt_update_comment": "Yorum güncellenemedi.", + "couldnt_save_comment": "Yorum kaydedilemedi.", + "couldnt_get_comments": "Yorumlar yüklenemedi.", + "no_comment_edit_allowed": "Yorumu düzenleme izniniz yok.", + "no_post_edit_allowed": "Paylaşımı düzenleme izniniz yok.", + "no_community_edit_allowed": "Topluluğu düzenleme yetkiniz yok.", + "couldnt_find_community": "Topluluk bulunamadı.", + "couldnt_update_community": "Topluluk bilgisi güncellenemedi.", + "community_moderator_already_exists": "Bu kullanıcı zaten bu topluluğun bir idarecisi.", + "community_already_exists": "Böyle bir topluluk zaten var.", + "community_follower_already_exists": "Topluluğun böyle bir takipçisi zaten var.", + "community_user_already_banned": "Bu kullanıcı zaten bu toplulukta yasaklı.", + "couldnt_create_post": "Paylaşım yapılamadı.", + "post_title_too_long": "Paylaşım başlığı çok uzun.", + "couldnt_like_post": "Paylaşım beğenilemedi.", + "couldnt_find_post": "Paylaşım bulunamadı.", + "couldnt_update_post": "Paylaşım güncellenemedi", + "invalid_community_name": "Hatalı ad.", + "couldnt_save_post": "Paylaşım kaydedilemedi.", + "no_slurs": "Hakaret sözleri yasaktır.", + "couldnt_update_site": "Site güncellenemedi.", + "couldnt_find_that_username_or_email": "Böyle bir e-mail ya da kullanıcı adı bulunamadı.", + "password_incorrect": "Şifre yanlış.", + "passwords_dont_match": "Şifreler eşleşmiyor.", + "invalid_username": "Hatalı kullanıcı adı.", + "admin_already_created": "Özür, zaten bir baş idareci var.", + "email_already_exists": "Böyle bir e-mail adresi zaten var.", + "user_already_exists": "Böyle bir kullanıcı zaten var.", + "couldnt_update_user": "Kullanıcı bilgisi güncellenemedi.", + "system_err_login": "Sistem hatası. Hesaptan çıkıp tekrar girmeyi deneyin.", + "couldnt_create_private_message": "Şahsa özel mesaj yaratılamadı.", + "no_private_message_edit_allowed": "Şahsa özel mesajı düzenlemek mümkün değil.", + "couldnt_update_private_message": "Şahsa özel mesaj güncellenemedi.", + "time": "Zaman", + "action": "Hareket", + "emoji_picker": "Emoji Seçici", + "block_leaving": "Çıkmak istediğinizden emin misiniz?", + "archive_link": "arşiv bağlantısı", + "admin_settings": "Baş İdareci Ayarları", + "mark_as_read": "okunmuş olarak işaretle", + "delete_account_confirm": "Uyarı: Devam etmek bütün verilerinizi kalıcı olarak silecektir. Onaylamak için şifrenizi girin.", + "number_of_comments": "{{count}} Yorum", + "number_of_comments_plural": "{{count}} Yorum", + "message": "Mesaj", + "post": "paylaşım", + "number_of_posts": "{{count}} Paylaşım", + "number_of_posts_plural": "{{count}} Paylaşım", + "posts": "Paylaşımlar", + "related_posts": "Bu paylaşımlar alakalı olabilir", + "cross_posts": "Bu bağlantı ayrıca şurada paylaşıldı:", + "comments": "Yorumlar", + "communities": "Topluluklar", + "users": "Kullanıcılar", + "create_a_community": "Topluluk yarat", + "select_a_community": "Topluluk seç", + "create_community": "Topluluk Yarat", + "remove_community": "Topluluğu Sil", + "list_of_communities": "Toplulukların listesi", + "number_of_communities": "{{count}} Topluluk", + "number_of_communities_plural": "{{count}} Topluluk", + "community_reqs": "küçük harfli, alt tireli ve boşluksuz.", + "create_private_message": "Şahsa Özel Mesaj Yaz", + "send_secure_message": "Güvenli Mesaj Yolla", + "send_message": "Mesaj Yolla", + "edit": "düzenle", + "reply": "cevapla", + "more": "dahası", + "cancel": "İptal", + "preview": "Ön görüntüleme", + "upload_image": "resim yükle", + "avatar": "Avatar", + "number_of_users": "{{count}} Kullanıcı", + "number_of_users_plural": "{{count}} Kullanıcı", + "remove_post": "Paylaşımı Kaldır", + "no_posts": "Paylaşım Yok.", + "create_a_post": "Paylaşım yap", + "create_post": "Paylaşım Yap", + "cross_post": "Çapraz paylaşım", + "cross_posted_to": "Şurada çapraz paylaşıldı:- ", + "remove_comment": "Yorumu Kaldır", + "subscribed_to_communities": "<1>Toplulukları<1> takip ediyor", + "trending_communities": "Trendleşmekte olan <1>topluluklar", + "upload_avatar": "Avatar Yükle", + "sidebar": "Yan sütun", + "saved": "Kaydedildi", + "unsubscribe": "Takibi bırak", + "inbox_for": "{{user}}nin gelen kutusu", + "notifications_error": "İnternet tarayıcınızın masaüstü bildirim özelliği yok. Firefox ya da Chrome'u deneyin.", + "send_notifications_to_email": "E-maile bildirim yolla", + "unread_messages": "Okunmamış Mesajlar", + "forgot_password": "Şifreyi unuttum", + "not_an_admin": "Baş idareci değil.", + "site_already_exists": "Bu site zaten var.", + "no_email_setup": "E-mail desteği bu sunucuda doğru kurulmamış.", + "private_message_disclaimer": "Uyarı: Lemmy'de şahsa özel mesajlar güvenli değildir. Güvenli mesajlaşma için Riot.im adresinde hesap açabilirsiniz.", + "lemmy_instance_setup": "Lemmy ülgüsünün kurulumu", + "sponsor_message": "Lemmy, reklam içermeyen ve ticari amaç gütmeyen serbest ve açık kaynaklı bir yazılımdır. Bağışlarınız projenin tam zamanlı geliştirilmesine direkt katkıda bulunmaktadır. Aşağıdaki kişilere içten teşekkürler:", + "general_sponsors": "Genel sponsorlar Lemmy'ye 10 ila 30$ arasında bağışta bulunanlardır.", + "transfer_community": "topluluğu transfer et", + "landing": "Lemmy, <2>Fediverse ile iç içe olacak şekilde dizayn edilmiş bir <1>bağlantı yığıştırıcısı yani Reddit alternatifidir.", + "couldnt_get_posts": "Paylaşımlar yüklenemedi" +} From f12a637cdbd616e4983b3ce0ac73af29f42207cf Mon Sep 17 00:00:00 2001 From: Sunur Efe Vural Date: Mon, 29 Jun 2020 17:20:50 +0000 Subject: [PATCH 13/45] Translated using Weblate (Turkish) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/tr/ --- ui/translations/tr.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ui/translations/tr.json b/ui/translations/tr.json index d00d90000..c5a230948 100644 --- a/ui/translations/tr.json +++ b/ui/translations/tr.json @@ -116,7 +116,7 @@ "copy_suggested_title": "tavsiye edilen başlığı kopyala: {{title}}", "community": "Topluluk", "expand_here": "Burayı genişletip göster", - "subscribe_to_communities": "Bazı toplulukları takibe alın.", + "subscribe_to_communities": "Bazı <1>toplulukları<1> takibe alın.", "chat": "Sohbet", "recent_comments": "Son yorumlar", "no_results": "Sonuç yok.", @@ -242,7 +242,7 @@ "sidebar": "Yan sütun", "saved": "Kaydedildi", "unsubscribe": "Takibi bırak", - "inbox_for": "{{user}}nin gelen kutusu", + "inbox_for": "<1>{{user}}nin gelen kutusu", "notifications_error": "İnternet tarayıcınızın masaüstü bildirim özelliği yok. Firefox ya da Chrome'u deneyin.", "send_notifications_to_email": "E-maile bildirim yolla", "unread_messages": "Okunmamış Mesajlar", @@ -250,9 +250,9 @@ "not_an_admin": "Baş idareci değil.", "site_already_exists": "Bu site zaten var.", "no_email_setup": "E-mail desteği bu sunucuda doğru kurulmamış.", - "private_message_disclaimer": "Uyarı: Lemmy'de şahsa özel mesajlar güvenli değildir. Güvenli mesajlaşma için Riot.im adresinde hesap açabilirsiniz.", + "private_message_disclaimer": "Uyarı: Lemmy'de şahsa özel mesajlar güvenli değildir. Güvenli mesajlaşma için <1>Riot.im adresinde hesap açabilirsiniz.", "lemmy_instance_setup": "Lemmy ülgüsünün kurulumu", - "sponsor_message": "Lemmy, reklam içermeyen ve ticari amaç gütmeyen serbest ve açık kaynaklı bir yazılımdır. Bağışlarınız projenin tam zamanlı geliştirilmesine direkt katkıda bulunmaktadır. Aşağıdaki kişilere içten teşekkürler:", + "sponsor_message": "Lemmy, reklam içermeyen ve ticari amaç gütmeyen serbest ve <1>açık kaynaklı bir yazılımdır. Bağışlarınız projenin tam zamanlı geliştirilmesine direkt katkıda bulunmaktadır. Aşağıdaki kişilere içten teşekkürler:", "general_sponsors": "Genel sponsorlar Lemmy'ye 10 ila 30$ arasında bağışta bulunanlardır.", "transfer_community": "topluluğu transfer et", "landing": "Lemmy, <2>Fediverse ile iç içe olacak şekilde dizayn edilmiş bir <1>bağlantı yığıştırıcısı yani Reddit alternatifidir.", From 15af11da98389a7112cea5fd42c7e1e1a0907d82 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Mon, 29 Jun 2020 16:55:14 -0400 Subject: [PATCH 14/45] Changing front end hot reload testing to 8536 --- ui/src/env.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/src/env.ts b/ui/src/env.ts index a57b93498..5003986b5 100644 --- a/ui/src/env.ts +++ b/ui/src/env.ts @@ -1,6 +1,6 @@ const host = `${window.location.hostname}`; const port = `${ - window.location.port == '4444' ? '8540' : window.location.port + window.location.port == '4444' ? '8536' : window.location.port }`; const endpoint = `${host}:${port}`; From a28788488f9f40781d46f0de58bea8884a0653c5 Mon Sep 17 00:00:00 2001 From: Sergio Varela Date: Mon, 29 Jun 2020 19:18:10 +0000 Subject: [PATCH 15/45] Translated using Weblate (Basque) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 87 +++++++++++++++++++++++++++++++++++------ 1 file changed, 75 insertions(+), 12 deletions(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index 922234815..8da98f7c7 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -45,17 +45,17 @@ "language": "Hizkuntza", "url": "URL", "chat": "Txat", - "your_site": "zure lekua", + "your_site": "zure gunea", "nsfw": "NSFW", - "block_leaving": "Ziur ahal zaude atera nahi duzula?", + "block_leaving": "Ziur zaude atera nahi duzula?", "bitcoin": "Bitcoin", "ethereum": "Ethereum", "monero": "Monero", "yes": "bai", "no": "ez", - "couldnt_find_post": "Ezinezkoa argitalpena aurkitzea.", - "couldnt_save_post": "Ezinezkoa argitalpena gordetzea.", - "site_already_exists": "Lekua jada existitzen da.", + "couldnt_find_post": "Ezin izan da post-a aurkitu.", + "couldnt_save_post": "Ezin izan da argitalpena gorde.", + "site_already_exists": "Gunea jada existitzen da.", "action": "Ekintza", "time": "Denbora", "number_of_points": "Puntu {{count}}", @@ -67,7 +67,7 @@ "invalid_community_name": "Izen baliogabea.", "click_to_delete_picture": "Egin klik irudia ezabatzeko.", "picture_deleted": "Irudia ezabatuta.", - "send_secure_message": "Bidali mezu seguru bat", + "send_secure_message": "Bidali Mezu Seguru Bat", "preview": "Aurretiko bista", "avatar": "Profilaren argazkia", "upload_avatar": "Profileko argazki bat igo", @@ -86,7 +86,7 @@ "moderates": "Moderatuak", "settings": "Doikuntzak", "admin_settings": "Administrazio-doikuntzak", - "site_config": "Gunearen konfigurazioa", + "site_config": "Gunearen Konfigurazioa", "remove_as_mod": "ezabatu moderatzaile gisa", "modlog": "Moderatzailearen erregistroa", "appoint_as_mod": "moderatzaile bezala izendatu", @@ -108,11 +108,11 @@ "comments": "Iruzkinak", "number_of_comments": "{{count}} Iruzkin", "number_of_comments_plural": "{{count}} Iruzkinak", - "remove_comment": "Ezabatu iruzkina", + "remove_comment": "Ezabatu Iruzkina", "communities": "Komunitateak", "create_a_community": "Komunitate bat sortu", - "cross_post": "Argitalpen gurutzatua", - "cross_posted_to": "Argitalpen gurutzatua: ", + "cross_post": "Argitalpen-gurutzatua", + "cross_posted_to": "Argitalpen-gurutzatua: ", "next": "Hurrengoa", "remove_community": "Komunitatea ezabatu", "subscribed_to_communities": "<1>komunitateetan harpidetuta", @@ -121,7 +121,7 @@ "community_reqs": "Letra xehez, azpimarratuta eta espaziorik gabe.", "create_private_message": "Mezu pribatu bat sortu", "cancel": "Ezeztatu", - "stickied": "itsatsita", + "stickied": "finkatuta", "reason": "Arrazoia", "mark_as_read": "markatu irakurrita bezala", "deleted": "sortzaileak ezabatua", @@ -193,5 +193,68 @@ "lemmy_instance_setup": "Lemmy Instantziaren Konfigurazioa", "setup_admin": "Gunearen Administratzailea Konfiguratu", "modified": "aldatuta", - "show_nsfw": "Erakutsi NSFW edukia" + "show_nsfw": "Erakutsi NSFW edukia", + "expires": "Iraungitzen", + "theme": "Gaia", + "sponsors": "Babesleak", + "sponsors_of_lemmy": "Lemmyren Babesleak", + "sponsor_message": "Lemmy software librea da, <1>kode-irekia<1/>, publizitaterik, monetizaziorik edo arrisku kapitalik gabea, inoiz ez. Zuen dohainek zuzenean laguntzen dute proiektuaren lanaldi osoko garapena. Eskerrik asko honako pertsona hauei:", + "support_on_patreon": "Lagundu Patreonen", + "support_on_liberapay": "Lagundu Liberapay-en", + "support_on_open_collective": "Lagundu OpenCollective webgunean", + "donate_to_lemmy": "Dohaintza bat eman Lemmyri", + "donate": "Dohaintza bat egin", + "general_sponsors": "Lemmyri 10 eta 39 dolar artean emateko konpromisoa hartu zutenak dira Babesle Nagusiak.", + "silver_sponsors": "Zilarrezko Babesleak dira Lemmyri 40 dolar eman zizkiotenak.", + "crypto": "Kripto", + "code": "Kodea", + "joined": "Batuta", + "by": "egilea", + "to": "norentzako", + "from": "hemendik", + "transfer_community": "transferentzia-komunitatea", + "transfer_site": "transferentzia-gunea", + "are_you_sure": "ziur zaude?", + "powered_by": "Egilea", + "landing": "Lemmy <1>lotura-agregatzailea /reddit alternatiboa da, eta <2>fedibertsoan lan egiteko erabiltzen da. <3>Autohospedagarria da, iruzkin-hari eguneratuak ditu, eta txikia da (<4>~80kB). ActivityPub sareko federazioa bide orrian dago. <5><6>Beta bertsio goiztiarra da hau, eta ezaugarri asko hautsita edo desagertuta daude gaur egun. <7>Ezaugarri berriak iradokitzea edo akatsak jakinaraztea <8>hemen.<9> Rust, <11>Actix, <12>Inferno, <13>Typescriptekin egina.", + "logged_in": "Konektatuta zaude.", + "not_logged_in": "Ez zaude konektatuta.", + "site_saved": "Gunea Gordeta.", + "community_ban": "Komunitate honetan sartzea debekatu dizute.", + "site_ban": "Gune honetan sartzea debekatu dizute", + "couldnt_create_comment": "Ezin izan da iruzkinik egin.", + "couldnt_like_comment": "Ezin izan zaio iruzkin bati like bat eman.", + "couldnt_update_comment": "Ezin izan zen iruzkina eguneratu.", + "couldnt_save_comment": "Ezin izan zen iruzkina gorde.", + "couldnt_get_comments": "Ezin izan ziren iruzkinak lortu.", + "no_comment_edit_allowed": "Ezin da iruzkina editatu.", + "no_post_edit_allowed": "Ezin da post-a editatu.", + "no_community_edit_allowed": "Ezin da komunitatea editatu.", + "couldnt_find_community": "Ezin izan da komunitatea aurkitu.", + "couldnt_update_community": "Ezin izan zen komunitatea eguneratu.", + "community_already_exists": "Komunitatea existitzen da jada.", + "community_moderator_already_exists": "Komunitatearen moderatzailea existitzen da dagoeneko.", + "community_follower_already_exists": "Jarraitzaileen komunitatea existitzen da dagoeneko.", + "community_user_already_banned": "Komunitatearen erabiltzaile hau debekatuta dago jada.", + "couldnt_create_post": "Ezin izan da post bat sortu.", + "post_title_too_long": "Luzeegia da argitalpenaren izenburua.", + "couldnt_like_post": "Ezin izan zaio like bat eman postari.", + "couldnt_get_posts": "Ezin izan ziren postak lortu", + "couldnt_update_post": "Ezin izan zen post-a eguneratu", + "no_slurs": "Irainik gabe.", + "not_an_admin": "Ez da administratzailea.", + "couldnt_update_site": "Ezin izan zen gunea eguneratu.", + "couldnt_find_that_username_or_email": "Ezin izan da aurkitu erabiltzaile-izen edo helbide elektroniko hori.", + "password_incorrect": "Pasahitz okerra.", + "passwords_dont_match": "Pasahitzak ez datoz bat.", + "admin_already_created": "Barkatu, badago administratzaile bat dagoeneko.", + "user_already_exists": "Erabiltzailea existitzen da dagoeneko.", + "email_already_exists": "Posta elektronikoa existitzen da dagoeneko.", + "couldnt_update_user": "Ezin izan zen erabiltzailea eguneratu.", + "system_err_login": "Sistemaren errorea. Saiatu saioa ixten eta berriro sartzen.", + "couldnt_create_private_message": "Ezin izan zen mezu pribatu bat sortu.", + "no_private_message_edit_allowed": "Ezin da mezu pribaturik editatu.", + "couldnt_update_private_message": "Ezin izan ziren mezu pribatuak eguneratu.", + "emoji_picker": "Emoji Hautagailua", + "invalid_username": "Erabiltzaile-izen baliogabea." } From f5cd97e07d1bbabadc973618f1a91cc9dcae0b9a Mon Sep 17 00:00:00 2001 From: bertol Date: Mon, 29 Jun 2020 21:20:53 +0000 Subject: [PATCH 16/45] Translated using Weblate (Basque) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index 8da98f7c7..aacb9875a 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -14,7 +14,7 @@ "upload_image": "Irudia igo", "link": "esteka", "remove": "ezabatu", - "mark_as_unread": "markatu irakurri gabeko mezu gisa", + "mark_as_unread": "irakurri gabe", "delete": "ezabatu", "delete_account": "Ezabatu Kontua", "ban": "kaleratu", @@ -84,7 +84,7 @@ "mod": "Moderatzailea", "mods": "Moderatzaileak", "moderates": "Moderatuak", - "settings": "Doikuntzak", + "settings": "Konfigurazioa", "admin_settings": "Administrazio-doikuntzak", "site_config": "Gunearen Konfigurazioa", "remove_as_mod": "ezabatu moderatzaile gisa", @@ -128,7 +128,7 @@ "delete_account_confirm": "Ohartarazpena: horrek etengabe ezabatuko ditu zure datu guztiak. Idatzi zure pasahitza baieztatzeko.", "restore": "leheneratu", "unban_from_site": "gunetik debekua kentzea", - "banned": "debekatuta", + "banned": "kaleratu", "banned_users": "Erabiltzaile Debekatuak", "unsave": "ez gorde", "email_or_username": "Posta elektronikoa edo Erabiltzaile-izena", From a106f1bcf93815b59ac0c2b14d68212438137089 Mon Sep 17 00:00:00 2001 From: Sergio Varela Date: Mon, 29 Jun 2020 21:23:59 +0000 Subject: [PATCH 17/45] Translated using Weblate (Basque) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index aacb9875a..b07a95b8c 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -128,7 +128,7 @@ "delete_account_confirm": "Ohartarazpena: horrek etengabe ezabatuko ditu zure datu guztiak. Idatzi zure pasahitza baieztatzeko.", "restore": "leheneratu", "unban_from_site": "gunetik debekua kentzea", - "banned": "kaleratu", + "banned": "kaleratuta", "banned_users": "Erabiltzaile Debekatuak", "unsave": "ez gorde", "email_or_username": "Posta elektronikoa edo Erabiltzaile-izena", From 81142d3ffe562ea86c305198634b4b839fa17340 Mon Sep 17 00:00:00 2001 From: bertol Date: Mon, 29 Jun 2020 21:24:08 +0000 Subject: [PATCH 18/45] Translated using Weblate (Basque) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index b07a95b8c..79f042ce0 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -129,20 +129,20 @@ "restore": "leheneratu", "unban_from_site": "gunetik debekua kentzea", "banned": "kaleratuta", - "banned_users": "Erabiltzaile Debekatuak", + "banned_users": "Kaleratutako Erabiltzaileak", "unsave": "ez gorde", - "email_or_username": "Posta elektronikoa edo Erabiltzaile-izena", + "email_or_username": "e-Posta edo Erabiltzailea", "category": "Kategoria", - "subscribers": "Harpidedunak", + "subscribers": "Jarraitzaileak", "unsubscribe": "Ez-harpidetu", "subscribe": "Harpidetu", "sidebar": "Alboko barra", "sort_type": "Sailkapen mota", - "hot": "Beroa", - "new": "Berria", - "old": "Zaharra", - "top_day": "Egunik garrantzitsuena", - "top": "Garrantzitsuena", + "hot": "Pil-pilean", + "new": "Berri", + "old": "Zahar", + "top_day": "Eguneko hoberenak", + "top": "Hobeto", "docs": "Dokumentazioa", "inbox": "Mezuen sarrera", "inbox_for": "Sarrera-erretilua <1>{{user}} -rentzat", From 97a42011bbf08f236b70ee21f22198b001d1aa93 Mon Sep 17 00:00:00 2001 From: Sergio Varela Date: Mon, 29 Jun 2020 21:25:48 +0000 Subject: [PATCH 19/45] Translated using Weblate (Basque) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index 79f042ce0..c75bd3f29 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -142,7 +142,7 @@ "new": "Berri", "old": "Zahar", "top_day": "Eguneko hoberenak", - "top": "Hobeto", + "top": "Hoberena", "docs": "Dokumentazioa", "inbox": "Mezuen sarrera", "inbox_for": "Sarrera-erretilua <1>{{user}} -rentzat", From 6fa358c093f66693c92e37619a90557e5b067a03 Mon Sep 17 00:00:00 2001 From: bertol Date: Mon, 29 Jun 2020 21:26:20 +0000 Subject: [PATCH 20/45] Translated using Weblate (Basque) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index c75bd3f29..bc740b67b 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -151,16 +151,16 @@ "number_of_communities": "{{count}} Komunitate", "number_of_communities_plural": "{{count}} Komunitateak", "mentions": "Aipamenak", - "reply_sent": "Erantzuna bidalita", - "message_sent": "Bidali erantzuna", - "overview": "Ikuspegi orokorra", + "reply_sent": "Bidalitako erantzuna", + "message_sent": "Bidalitako mezua", + "overview": "Laburpen", "view": "Ikusi", - "logout": "Saioa itxi", - "login_sign_up": "Sartu / Erregistratu", + "logout": "Irten", + "login_sign_up": "Sartu / Kontua Sortu", "login": "Sartu", "notifications_error": "Mahaigaineko jakinarazpenak ez daude eskuragarri zure web-nabigatzailean. Probatu Firefox edo Chromerekin.", "unread_messages": "Irakurri gabeko mezuak", - "verify_password": "Egiaztatu Pasahitza", + "verify_password": "Pasahitza balioztatu", "old_password": "Pasahitz Zaharra", "forgot_password": "pasahitza ahaztu", "reset_password_mail_sent": "Mezu elektroniko bat bidali pasahitza berrezartzeko.", From 18a38b0b1192349547a59c559fb796b991049cfd Mon Sep 17 00:00:00 2001 From: Sergio Varela Date: Mon, 29 Jun 2020 21:27:26 +0000 Subject: [PATCH 21/45] Translated using Weblate (Basque) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index bc740b67b..2b9428c3a 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -160,7 +160,7 @@ "login": "Sartu", "notifications_error": "Mahaigaineko jakinarazpenak ez daude eskuragarri zure web-nabigatzailean. Probatu Firefox edo Chromerekin.", "unread_messages": "Irakurri gabeko mezuak", - "verify_password": "Pasahitza balioztatu", + "verify_password": "Pasahitza Balioztatu", "old_password": "Pasahitz Zaharra", "forgot_password": "pasahitza ahaztu", "reset_password_mail_sent": "Mezu elektroniko bat bidali pasahitza berrezartzeko.", From e8e5d409f9f1371d23deff626f1ca717009e4264 Mon Sep 17 00:00:00 2001 From: bertol Date: Mon, 29 Jun 2020 21:27:39 +0000 Subject: [PATCH 22/45] Translated using Weblate (Basque) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index 2b9428c3a..22d9e7cfd 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -161,8 +161,8 @@ "notifications_error": "Mahaigaineko jakinarazpenak ez daude eskuragarri zure web-nabigatzailean. Probatu Firefox edo Chromerekin.", "unread_messages": "Irakurri gabeko mezuak", "verify_password": "Pasahitza Balioztatu", - "old_password": "Pasahitz Zaharra", - "forgot_password": "pasahitza ahaztu", + "old_password": "Aurreko Pasahitza", + "forgot_password": "pasahitza ahaztu dut", "reset_password_mail_sent": "Mezu elektroniko bat bidali pasahitza berrezartzeko.", "no_email_setup": "Zerbitzari honek ez du posta elektronikoa behar bezala konfiguratu.", "matrix_user_id": "Matrix Erabiltzailea", @@ -188,7 +188,7 @@ "subscribe_to_communities": "Harpidetu zaitez <1>komunitate batzuetara.", "recent_comments": "Duela gutxiko Iruzkinak", "select_a_community": "Aukeratu komunitate bat", - "no_results": "Ez dago emaitzarik.", + "no_results": "Emaitzik gabe.", "setup": "Instalazioa", "lemmy_instance_setup": "Lemmy Instantziaren Konfigurazioa", "setup_admin": "Gunearen Administratzailea Konfiguratu", @@ -199,9 +199,9 @@ "sponsors": "Babesleak", "sponsors_of_lemmy": "Lemmyren Babesleak", "sponsor_message": "Lemmy software librea da, <1>kode-irekia<1/>, publizitaterik, monetizaziorik edo arrisku kapitalik gabea, inoiz ez. Zuen dohainek zuzenean laguntzen dute proiektuaren lanaldi osoko garapena. Eskerrik asko honako pertsona hauei:", - "support_on_patreon": "Lagundu Patreonen", - "support_on_liberapay": "Lagundu Liberapay-en", - "support_on_open_collective": "Lagundu OpenCollective webgunean", + "support_on_patreon": "Patreon-en lagundu", + "support_on_liberapay": "Liberpay-en lagundu", + "support_on_open_collective": "OpenCollective-n lagundu", "donate_to_lemmy": "Dohaintza bat eman Lemmyri", "donate": "Dohaintza bat egin", "general_sponsors": "Lemmyri 10 eta 39 dolar artean emateko konpromisoa hartu zutenak dira Babesle Nagusiak.", @@ -214,7 +214,7 @@ "from": "hemendik", "transfer_community": "transferentzia-komunitatea", "transfer_site": "transferentzia-gunea", - "are_you_sure": "ziur zaude?", + "are_you_sure": "Ziur ahal zaude?", "powered_by": "Egilea", "landing": "Lemmy <1>lotura-agregatzailea /reddit alternatiboa da, eta <2>fedibertsoan lan egiteko erabiltzen da. <3>Autohospedagarria da, iruzkin-hari eguneratuak ditu, eta txikia da (<4>~80kB). ActivityPub sareko federazioa bide orrian dago. <5><6>Beta bertsio goiztiarra da hau, eta ezaugarri asko hautsita edo desagertuta daude gaur egun. <7>Ezaugarri berriak iradokitzea edo akatsak jakinaraztea <8>hemen.<9> Rust, <11>Actix, <12>Inferno, <13>Typescriptekin egina.", "logged_in": "Konektatuta zaude.", @@ -236,20 +236,20 @@ "community_moderator_already_exists": "Komunitatearen moderatzailea existitzen da dagoeneko.", "community_follower_already_exists": "Jarraitzaileen komunitatea existitzen da dagoeneko.", "community_user_already_banned": "Komunitatearen erabiltzaile hau debekatuta dago jada.", - "couldnt_create_post": "Ezin izan da post bat sortu.", - "post_title_too_long": "Luzeegia da argitalpenaren izenburua.", + "couldnt_create_post": "Argitalpena ezin izan da sortu.", + "post_title_too_long": "Argitalpenaren izenburua luzeegia da.", "couldnt_like_post": "Ezin izan zaio like bat eman postari.", "couldnt_get_posts": "Ezin izan ziren postak lortu", "couldnt_update_post": "Ezin izan zen post-a eguneratu", "no_slurs": "Irainik gabe.", "not_an_admin": "Ez da administratzailea.", - "couldnt_update_site": "Ezin izan zen gunea eguneratu.", + "couldnt_update_site": "Ezinezkoa lekua berritzea.", "couldnt_find_that_username_or_email": "Ezin izan da aurkitu erabiltzaile-izen edo helbide elektroniko hori.", - "password_incorrect": "Pasahitz okerra.", - "passwords_dont_match": "Pasahitzak ez datoz bat.", + "password_incorrect": "Pasahitz desegokia.", + "passwords_dont_match": "Pasahitzak ez dira berdinak.", "admin_already_created": "Barkatu, badago administratzaile bat dagoeneko.", "user_already_exists": "Erabiltzailea existitzen da dagoeneko.", - "email_already_exists": "Posta elektronikoa existitzen da dagoeneko.", + "email_already_exists": "Posta helbide hau beste norbaitek erabiltzen du", "couldnt_update_user": "Ezin izan zen erabiltzailea eguneratu.", "system_err_login": "Sistemaren errorea. Saiatu saioa ixten eta berriro sartzen.", "couldnt_create_private_message": "Ezin izan zen mezu pribatu bat sortu.", From f7dfe6abb892d735efe41a688f309ce9a4bc86b6 Mon Sep 17 00:00:00 2001 From: Sergio Varela Date: Mon, 29 Jun 2020 21:30:52 +0000 Subject: [PATCH 23/45] Translated using Weblate (Basque) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index 22d9e7cfd..5a57a5fdd 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -111,7 +111,7 @@ "remove_comment": "Ezabatu Iruzkina", "communities": "Komunitateak", "create_a_community": "Komunitate bat sortu", - "cross_post": "Argitalpen-gurutzatua", + "cross_post": "Argitalpen gurutzatua", "cross_posted_to": "Argitalpen-gurutzatua: ", "next": "Hurrengoa", "remove_community": "Komunitatea ezabatu", @@ -249,7 +249,7 @@ "passwords_dont_match": "Pasahitzak ez dira berdinak.", "admin_already_created": "Barkatu, badago administratzaile bat dagoeneko.", "user_already_exists": "Erabiltzailea existitzen da dagoeneko.", - "email_already_exists": "Posta helbide hau beste norbaitek erabiltzen du", + "email_already_exists": "Posta helbide hau beste norbaitek erabiltzen du.", "couldnt_update_user": "Ezin izan zen erabiltzailea eguneratu.", "system_err_login": "Sistemaren errorea. Saiatu saioa ixten eta berriro sartzen.", "couldnt_create_private_message": "Ezin izan zen mezu pribatu bat sortu.", From 6ece596135b8efc928613aabc725165880bdf7fe Mon Sep 17 00:00:00 2001 From: bertol Date: Mon, 29 Jun 2020 21:31:03 +0000 Subject: [PATCH 24/45] Translated using Weblate (Basque) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index 5a57a5fdd..f376ec327 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -67,7 +67,7 @@ "invalid_community_name": "Izen baliogabea.", "click_to_delete_picture": "Egin klik irudia ezabatzeko.", "picture_deleted": "Irudia ezabatuta.", - "send_secure_message": "Bidali Mezu Seguru Bat", + "send_secure_message": "Mezu Segurua Bidali", "preview": "Aurretiko bista", "avatar": "Profilaren argazkia", "upload_avatar": "Profileko argazki bat igo", @@ -75,11 +75,11 @@ "show_context": "Erakutsi testuingurua", "formatting_help": "formatuaren laguntza", "sorting_help": "sailkatzeko laguntza", - "view_source": "ikusi iturria", + "view_source": "Iturria ikusi", "unlock": "desblokeatu", "lock": "blokeatu", - "sticky": "itsasgarria", - "unsticky": "ez itsaskorra", + "sticky": "finkatuta", + "unsticky": "Finkatu gabe", "archive_link": "artxiboko esteka", "mod": "Moderatzailea", "mods": "Moderatzaileak", @@ -105,10 +105,10 @@ "posts": "Argitalpenak", "related_posts": "Argitalpen horiek zerikusia izan dezakete", "cross_posts": "Esteka hau ere hemen argitaratu da:", - "comments": "Iruzkinak", - "number_of_comments": "{{count}} Iruzkin", - "number_of_comments_plural": "{{count}} Iruzkinak", - "remove_comment": "Ezabatu Iruzkina", + "comments": "Iradokizunak", + "number_of_comments": "Iradokizun {{count}}", + "number_of_comments_plural": "{{count}} Iradokizun", + "remove_comment": "Iradokizunak Ezabatu", "communities": "Komunitateak", "create_a_community": "Komunitate bat sortu", "cross_post": "Argitalpen gurutzatua", @@ -252,9 +252,9 @@ "email_already_exists": "Posta helbide hau beste norbaitek erabiltzen du.", "couldnt_update_user": "Ezin izan zen erabiltzailea eguneratu.", "system_err_login": "Sistemaren errorea. Saiatu saioa ixten eta berriro sartzen.", - "couldnt_create_private_message": "Ezin izan zen mezu pribatu bat sortu.", + "couldnt_create_private_message": "Ezinezkoa izan da mezu pribatua sortzea.", "no_private_message_edit_allowed": "Ezin da mezu pribaturik editatu.", - "couldnt_update_private_message": "Ezin izan ziren mezu pribatuak eguneratu.", + "couldnt_update_private_message": "Ezinezkoa izan da mezu pribatua berritzea.", "emoji_picker": "Emoji Hautagailua", "invalid_username": "Erabiltzaile-izen baliogabea." } From 0dedbc72568bd65bd6893094bd1d26a0496b7ef1 Mon Sep 17 00:00:00 2001 From: Sergio Varela Date: Mon, 29 Jun 2020 21:33:45 +0000 Subject: [PATCH 25/45] Translated using Weblate (Basque) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index f376ec327..11106426d 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -79,7 +79,7 @@ "unlock": "desblokeatu", "lock": "blokeatu", "sticky": "finkatuta", - "unsticky": "Finkatu gabe", + "unsticky": "finkatu gabe", "archive_link": "artxiboko esteka", "mod": "Moderatzailea", "mods": "Moderatzaileak", From 4f40fa1ad89b93246922a5df84bb0164afa6cff0 Mon Sep 17 00:00:00 2001 From: bertol Date: Mon, 29 Jun 2020 21:34:03 +0000 Subject: [PATCH 26/45] Translated using Weblate (Basque) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index 11106426d..b4774ae3e 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -86,7 +86,7 @@ "moderates": "Moderatuak", "settings": "Konfigurazioa", "admin_settings": "Administrazio-doikuntzak", - "site_config": "Gunearen Konfigurazioa", + "site_config": "Lekuaren Konfigurazioa", "remove_as_mod": "ezabatu moderatzaile gisa", "modlog": "Moderatzailearen erregistroa", "appoint_as_mod": "moderatzaile bezala izendatu", From 05ae51291c5c8256b2c27a3440bffdb283398c11 Mon Sep 17 00:00:00 2001 From: Sunur Efe Vural Date: Mon, 29 Jun 2020 17:40:27 +0000 Subject: [PATCH 27/45] Translated using Weblate (Turkish) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/tr/ --- ui/translations/tr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/translations/tr.json b/ui/translations/tr.json index c5a230948..92e2ee34c 100644 --- a/ui/translations/tr.json +++ b/ui/translations/tr.json @@ -255,6 +255,6 @@ "sponsor_message": "Lemmy, reklam içermeyen ve ticari amaç gütmeyen serbest ve <1>açık kaynaklı bir yazılımdır. Bağışlarınız projenin tam zamanlı geliştirilmesine direkt katkıda bulunmaktadır. Aşağıdaki kişilere içten teşekkürler:", "general_sponsors": "Genel sponsorlar Lemmy'ye 10 ila 30$ arasında bağışta bulunanlardır.", "transfer_community": "topluluğu transfer et", - "landing": "Lemmy, <2>Fediverse ile iç içe olacak şekilde dizayn edilmiş bir <1>bağlantı yığıştırıcısı yani Reddit alternatifidir.", + "landing": "Lemmy, <2>Fediverse ile iç içe olacak şekilde dizayn edilmiş bir <1>bağlantı yığıştırıcısı yani Reddit alternatifidir.<3>Herkesçe host edilebilir, yorum dizisi anlık yenilenir ve kodu küçüktür (<4>80kB). ActivityPub protokol ağına integrasyon plandadır.<5>Bu daha <6>çok erken bir beta versiyonudur ve bir sürü özellik ya bozuk ya da daha eklenmemiştir.<7>Yeni özellikler talebinde bulunmayı ya da yazılımdaki bozuklukları bildirmeyi <8>buradan yapabilirsiniz.<9><10>Rust, <11>Actix, <12>Inferno ve <13>Typescript ile yapılmıştır.", "couldnt_get_posts": "Paylaşımlar yüklenemedi" } From 22abcb79e421dac482a539b914e771a779fec094 Mon Sep 17 00:00:00 2001 From: Sergio Varela Date: Mon, 29 Jun 2020 21:34:24 +0000 Subject: [PATCH 28/45] Translated using Weblate (Basque) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index b4774ae3e..11106426d 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -86,7 +86,7 @@ "moderates": "Moderatuak", "settings": "Konfigurazioa", "admin_settings": "Administrazio-doikuntzak", - "site_config": "Lekuaren Konfigurazioa", + "site_config": "Gunearen Konfigurazioa", "remove_as_mod": "ezabatu moderatzaile gisa", "modlog": "Moderatzailearen erregistroa", "appoint_as_mod": "moderatzaile bezala izendatu", From f3e3847e0ad614e49593a4b11782baa45352fda3 Mon Sep 17 00:00:00 2001 From: bertol Date: Mon, 29 Jun 2020 21:35:08 +0000 Subject: [PATCH 29/45] Translated using Weblate (Basque) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/eu/ --- ui/translations/eu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/translations/eu.json b/ui/translations/eu.json index 11106426d..e74d58390 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -122,7 +122,7 @@ "create_private_message": "Mezu pribatu bat sortu", "cancel": "Ezeztatu", "stickied": "finkatuta", - "reason": "Arrazoia", + "reason": "Arrazoi", "mark_as_read": "markatu irakurrita bezala", "deleted": "sortzaileak ezabatua", "delete_account_confirm": "Ohartarazpena: horrek etengabe ezabatuko ditu zure datu guztiak. Idatzi zure pasahitza baieztatzeko.", From 3d746fc99a017b843b9aa083ca78b51fedf50a85 Mon Sep 17 00:00:00 2001 From: Gert Date: Mon, 29 Jun 2020 06:50:24 +0000 Subject: [PATCH 30/45] Translated using Weblate (Dutch) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/nl/ --- ui/translations/nl.json | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/ui/translations/nl.json b/ui/translations/nl.json index 7fba6c598..cd08f2ffd 100644 --- a/ui/translations/nl.json +++ b/ui/translations/nl.json @@ -43,20 +43,20 @@ "remove_as_admin": "verwijder als beheerder", "appoint_as_admin": "benoemen tot beheerder", "remove": "weghalen", - "removed": "weggehaald", + "removed": "weggehaald door moderator", "locked": "gesloten", "reason": "Reden", "mark_as_read": "markeer als gelezen", "mark_as_unread": "markeer als ongelezen", "delete": "verwijder", - "deleted": "verwijderd", + "deleted": "verwijderd door maker", "restore": "herstellen", "ban": "verban", "ban_from_site": "verban van site", "unban": "verbanning opzeggen", "unban_from_site": "verbanning van site opzeggen", "save": "opslaan", - "unsave": "unsave", + "unsave": "weggooien", "create": "maak", "username": "Gebruikersnaam", "email_or_username": "E-mail of gebruikersnaam", @@ -126,7 +126,7 @@ "show_nsfw": "Laat NSFW-inhoud zien", "sponsors": "Sponsoren", "sponsors_of_lemmy": "Sponsoren van Lemmy", - "sponsor_message": "Lemmy is vrije, <1>open-source software, dus zonder reclame, winstoogmerk en durfkapitaal, punt. Jouw donaties gaan direct naar de full-time-ontwikkeling van het project. Met veel dank aan de volgende mensen:", + "sponsor_message": "Lemmy is vrije, <1>open-source software, dus zonder reclame, winstoogmerk en durfkapitaal, punt. Jouw donaties gaan direct naar de full-time-ontwikkeling van het project. Met dank aan de volgende mensen:", "support_on_patreon": "Ondersteun op Patreon", "support_on_liberapay": "Ondersteun op Liberapay", "general_sponsors": "Algemene sponsors zijn sponsors die tussen de $10 en $39 hebben gegeven aan Lemmy.", @@ -230,7 +230,7 @@ "couldnt_create_private_message": "Kan beveiligd bericht niet maken.", "no_private_message_edit_allowed": "Niet toegestaan om privé berichten te wijzigen.", "couldnt_update_private_message": "Kan beveiligd bericht niet bijwerken.", - "cross_posted_to": "gecross-post naar: ", + "cross_posted_to": "Ook gepost in: ", "more": "meer", "site_config": "Configuratie van de website", "sorting_help": "hulp bij sorteren", @@ -251,5 +251,10 @@ "silver_sponsors": "Zilveren sponsors zijn sponsors die $40 hebben gegeven aan Lemmy.", "post_title_too_long": "Posttitel te lang.", "admin_settings": "Beheerderinstellingen", - "banned_users": "Verbannen gebruikers" + "banned_users": "Verbannen gebruikers", + "picture_deleted": "Afbeelding verwijderd.", + "invalid_community_name": "Ongeldige naam.", + "click_to_delete_picture": "Klik om de afbeelding te verwijderen.", + "select_a_community": "Kies een community", + "invalid_username": "Ongeldige gebruikersnaam." } From 3aff6214783445934f2603bfa9a8581f825597e3 Mon Sep 17 00:00:00 2001 From: Sergio Varela Date: Mon, 29 Jun 2020 21:40:38 +0000 Subject: [PATCH 31/45] Translated using Weblate (Spanish) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/es/ --- ui/translations/es.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/translations/es.json b/ui/translations/es.json index 55b585caf..50beb8c0a 100644 --- a/ui/translations/es.json +++ b/ui/translations/es.json @@ -256,5 +256,5 @@ "invalid_username": "Nombre de usuario inválido.", "invalid_community_name": "Nombre inválido.", "click_to_delete_picture": "Haz click para eliminar la imagen.", - "picture_deleted": "Imagen borrada." + "picture_deleted": "Foto eliminada." } From 97e088dcbfb91bb16bd0190f8d956095755e8cb4 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Mon, 29 Jun 2020 20:02:38 -0400 Subject: [PATCH 32/45] Remove mat views, no fast tables or caching added yet. --- .../down.sql | 9 +++ .../2020-06-29-222617_remove_mat_views/up.sql | 9 +++ server/src/db/comment_view.rs | 47 ++------------- server/src/db/community_view.rs | 42 ++----------- server/src/db/post_view.rs | 59 ++----------------- server/src/db/private_message_view.rs | 31 ++-------- server/src/db/user_mention_view.rs | 44 ++------------ server/src/db/user_view.rs | 44 ++++---------- 8 files changed, 55 insertions(+), 230 deletions(-) create mode 100644 server/migrations/2020-06-29-222617_remove_mat_views/down.sql create mode 100644 server/migrations/2020-06-29-222617_remove_mat_views/up.sql diff --git a/server/migrations/2020-06-29-222617_remove_mat_views/down.sql b/server/migrations/2020-06-29-222617_remove_mat_views/down.sql new file mode 100644 index 000000000..7c4908638 --- /dev/null +++ b/server/migrations/2020-06-29-222617_remove_mat_views/down.sql @@ -0,0 +1,9 @@ +alter table comment enable trigger refresh_comment; +alter table user_ enable trigger refresh_user; +alter table post enable trigger refresh_post; +alter table community enable trigger refresh_community; +alter table private_message enable trigger refresh_private_message; +alter table post_like enable trigger refresh_post_like; +alter table community_follower enable trigger refresh_community_follower; +alter table community_user_ban enable trigger refresh_community_user_ban; +alter table comment_like enable trigger refresh_comment_like; diff --git a/server/migrations/2020-06-29-222617_remove_mat_views/up.sql b/server/migrations/2020-06-29-222617_remove_mat_views/up.sql new file mode 100644 index 000000000..eb0fb9382 --- /dev/null +++ b/server/migrations/2020-06-29-222617_remove_mat_views/up.sql @@ -0,0 +1,9 @@ +alter table comment disable trigger refresh_comment; +alter table user_ disable trigger refresh_user; +alter table post disable trigger refresh_post; +alter table community disable trigger refresh_community; +alter table private_message disable trigger refresh_private_message; +alter table post_like disable trigger refresh_post_like; +alter table community_follower disable trigger refresh_community_follower; +alter table community_user_ban disable trigger refresh_community_user_ban; +alter table comment_like disable trigger refresh_comment_like; diff --git a/server/src/db/comment_view.rs b/server/src/db/comment_view.rs index a37cdbcd6..f96d9534d 100644 --- a/server/src/db/comment_view.rs +++ b/server/src/db/comment_view.rs @@ -38,41 +38,6 @@ table! { } } -table! { - comment_mview (id) { - id -> Int4, - creator_id -> Int4, - post_id -> Int4, - parent_id -> Nullable, - content -> Text, - removed -> Bool, - read -> Bool, - published -> Timestamp, - updated -> Nullable, - deleted -> Bool, - ap_id -> Text, - local -> Bool, - community_id -> Int4, - community_actor_id -> Text, - community_local -> Bool, - community_name -> Varchar, - banned -> Bool, - banned_from_community -> Bool, - creator_actor_id -> Text, - creator_local -> Bool, - creator_name -> Varchar, - creator_avatar -> Nullable, - score -> BigInt, - upvotes -> BigInt, - downvotes -> BigInt, - hot_rank -> Int4, - user_id -> Nullable, - my_vote -> Nullable, - subscribed -> Nullable, - saved -> Nullable, - } -} - #[derive( Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize, QueryableByName, Clone, )] @@ -112,7 +77,7 @@ pub struct CommentView { pub struct CommentQueryBuilder<'a> { conn: &'a PgConnection, - query: super::comment_view::comment_mview::BoxedQuery<'a, Pg>, + query: super::comment_view::comment_view::BoxedQuery<'a, Pg>, listing_type: ListingType, sort: &'a SortType, for_community_id: Option, @@ -127,9 +92,9 @@ pub struct CommentQueryBuilder<'a> { impl<'a> CommentQueryBuilder<'a> { pub fn create(conn: &'a PgConnection) -> Self { - use super::comment_view::comment_mview::dsl::*; + use super::comment_view::comment_view::dsl::*; - let query = comment_mview.into_boxed(); + let query = comment_view.into_boxed(); CommentQueryBuilder { conn, @@ -198,7 +163,7 @@ impl<'a> CommentQueryBuilder<'a> { } pub fn list(self) -> Result, Error> { - use super::comment_view::comment_mview::dsl::*; + use super::comment_view::comment_view::dsl::*; let mut query = self.query; @@ -270,8 +235,8 @@ impl CommentView { from_comment_id: i32, my_user_id: Option, ) -> Result { - use super::comment_view::comment_mview::dsl::*; - let mut query = comment_mview.into_boxed(); + use super::comment_view::comment_view::dsl::*; + let mut query = comment_view.into_boxed(); // The view lets you pass a null user_id, if you're not logged in if let Some(my_user_id) = my_user_id { diff --git a/server/src/db/community_view.rs b/server/src/db/community_view.rs index ea7b2a7ca..606ec13ce 100644 --- a/server/src/db/community_view.rs +++ b/server/src/db/community_view.rs @@ -1,4 +1,4 @@ -use super::community_view::community_mview::BoxedQuery; +use super::community_view::community_view::BoxedQuery; use crate::db::{fuzzy_search, limit_and_offset, MaybeOptional, SortType}; use diesel::{pg::Pg, result::Error, *}; use serde::{Deserialize, Serialize}; @@ -33,36 +33,6 @@ table! { } } -table! { - community_mview (id) { - id -> Int4, - name -> Varchar, - title -> Varchar, - description -> Nullable, - category_id -> Int4, - creator_id -> Int4, - removed -> Bool, - published -> Timestamp, - updated -> Nullable, - deleted -> Bool, - nsfw -> Bool, - actor_id -> Text, - local -> Bool, - last_refreshed_at -> Timestamp, - creator_actor_id -> Text, - creator_local -> Bool, - creator_name -> Varchar, - creator_avatar -> Nullable, - category_name -> Varchar, - number_of_subscribers -> BigInt, - number_of_posts -> BigInt, - number_of_comments -> BigInt, - hot_rank -> Int4, - user_id -> Nullable, - subscribed -> Nullable, - } -} - table! { community_moderator_view (id) { id -> Int4, @@ -156,9 +126,9 @@ pub struct CommunityQueryBuilder<'a> { impl<'a> CommunityQueryBuilder<'a> { pub fn create(conn: &'a PgConnection) -> Self { - use super::community_view::community_mview::dsl::*; + use super::community_view::community_view::dsl::*; - let query = community_mview.into_boxed(); + let query = community_view.into_boxed(); CommunityQueryBuilder { conn, @@ -203,7 +173,7 @@ impl<'a> CommunityQueryBuilder<'a> { } pub fn list(self) -> Result, Error> { - use super::community_view::community_mview::dsl::*; + use super::community_view::community_view::dsl::*; let mut query = self.query; @@ -259,9 +229,9 @@ impl CommunityView { from_community_id: i32, from_user_id: Option, ) -> Result { - use super::community_view::community_mview::dsl::*; + use super::community_view::community_view::dsl::*; - let mut query = community_mview.into_boxed(); + let mut query = community_view.into_boxed(); query = query.filter(id.eq(from_community_id)); diff --git a/server/src/db/post_view.rs b/server/src/db/post_view.rs index fbbf658d3..6865402fb 100644 --- a/server/src/db/post_view.rs +++ b/server/src/db/post_view.rs @@ -1,4 +1,4 @@ -use super::post_view::post_mview::BoxedQuery; +use super::post_view::post_view::BoxedQuery; use crate::db::{fuzzy_search, limit_and_offset, ListingType, MaybeOptional, SortType}; use diesel::{dsl::*, pg::Pg, result::Error, *}; use serde::{Deserialize, Serialize}; @@ -51,53 +51,6 @@ table! { } } -table! { - post_mview (id) { - id -> Int4, - name -> Varchar, - url -> Nullable, - body -> Nullable, - creator_id -> Int4, - community_id -> Int4, - removed -> Bool, - locked -> Bool, - published -> Timestamp, - updated -> Nullable, - deleted -> Bool, - nsfw -> Bool, - stickied -> Bool, - embed_title -> Nullable, - embed_description -> Nullable, - embed_html -> Nullable, - thumbnail_url -> Nullable, - ap_id -> Text, - local -> Bool, - banned -> Bool, - banned_from_community -> Bool, - creator_actor_id -> Text, - creator_local -> Bool, - creator_name -> Varchar, - creator_avatar -> Nullable, - community_actor_id -> Text, - community_local -> Bool, - community_name -> Varchar, - community_removed -> Bool, - community_deleted -> Bool, - community_nsfw -> Bool, - number_of_comments -> BigInt, - score -> BigInt, - upvotes -> BigInt, - downvotes -> BigInt, - hot_rank -> Int4, - newest_activity_time -> Timestamp, - user_id -> Nullable, - my_vote -> Nullable, - subscribed -> Nullable, - read -> Nullable, - saved -> Nullable, - } -} - #[derive( Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize, QueryableByName, Clone, )] @@ -166,9 +119,9 @@ pub struct PostQueryBuilder<'a> { impl<'a> PostQueryBuilder<'a> { pub fn create(conn: &'a PgConnection) -> Self { - use super::post_view::post_mview::dsl::*; + use super::post_view::post_view::dsl::*; - let query = post_mview.into_boxed(); + let query = post_view.into_boxed(); PostQueryBuilder { conn, @@ -249,7 +202,7 @@ impl<'a> PostQueryBuilder<'a> { } pub fn list(self) -> Result, Error> { - use super::post_view::post_mview::dsl::*; + use super::post_view::post_view::dsl::*; let mut query = self.query; @@ -345,10 +298,10 @@ impl PostView { from_post_id: i32, my_user_id: Option, ) -> Result { - use super::post_view::post_mview::dsl::*; + use super::post_view::post_view::dsl::*; use diesel::prelude::*; - let mut query = post_mview.into_boxed(); + let mut query = post_view.into_boxed(); query = query.filter(id.eq(from_post_id)); diff --git a/server/src/db/private_message_view.rs b/server/src/db/private_message_view.rs index 9a1df4397..899a1084d 100644 --- a/server/src/db/private_message_view.rs +++ b/server/src/db/private_message_view.rs @@ -26,29 +26,6 @@ table! { } } -table! { - private_message_mview (id) { - id -> Int4, - creator_id -> Int4, - recipient_id -> Int4, - content -> Text, - deleted -> Bool, - read -> Bool, - published -> Timestamp, - updated -> Nullable, - ap_id -> Text, - local -> Bool, - creator_name -> Varchar, - creator_avatar -> Nullable, - creator_actor_id -> Text, - creator_local -> Bool, - recipient_name -> Varchar, - recipient_avatar -> Nullable, - recipient_actor_id -> Text, - recipient_local -> Bool, - } -} - #[derive( Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize, QueryableByName, Clone, )] @@ -76,7 +53,7 @@ pub struct PrivateMessageView { pub struct PrivateMessageQueryBuilder<'a> { conn: &'a PgConnection, - query: super::private_message_view::private_message_mview::BoxedQuery<'a, Pg>, + query: super::private_message_view::private_message_view::BoxedQuery<'a, Pg>, for_recipient_id: i32, unread_only: bool, page: Option, @@ -85,9 +62,9 @@ pub struct PrivateMessageQueryBuilder<'a> { impl<'a> PrivateMessageQueryBuilder<'a> { pub fn create(conn: &'a PgConnection, for_recipient_id: i32) -> Self { - use super::private_message_view::private_message_mview::dsl::*; + use super::private_message_view::private_message_view::dsl::*; - let query = private_message_mview.into_boxed(); + let query = private_message_view.into_boxed(); PrivateMessageQueryBuilder { conn, @@ -115,7 +92,7 @@ impl<'a> PrivateMessageQueryBuilder<'a> { } pub fn list(self) -> Result, Error> { - use super::private_message_view::private_message_mview::dsl::*; + use super::private_message_view::private_message_view::dsl::*; let mut query = self.query.filter(deleted.eq(false)); diff --git a/server/src/db/user_mention_view.rs b/server/src/db/user_mention_view.rs index 100445b99..41ade0bb6 100644 --- a/server/src/db/user_mention_view.rs +++ b/server/src/db/user_mention_view.rs @@ -39,42 +39,6 @@ table! { } } -table! { - user_mention_mview (id) { - id -> Int4, - user_mention_id -> Int4, - creator_id -> Int4, - creator_actor_id -> Text, - creator_local -> Bool, - post_id -> Int4, - parent_id -> Nullable, - content -> Text, - removed -> Bool, - read -> Bool, - published -> Timestamp, - updated -> Nullable, - deleted -> Bool, - community_id -> Int4, - community_actor_id -> Text, - community_local -> Bool, - community_name -> Varchar, - banned -> Bool, - banned_from_community -> Bool, - creator_name -> Varchar, - creator_avatar -> Nullable, - score -> BigInt, - upvotes -> BigInt, - downvotes -> BigInt, - hot_rank -> Int4, - user_id -> Nullable, - my_vote -> Nullable, - saved -> Nullable, - recipient_id -> Int4, - recipient_actor_id -> Text, - recipient_local -> Bool, - } -} - #[derive( Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize, QueryableByName, Clone, )] @@ -115,7 +79,7 @@ pub struct UserMentionView { pub struct UserMentionQueryBuilder<'a> { conn: &'a PgConnection, - query: super::user_mention_view::user_mention_mview::BoxedQuery<'a, Pg>, + query: super::user_mention_view::user_mention_view::BoxedQuery<'a, Pg>, for_user_id: i32, sort: &'a SortType, unread_only: bool, @@ -125,9 +89,9 @@ pub struct UserMentionQueryBuilder<'a> { impl<'a> UserMentionQueryBuilder<'a> { pub fn create(conn: &'a PgConnection, for_user_id: i32) -> Self { - use super::user_mention_view::user_mention_mview::dsl::*; + use super::user_mention_view::user_mention_view::dsl::*; - let query = user_mention_mview.into_boxed(); + let query = user_mention_view.into_boxed(); UserMentionQueryBuilder { conn, @@ -161,7 +125,7 @@ impl<'a> UserMentionQueryBuilder<'a> { } pub fn list(self) -> Result, Error> { - use super::user_mention_view::user_mention_mview::dsl::*; + use super::user_mention_view::user_mention_view::dsl::*; let mut query = self.query; diff --git a/server/src/db/user_view.rs b/server/src/db/user_view.rs index 57e2a4c9c..e717e0387 100644 --- a/server/src/db/user_view.rs +++ b/server/src/db/user_view.rs @@ -1,4 +1,4 @@ -use super::user_view::user_mview::BoxedQuery; +use super::user_view::user_view::BoxedQuery; use crate::db::{fuzzy_search, limit_and_offset, MaybeOptional, SortType}; use diesel::{dsl::*, pg::Pg, result::Error, *}; use serde::{Deserialize, Serialize}; @@ -25,28 +25,6 @@ table! { } } -table! { - user_mview (id) { - id -> Int4, - actor_id -> Text, - name -> Varchar, - avatar -> Nullable, - email -> Nullable, - matrix_user_id -> Nullable, - bio -> Nullable, - local -> Bool, - admin -> Bool, - banned -> Bool, - show_avatars -> Bool, - send_notifications_to_email -> Bool, - published -> Timestamp, - number_of_posts -> BigInt, - post_score -> BigInt, - number_of_comments -> BigInt, - comment_score -> BigInt, - } -} - #[derive( Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize, QueryableByName, Clone, )] @@ -81,9 +59,9 @@ pub struct UserQueryBuilder<'a> { impl<'a> UserQueryBuilder<'a> { pub fn create(conn: &'a PgConnection) -> Self { - use super::user_view::user_mview::dsl::*; + use super::user_view::user_view::dsl::*; - let query = user_mview.into_boxed(); + let query = user_view.into_boxed(); UserQueryBuilder { conn, @@ -100,7 +78,7 @@ impl<'a> UserQueryBuilder<'a> { } pub fn search_term>(mut self, search_term: T) -> Self { - use super::user_view::user_mview::dsl::*; + use super::user_view::user_view::dsl::*; if let Some(search_term) = search_term.get_optional() { self.query = self.query.filter(name.ilike(fuzzy_search(&search_term))); } @@ -118,7 +96,7 @@ impl<'a> UserQueryBuilder<'a> { } pub fn list(self) -> Result, Error> { - use super::user_view::user_mview::dsl::*; + use super::user_view::user_view::dsl::*; let mut query = self.query; @@ -151,17 +129,17 @@ impl<'a> UserQueryBuilder<'a> { impl UserView { pub fn read(conn: &PgConnection, from_user_id: i32) -> Result { - use super::user_view::user_mview::dsl::*; - user_mview.find(from_user_id).first::(conn) + use super::user_view::user_view::dsl::*; + user_view.find(from_user_id).first::(conn) } pub fn admins(conn: &PgConnection) -> Result, Error> { - use super::user_view::user_mview::dsl::*; - user_mview.filter(admin.eq(true)).load::(conn) + use super::user_view::user_view::dsl::*; + user_view.filter(admin.eq(true)).load::(conn) } pub fn banned(conn: &PgConnection) -> Result, Error> { - use super::user_view::user_mview::dsl::*; - user_mview.filter(banned.eq(true)).load::(conn) + use super::user_view::user_view::dsl::*; + user_view.filter(banned.eq(true)).load::(conn) } } From c10a05cb68d319adfade4cb598dc14480193603e Mon Sep 17 00:00:00 2001 From: Dessalines Date: Mon, 29 Jun 2020 20:14:16 -0400 Subject: [PATCH 33/45] Version v0.7.3 --- ansible/VERSION | 2 +- docker/prod/docker-compose.yml | 2 +- server/src/version.rs | 2 +- ui/src/version.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/VERSION b/ansible/VERSION index 2c0a9c7b7..3d105a6fd 100644 --- a/ansible/VERSION +++ b/ansible/VERSION @@ -1 +1 @@ -v0.7.2 +v0.7.3 diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml index ef3d69752..5e4dd0136 100644 --- a/docker/prod/docker-compose.yml +++ b/docker/prod/docker-compose.yml @@ -12,7 +12,7 @@ services: restart: always lemmy: - image: dessalines/lemmy:v0.7.2 + image: dessalines/lemmy:v0.7.3 ports: - "127.0.0.1:8536:8536" restart: always diff --git a/server/src/version.rs b/server/src/version.rs index b49db8033..287c99d3d 100644 --- a/server/src/version.rs +++ b/server/src/version.rs @@ -1 +1 @@ -pub const VERSION: &str = "v0.7.2"; +pub const VERSION: &str = "v0.7.3"; diff --git a/ui/src/version.ts b/ui/src/version.ts index 92d18546c..90c7c5629 100644 --- a/ui/src/version.ts +++ b/ui/src/version.ts @@ -1 +1 @@ -export const version: string = 'v0.7.2'; +export const version: string = 'v0.7.3'; From 80bca8610eb4cd826578969b0fdd3e3a6b5bfc90 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Mon, 29 Jun 2020 21:00:28 -0400 Subject: [PATCH 34/45] Revert "Remove mat views, no fast tables or caching added yet." This reverts commit 97e088dcbfb91bb16bd0190f8d956095755e8cb4. --- .../down.sql | 9 --- .../2020-06-29-222617_remove_mat_views/up.sql | 9 --- server/src/db/comment_view.rs | 47 +++++++++++++-- server/src/db/community_view.rs | 42 +++++++++++-- server/src/db/post_view.rs | 59 +++++++++++++++++-- server/src/db/private_message_view.rs | 31 ++++++++-- server/src/db/user_mention_view.rs | 44 ++++++++++++-- server/src/db/user_view.rs | 44 ++++++++++---- 8 files changed, 230 insertions(+), 55 deletions(-) delete mode 100644 server/migrations/2020-06-29-222617_remove_mat_views/down.sql delete mode 100644 server/migrations/2020-06-29-222617_remove_mat_views/up.sql diff --git a/server/migrations/2020-06-29-222617_remove_mat_views/down.sql b/server/migrations/2020-06-29-222617_remove_mat_views/down.sql deleted file mode 100644 index 7c4908638..000000000 --- a/server/migrations/2020-06-29-222617_remove_mat_views/down.sql +++ /dev/null @@ -1,9 +0,0 @@ -alter table comment enable trigger refresh_comment; -alter table user_ enable trigger refresh_user; -alter table post enable trigger refresh_post; -alter table community enable trigger refresh_community; -alter table private_message enable trigger refresh_private_message; -alter table post_like enable trigger refresh_post_like; -alter table community_follower enable trigger refresh_community_follower; -alter table community_user_ban enable trigger refresh_community_user_ban; -alter table comment_like enable trigger refresh_comment_like; diff --git a/server/migrations/2020-06-29-222617_remove_mat_views/up.sql b/server/migrations/2020-06-29-222617_remove_mat_views/up.sql deleted file mode 100644 index eb0fb9382..000000000 --- a/server/migrations/2020-06-29-222617_remove_mat_views/up.sql +++ /dev/null @@ -1,9 +0,0 @@ -alter table comment disable trigger refresh_comment; -alter table user_ disable trigger refresh_user; -alter table post disable trigger refresh_post; -alter table community disable trigger refresh_community; -alter table private_message disable trigger refresh_private_message; -alter table post_like disable trigger refresh_post_like; -alter table community_follower disable trigger refresh_community_follower; -alter table community_user_ban disable trigger refresh_community_user_ban; -alter table comment_like disable trigger refresh_comment_like; diff --git a/server/src/db/comment_view.rs b/server/src/db/comment_view.rs index f96d9534d..a37cdbcd6 100644 --- a/server/src/db/comment_view.rs +++ b/server/src/db/comment_view.rs @@ -38,6 +38,41 @@ table! { } } +table! { + comment_mview (id) { + id -> Int4, + creator_id -> Int4, + post_id -> Int4, + parent_id -> Nullable, + content -> Text, + removed -> Bool, + read -> Bool, + published -> Timestamp, + updated -> Nullable, + deleted -> Bool, + ap_id -> Text, + local -> Bool, + community_id -> Int4, + community_actor_id -> Text, + community_local -> Bool, + community_name -> Varchar, + banned -> Bool, + banned_from_community -> Bool, + creator_actor_id -> Text, + creator_local -> Bool, + creator_name -> Varchar, + creator_avatar -> Nullable, + score -> BigInt, + upvotes -> BigInt, + downvotes -> BigInt, + hot_rank -> Int4, + user_id -> Nullable, + my_vote -> Nullable, + subscribed -> Nullable, + saved -> Nullable, + } +} + #[derive( Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize, QueryableByName, Clone, )] @@ -77,7 +112,7 @@ pub struct CommentView { pub struct CommentQueryBuilder<'a> { conn: &'a PgConnection, - query: super::comment_view::comment_view::BoxedQuery<'a, Pg>, + query: super::comment_view::comment_mview::BoxedQuery<'a, Pg>, listing_type: ListingType, sort: &'a SortType, for_community_id: Option, @@ -92,9 +127,9 @@ pub struct CommentQueryBuilder<'a> { impl<'a> CommentQueryBuilder<'a> { pub fn create(conn: &'a PgConnection) -> Self { - use super::comment_view::comment_view::dsl::*; + use super::comment_view::comment_mview::dsl::*; - let query = comment_view.into_boxed(); + let query = comment_mview.into_boxed(); CommentQueryBuilder { conn, @@ -163,7 +198,7 @@ impl<'a> CommentQueryBuilder<'a> { } pub fn list(self) -> Result, Error> { - use super::comment_view::comment_view::dsl::*; + use super::comment_view::comment_mview::dsl::*; let mut query = self.query; @@ -235,8 +270,8 @@ impl CommentView { from_comment_id: i32, my_user_id: Option, ) -> Result { - use super::comment_view::comment_view::dsl::*; - let mut query = comment_view.into_boxed(); + use super::comment_view::comment_mview::dsl::*; + let mut query = comment_mview.into_boxed(); // The view lets you pass a null user_id, if you're not logged in if let Some(my_user_id) = my_user_id { diff --git a/server/src/db/community_view.rs b/server/src/db/community_view.rs index 606ec13ce..ea7b2a7ca 100644 --- a/server/src/db/community_view.rs +++ b/server/src/db/community_view.rs @@ -1,4 +1,4 @@ -use super::community_view::community_view::BoxedQuery; +use super::community_view::community_mview::BoxedQuery; use crate::db::{fuzzy_search, limit_and_offset, MaybeOptional, SortType}; use diesel::{pg::Pg, result::Error, *}; use serde::{Deserialize, Serialize}; @@ -33,6 +33,36 @@ table! { } } +table! { + community_mview (id) { + id -> Int4, + name -> Varchar, + title -> Varchar, + description -> Nullable, + category_id -> Int4, + creator_id -> Int4, + removed -> Bool, + published -> Timestamp, + updated -> Nullable, + deleted -> Bool, + nsfw -> Bool, + actor_id -> Text, + local -> Bool, + last_refreshed_at -> Timestamp, + creator_actor_id -> Text, + creator_local -> Bool, + creator_name -> Varchar, + creator_avatar -> Nullable, + category_name -> Varchar, + number_of_subscribers -> BigInt, + number_of_posts -> BigInt, + number_of_comments -> BigInt, + hot_rank -> Int4, + user_id -> Nullable, + subscribed -> Nullable, + } +} + table! { community_moderator_view (id) { id -> Int4, @@ -126,9 +156,9 @@ pub struct CommunityQueryBuilder<'a> { impl<'a> CommunityQueryBuilder<'a> { pub fn create(conn: &'a PgConnection) -> Self { - use super::community_view::community_view::dsl::*; + use super::community_view::community_mview::dsl::*; - let query = community_view.into_boxed(); + let query = community_mview.into_boxed(); CommunityQueryBuilder { conn, @@ -173,7 +203,7 @@ impl<'a> CommunityQueryBuilder<'a> { } pub fn list(self) -> Result, Error> { - use super::community_view::community_view::dsl::*; + use super::community_view::community_mview::dsl::*; let mut query = self.query; @@ -229,9 +259,9 @@ impl CommunityView { from_community_id: i32, from_user_id: Option, ) -> Result { - use super::community_view::community_view::dsl::*; + use super::community_view::community_mview::dsl::*; - let mut query = community_view.into_boxed(); + let mut query = community_mview.into_boxed(); query = query.filter(id.eq(from_community_id)); diff --git a/server/src/db/post_view.rs b/server/src/db/post_view.rs index 6865402fb..fbbf658d3 100644 --- a/server/src/db/post_view.rs +++ b/server/src/db/post_view.rs @@ -1,4 +1,4 @@ -use super::post_view::post_view::BoxedQuery; +use super::post_view::post_mview::BoxedQuery; use crate::db::{fuzzy_search, limit_and_offset, ListingType, MaybeOptional, SortType}; use diesel::{dsl::*, pg::Pg, result::Error, *}; use serde::{Deserialize, Serialize}; @@ -51,6 +51,53 @@ table! { } } +table! { + post_mview (id) { + id -> Int4, + name -> Varchar, + url -> Nullable, + body -> Nullable, + creator_id -> Int4, + community_id -> Int4, + removed -> Bool, + locked -> Bool, + published -> Timestamp, + updated -> Nullable, + deleted -> Bool, + nsfw -> Bool, + stickied -> Bool, + embed_title -> Nullable, + embed_description -> Nullable, + embed_html -> Nullable, + thumbnail_url -> Nullable, + ap_id -> Text, + local -> Bool, + banned -> Bool, + banned_from_community -> Bool, + creator_actor_id -> Text, + creator_local -> Bool, + creator_name -> Varchar, + creator_avatar -> Nullable, + community_actor_id -> Text, + community_local -> Bool, + community_name -> Varchar, + community_removed -> Bool, + community_deleted -> Bool, + community_nsfw -> Bool, + number_of_comments -> BigInt, + score -> BigInt, + upvotes -> BigInt, + downvotes -> BigInt, + hot_rank -> Int4, + newest_activity_time -> Timestamp, + user_id -> Nullable, + my_vote -> Nullable, + subscribed -> Nullable, + read -> Nullable, + saved -> Nullable, + } +} + #[derive( Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize, QueryableByName, Clone, )] @@ -119,9 +166,9 @@ pub struct PostQueryBuilder<'a> { impl<'a> PostQueryBuilder<'a> { pub fn create(conn: &'a PgConnection) -> Self { - use super::post_view::post_view::dsl::*; + use super::post_view::post_mview::dsl::*; - let query = post_view.into_boxed(); + let query = post_mview.into_boxed(); PostQueryBuilder { conn, @@ -202,7 +249,7 @@ impl<'a> PostQueryBuilder<'a> { } pub fn list(self) -> Result, Error> { - use super::post_view::post_view::dsl::*; + use super::post_view::post_mview::dsl::*; let mut query = self.query; @@ -298,10 +345,10 @@ impl PostView { from_post_id: i32, my_user_id: Option, ) -> Result { - use super::post_view::post_view::dsl::*; + use super::post_view::post_mview::dsl::*; use diesel::prelude::*; - let mut query = post_view.into_boxed(); + let mut query = post_mview.into_boxed(); query = query.filter(id.eq(from_post_id)); diff --git a/server/src/db/private_message_view.rs b/server/src/db/private_message_view.rs index 899a1084d..9a1df4397 100644 --- a/server/src/db/private_message_view.rs +++ b/server/src/db/private_message_view.rs @@ -26,6 +26,29 @@ table! { } } +table! { + private_message_mview (id) { + id -> Int4, + creator_id -> Int4, + recipient_id -> Int4, + content -> Text, + deleted -> Bool, + read -> Bool, + published -> Timestamp, + updated -> Nullable, + ap_id -> Text, + local -> Bool, + creator_name -> Varchar, + creator_avatar -> Nullable, + creator_actor_id -> Text, + creator_local -> Bool, + recipient_name -> Varchar, + recipient_avatar -> Nullable, + recipient_actor_id -> Text, + recipient_local -> Bool, + } +} + #[derive( Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize, QueryableByName, Clone, )] @@ -53,7 +76,7 @@ pub struct PrivateMessageView { pub struct PrivateMessageQueryBuilder<'a> { conn: &'a PgConnection, - query: super::private_message_view::private_message_view::BoxedQuery<'a, Pg>, + query: super::private_message_view::private_message_mview::BoxedQuery<'a, Pg>, for_recipient_id: i32, unread_only: bool, page: Option, @@ -62,9 +85,9 @@ pub struct PrivateMessageQueryBuilder<'a> { impl<'a> PrivateMessageQueryBuilder<'a> { pub fn create(conn: &'a PgConnection, for_recipient_id: i32) -> Self { - use super::private_message_view::private_message_view::dsl::*; + use super::private_message_view::private_message_mview::dsl::*; - let query = private_message_view.into_boxed(); + let query = private_message_mview.into_boxed(); PrivateMessageQueryBuilder { conn, @@ -92,7 +115,7 @@ impl<'a> PrivateMessageQueryBuilder<'a> { } pub fn list(self) -> Result, Error> { - use super::private_message_view::private_message_view::dsl::*; + use super::private_message_view::private_message_mview::dsl::*; let mut query = self.query.filter(deleted.eq(false)); diff --git a/server/src/db/user_mention_view.rs b/server/src/db/user_mention_view.rs index 41ade0bb6..100445b99 100644 --- a/server/src/db/user_mention_view.rs +++ b/server/src/db/user_mention_view.rs @@ -39,6 +39,42 @@ table! { } } +table! { + user_mention_mview (id) { + id -> Int4, + user_mention_id -> Int4, + creator_id -> Int4, + creator_actor_id -> Text, + creator_local -> Bool, + post_id -> Int4, + parent_id -> Nullable, + content -> Text, + removed -> Bool, + read -> Bool, + published -> Timestamp, + updated -> Nullable, + deleted -> Bool, + community_id -> Int4, + community_actor_id -> Text, + community_local -> Bool, + community_name -> Varchar, + banned -> Bool, + banned_from_community -> Bool, + creator_name -> Varchar, + creator_avatar -> Nullable, + score -> BigInt, + upvotes -> BigInt, + downvotes -> BigInt, + hot_rank -> Int4, + user_id -> Nullable, + my_vote -> Nullable, + saved -> Nullable, + recipient_id -> Int4, + recipient_actor_id -> Text, + recipient_local -> Bool, + } +} + #[derive( Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize, QueryableByName, Clone, )] @@ -79,7 +115,7 @@ pub struct UserMentionView { pub struct UserMentionQueryBuilder<'a> { conn: &'a PgConnection, - query: super::user_mention_view::user_mention_view::BoxedQuery<'a, Pg>, + query: super::user_mention_view::user_mention_mview::BoxedQuery<'a, Pg>, for_user_id: i32, sort: &'a SortType, unread_only: bool, @@ -89,9 +125,9 @@ pub struct UserMentionQueryBuilder<'a> { impl<'a> UserMentionQueryBuilder<'a> { pub fn create(conn: &'a PgConnection, for_user_id: i32) -> Self { - use super::user_mention_view::user_mention_view::dsl::*; + use super::user_mention_view::user_mention_mview::dsl::*; - let query = user_mention_view.into_boxed(); + let query = user_mention_mview.into_boxed(); UserMentionQueryBuilder { conn, @@ -125,7 +161,7 @@ impl<'a> UserMentionQueryBuilder<'a> { } pub fn list(self) -> Result, Error> { - use super::user_mention_view::user_mention_view::dsl::*; + use super::user_mention_view::user_mention_mview::dsl::*; let mut query = self.query; diff --git a/server/src/db/user_view.rs b/server/src/db/user_view.rs index e717e0387..57e2a4c9c 100644 --- a/server/src/db/user_view.rs +++ b/server/src/db/user_view.rs @@ -1,4 +1,4 @@ -use super::user_view::user_view::BoxedQuery; +use super::user_view::user_mview::BoxedQuery; use crate::db::{fuzzy_search, limit_and_offset, MaybeOptional, SortType}; use diesel::{dsl::*, pg::Pg, result::Error, *}; use serde::{Deserialize, Serialize}; @@ -25,6 +25,28 @@ table! { } } +table! { + user_mview (id) { + id -> Int4, + actor_id -> Text, + name -> Varchar, + avatar -> Nullable, + email -> Nullable, + matrix_user_id -> Nullable, + bio -> Nullable, + local -> Bool, + admin -> Bool, + banned -> Bool, + show_avatars -> Bool, + send_notifications_to_email -> Bool, + published -> Timestamp, + number_of_posts -> BigInt, + post_score -> BigInt, + number_of_comments -> BigInt, + comment_score -> BigInt, + } +} + #[derive( Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize, QueryableByName, Clone, )] @@ -59,9 +81,9 @@ pub struct UserQueryBuilder<'a> { impl<'a> UserQueryBuilder<'a> { pub fn create(conn: &'a PgConnection) -> Self { - use super::user_view::user_view::dsl::*; + use super::user_view::user_mview::dsl::*; - let query = user_view.into_boxed(); + let query = user_mview.into_boxed(); UserQueryBuilder { conn, @@ -78,7 +100,7 @@ impl<'a> UserQueryBuilder<'a> { } pub fn search_term>(mut self, search_term: T) -> Self { - use super::user_view::user_view::dsl::*; + use super::user_view::user_mview::dsl::*; if let Some(search_term) = search_term.get_optional() { self.query = self.query.filter(name.ilike(fuzzy_search(&search_term))); } @@ -96,7 +118,7 @@ impl<'a> UserQueryBuilder<'a> { } pub fn list(self) -> Result, Error> { - use super::user_view::user_view::dsl::*; + use super::user_view::user_mview::dsl::*; let mut query = self.query; @@ -129,17 +151,17 @@ impl<'a> UserQueryBuilder<'a> { impl UserView { pub fn read(conn: &PgConnection, from_user_id: i32) -> Result { - use super::user_view::user_view::dsl::*; - user_view.find(from_user_id).first::(conn) + use super::user_view::user_mview::dsl::*; + user_mview.find(from_user_id).first::(conn) } pub fn admins(conn: &PgConnection) -> Result, Error> { - use super::user_view::user_view::dsl::*; - user_view.filter(admin.eq(true)).load::(conn) + use super::user_view::user_mview::dsl::*; + user_mview.filter(admin.eq(true)).load::(conn) } pub fn banned(conn: &PgConnection) -> Result, Error> { - use super::user_view::user_view::dsl::*; - user_view.filter(banned.eq(true)).load::(conn) + use super::user_view::user_mview::dsl::*; + user_mview.filter(banned.eq(true)).load::(conn) } } From 15ea264fcf158e3479c9ac66f8d268faaa894a1e Mon Sep 17 00:00:00 2001 From: Dessalines Date: Mon, 29 Jun 2020 21:02:02 -0400 Subject: [PATCH 35/45] Version v0.7.4 --- ansible/VERSION | 2 +- docker/prod/docker-compose.yml | 2 +- server/src/version.rs | 2 +- ui/src/version.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/VERSION b/ansible/VERSION index 3d105a6fd..520c9c28b 100644 --- a/ansible/VERSION +++ b/ansible/VERSION @@ -1 +1 @@ -v0.7.3 +v0.7.4 diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml index 5e4dd0136..da3fe5032 100644 --- a/docker/prod/docker-compose.yml +++ b/docker/prod/docker-compose.yml @@ -12,7 +12,7 @@ services: restart: always lemmy: - image: dessalines/lemmy:v0.7.3 + image: dessalines/lemmy:v0.7.4 ports: - "127.0.0.1:8536:8536" restart: always diff --git a/server/src/version.rs b/server/src/version.rs index 287c99d3d..e1b4fa818 100644 --- a/server/src/version.rs +++ b/server/src/version.rs @@ -1 +1 @@ -pub const VERSION: &str = "v0.7.3"; +pub const VERSION: &str = "v0.7.4"; diff --git a/ui/src/version.ts b/ui/src/version.ts index 90c7c5629..ba1cc24b8 100644 --- a/ui/src/version.ts +++ b/ui/src/version.ts @@ -1 +1 @@ -export const version: string = 'v0.7.3'; +export const version: string = 'v0.7.4'; From eded51aab67863aed7f7db7641b759eaf35e3737 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Mon, 29 Jun 2020 21:05:38 -0400 Subject: [PATCH 36/45] Version v0.7.5 --- ansible/VERSION | 2 +- docker/prod/docker-compose.yml | 2 +- server/src/version.rs | 2 +- ui/src/version.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/VERSION b/ansible/VERSION index 520c9c28b..aed5a7df6 100644 --- a/ansible/VERSION +++ b/ansible/VERSION @@ -1 +1 @@ -v0.7.4 +v0.7.5 diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml index da3fe5032..018501275 100644 --- a/docker/prod/docker-compose.yml +++ b/docker/prod/docker-compose.yml @@ -12,7 +12,7 @@ services: restart: always lemmy: - image: dessalines/lemmy:v0.7.4 + image: dessalines/lemmy:v0.7.5 ports: - "127.0.0.1:8536:8536" restart: always diff --git a/server/src/version.rs b/server/src/version.rs index e1b4fa818..0970c1759 100644 --- a/server/src/version.rs +++ b/server/src/version.rs @@ -1 +1 @@ -pub const VERSION: &str = "v0.7.4"; +pub const VERSION: &str = "v0.7.5"; diff --git a/ui/src/version.ts b/ui/src/version.ts index ba1cc24b8..01d3be811 100644 --- a/ui/src/version.ts +++ b/ui/src/version.ts @@ -1 +1 @@ -export const version: string = 'v0.7.4'; +export const version: string = 'v0.7.5'; From c0b11d4fa3d383585aa26df22d5c13e58127b1b8 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Tue, 30 Jun 2020 07:11:36 -0400 Subject: [PATCH 37/45] Replacing dogbin/iframely docker image with jolt one. (#869) * Replacing dogbin/iframely docker image with jolt one. * Replacing dogbin/iframely docker image with jolt one. --- ansible/templates/docker-compose.yml | 2 +- docker/dev/docker-compose.yml | 2 +- docker/federation/docker-compose.yml | 2 +- docker/prod/docker-compose.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/templates/docker-compose.yml b/ansible/templates/docker-compose.yml index f4c94fd71..76c53463c 100644 --- a/ansible/templates/docker-compose.yml +++ b/ansible/templates/docker-compose.yml @@ -35,7 +35,7 @@ services: restart: always iframely: - image: dogbin/iframely:latest + image: jolt/iframely:v1.4.3 ports: - "127.0.0.1:8061:80" volumes: diff --git a/docker/dev/docker-compose.yml b/docker/dev/docker-compose.yml index bdcb4308a..65bec9a9a 100644 --- a/docker/dev/docker-compose.yml +++ b/docker/dev/docker-compose.yml @@ -38,7 +38,7 @@ services: restart: always iframely: - image: dogbin/iframely:latest + image: jolt/iframely:v1.4.3 ports: - "127.0.0.1:8061:80" volumes: diff --git a/docker/federation/docker-compose.yml b/docker/federation/docker-compose.yml index d5f9a5225..d854e9d62 100644 --- a/docker/federation/docker-compose.yml +++ b/docker/federation/docker-compose.yml @@ -117,6 +117,6 @@ services: - ./volumes/pictrs_gamma:/mnt iframely: - image: dogbin/iframely:latest + image: jolt/iframely:v1.4.3 volumes: - ../iframely.config.local.js:/iframely/config.local.js:ro diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml index 018501275..5cb3f9adb 100644 --- a/docker/prod/docker-compose.yml +++ b/docker/prod/docker-compose.yml @@ -35,7 +35,7 @@ services: restart: always iframely: - image: dogbin/iframely:latest + image: jolt/iframely:v1.4.3 ports: - "127.0.0.1:8061:80" volumes: From 92b0536520bc1b4d87a1b7f718725a4654d85f30 Mon Sep 17 00:00:00 2001 From: yes Date: Tue, 30 Jun 2020 13:20:59 +0000 Subject: [PATCH 38/45] Translated using Weblate (German) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/de/ --- ui/translations/de.json | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/ui/translations/de.json b/ui/translations/de.json index ef42d4189..3199bc7ad 100644 --- a/ui/translations/de.json +++ b/ui/translations/de.json @@ -50,14 +50,14 @@ "remove_as_admin": "Als Administrator entfernen", "appoint_as_admin": "Zum Administrator ernennen", "remove": "entfernen", - "removed": "entfernt", + "removed": "entfernt durch die Moderation", "locked": "gesperrt", "stickied": "angeheftet", "reason": "Grund", "mark_as_read": "als gelesen markieren", "mark_as_unread": "als ungelesen markieren", "delete": "löschen", - "deleted": "gelöscht", + "deleted": "vom Ersteller gelöscht", "delete_account": "Konto löschen", "delete_account_confirm": "Achtung: Dadurch werden alle Ihre Daten dauerhaft gelöscht. Geben Sie zur Bestätigung Ihr Passwort ein.", "restore": "wiederherstellen", @@ -150,7 +150,7 @@ "theme": "Aussehen", "sponsors": "Sponsoren", "sponsors_of_lemmy": "Sponsoren von Lemmy", - "sponsor_message": "Lemmy ist freie <1>Open-Source Software, also ohne Werbung, Monetarisierung oder Venturekapital, Punkt. Deine Spenden gehen direkt an die Vollzeit Entwicklung des Projekts. Vielen Dank an die folgenden Personen:", + "sponsor_message": "Lemmy ist freie <1>Open-Source Software, ohne Werbung, Monetarisierung oder Venturekapital, Punkt. Deine Spenden gehen direkt an die Vollzeit Entwicklung des Projekts. Vielen Dank an die folgenden Personen:", "support_on_patreon": "Auf Patreon unterstützen", "support_on_liberapay": "Auf Liberapay unterstützen", "general_sponsors": "Allgemeine Sponsoren sind die, die zwischen $10 und $39 zu Lemmy beitragen.", @@ -251,5 +251,10 @@ "number_of_upvotes": "{{count}} Stimme", "number_of_upvotes_plural": "{{count}} Stimmen", "number_of_downvotes": "{{count}} Gegenstimme", - "number_of_downvotes_plural": "{{count}} Gegenstimmen" + "number_of_downvotes_plural": "{{count}} Gegenstimmen", + "invalid_community_name": "Ungültiger Name.", + "click_to_delete_picture": "Klicke, um das Bild zu löschen.", + "picture_deleted": "Bild gelöscht.", + "select_a_community": "Wähle eine Community aus", + "invalid_username": "Ungültiger Benutzername." } From afb7e055e1b9366c7d5cad457dc503df0426dd77 Mon Sep 17 00:00:00 2001 From: riccardo Date: Tue, 30 Jun 2020 13:20:59 +0000 Subject: [PATCH 39/45] Translated using Weblate (Italian) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/it/ --- ui/translations/it.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ui/translations/it.json b/ui/translations/it.json index 2e9a48d8f..cf8c0ea69 100644 --- a/ui/translations/it.json +++ b/ui/translations/it.json @@ -56,7 +56,7 @@ "mark_as_read": "segna come letto", "mark_as_unread": "segna come non letto", "delete": "cancella", - "deleted": "eliminato dall'autore del commento", + "deleted": "eliminato dal creatore", "delete_account": "Cancella Account", "delete_account_confirm": "Attenzione: stai per cancellare permanentemente tutti i tuoi dati. Inserisci la tua password per confermare questa azione.", "restore": "ripristina", @@ -151,7 +151,7 @@ "ethereum": "Ethereum", "monero": "Monero", "code": "Codice", - "joined": "Iscritto da", + "joined": "Iscritto", "by": "di", "to": "su", "transfer_community": "trasferisci comunità", @@ -175,7 +175,7 @@ "couldnt_update_community": "Impossibile aggiornare la comunità.", "community_already_exists": "La comunità esiste già.", "community_moderator_already_exists": "Questo utente è già moderatore della comunità.", - "community_follower_already_exists": "Questo utente è già moderatore della comunità.", + "community_follower_already_exists": "Questo utente è già membro della comunità.", "community_user_already_banned": "L'utente della comunità è già stato espulso.", "couldnt_create_post": "Impossibile creare la pubblicazione.", "couldnt_like_post": "Impossibile apprezzare la pubblicazione.", From 09a05f72e38d995e193e94bf740e8d8794c139b2 Mon Sep 17 00:00:00 2001 From: Dmytro Kyrychuk Date: Tue, 30 Jun 2020 13:20:59 +0000 Subject: [PATCH 40/45] Translated using Weblate (Ukrainian) Currently translated at 29.7% (74 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/uk/ --- ui/translations/uk.json | 83 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 82 insertions(+), 1 deletion(-) diff --git a/ui/translations/uk.json b/ui/translations/uk.json index 0967ef424..1192fa9f9 100644 --- a/ui/translations/uk.json +++ b/ui/translations/uk.json @@ -1 +1,82 @@ -{} +{ + "invalid_community_name": "Невідповідне ім'я.", + "preview": "Перегляд", + "upload_image": "завантажити зображення", + "avatar": "Аватар", + "upload_avatar": "Завантажити аватар", + "show_avatars": "Показати аватари", + "show_context": "Показати контекст", + "formatting_help": "про форматування", + "sorting_help": "про сортування", + "view_source": "дивитися джерело", + "unlock": "розблокувати", + "lock": "заблокувати", + "unsticky": "відкріпити", + "sticky": "прикріпити", + "link": "посилання", + "archive_link": "архівувати посилання", + "settings": "Налаштування", + "site_config": "Налаштування сайту", + "mod": "модератор", + "mods": "модератори", + "moderates": "Модерує", + "admin_settings": "Адміністративні налаштування", + "remove_as_mod": "звільнити модератора", + "appoint_as_mod": "призначити модератора", + "modlog": "Журнал модерування", + "remove_as_admin": "звільнити адміністратора", + "remove": "видалити", + "removed": "видалено модератором", + "locked": "заблоковано", + "stickied": "прикріплено", + "reason": "Причина", + "mark_as_read": "позначити прочитаним", + "delete": "видалити", + "deleted": "видалено автором", + "delete_account": "Видалити акаунт", + "click_to_delete_picture": "Натисніть, щоб видалити зображення.", + "picture_deleted": "Зображення видалено.", + "restore": "відновити", + "related_posts": "Ці записи можуть бути пов'язаними", + "cross_posts": "Це посилання також було опубліковано тут:", + "cross_post": "перепублікувати", + "cross_posted_to": "Переопубліковано до: ", + "comments": "Коментарі", + "number_of_comments_0": "{{count}} коментар", + "number_of_comments_1": "{{count}} коментарі", + "number_of_comments_2": "{{count}} коментарів", + "remove_comment": "Видалити коментар", + "communities": "Спільноти", + "users": "Користувачі", + "create_a_community": "Створити спільноту", + "select_a_community": "Обрати спільноту", + "create_community": "Створити спільноту", + "list_of_communities": "Список спільнот", + "send_message": "Відправити повідомлення", + "remove_community": "Видалити спільноту", + "number_of_communities_0": "{{count}} спільнота", + "number_of_communities_1": "{{count}} спільноти", + "number_of_communities_2": "{{count}} спільнот", + "community_reqs": "малі літери, символ підкреслення, без пробілів.", + "create_private_message": "Створити особисте повідомлення", + "send_secure_message": "Відправити безпечне повідомлення", + "message": "Повідомлення", + "edit": "редагувати", + "reply": "відповісти", + "more": "ще", + "post": "пост", + "remove_post": "Видалити пост", + "no_posts": "Немає постів.", + "create_a_post": "Створити пост", + "create_post": "Створити пост", + "number_of_posts_0": "{{count}} пост", + "number_of_posts_1": "{{count}} пости", + "number_of_posts_2": "{{count}} постів", + "posts": "Пости", + "subscribed_to_communities": "Відлідковувані <1>спільноти", + "trending_communities": "Відомі <1>спільноти", + "cancel": "Скасувати", + "appoint_as_admin": "призначити адміністратора", + "mark_as_unread": "позначити непрочитаним", + "delete_account_confirm": "Увага: ця дія незворотно знищить усю інформацію цього акаунта. Ведіть пароль для підтвердження." +} From 587731583f4660dee49c217f69dfc73fe006d6cf Mon Sep 17 00:00:00 2001 From: Andy Coupe Date: Tue, 30 Jun 2020 14:40:57 +0100 Subject: [PATCH 41/45] improve lighthouse best practices audit (#863) * improve safety of cross origin links * add additional safety for cross origin links * remove duplicates --- ui/src/components/comment-form.tsx | 1 + ui/src/components/community.tsx | 1 + ui/src/components/iframely-card.tsx | 8 +++++++- ui/src/components/inbox.tsx | 1 + ui/src/components/main.tsx | 2 ++ ui/src/components/post-form.tsx | 2 ++ ui/src/components/post-listing.tsx | 4 ++++ ui/src/components/private-message-form.tsx | 2 ++ ui/src/components/sort-select.tsx | 1 + ui/src/components/sponsors.tsx | 2 +- ui/src/components/user.tsx | 8 +++++++- 11 files changed, 29 insertions(+), 3 deletions(-) diff --git a/ui/src/components/comment-form.tsx b/ui/src/components/comment-form.tsx index 45974cc07..72a604b9f 100644 --- a/ui/src/components/comment-form.tsx +++ b/ui/src/components/comment-form.tsx @@ -185,6 +185,7 @@ export class CommentForm extends Component { target="_blank" class="d-inline-block float-right text-muted font-weight-bold" title={i18n.t('formatting_help')} + rel="noopener" > diff --git a/ui/src/components/community.tsx b/ui/src/components/community.tsx index 373d8f807..c193532b0 100644 --- a/ui/src/components/community.tsx +++ b/ui/src/components/community.tsx @@ -217,6 +217,7 @@ export class Community extends Component { }`} target="_blank" title="RSS" + rel="noopener" > # diff --git a/ui/src/components/iframely-card.tsx b/ui/src/components/iframely-card.tsx index 3a89023f5..0d3f43f69 100644 --- a/ui/src/components/iframely-card.tsx +++ b/ui/src/components/iframely-card.tsx @@ -44,7 +44,12 @@ export class IFramelyCard extends Component< ) : ( - + {post.embed_title} @@ -55,6 +60,7 @@ export class IFramelyCard extends Component< class="text-muted font-italic" target="_blank" href={post.url} + rel="noopener" > {new URL(post.url).hostname} diff --git a/ui/src/components/inbox.tsx b/ui/src/components/inbox.tsx index edbacd518..3b963a79f 100644 --- a/ui/src/components/inbox.tsx +++ b/ui/src/components/inbox.tsx @@ -109,6 +109,7 @@ export class Inbox extends Component { href={`/feeds/inbox/${UserService.Instance.auth}.xml`} target="_blank" title="RSS" + rel="noopener" > # diff --git a/ui/src/components/main.tsx b/ui/src/components/main.tsx index c168feb0c..4e04fe48c 100644 --- a/ui/src/components/main.tsx +++ b/ui/src/components/main.tsx @@ -452,6 +452,7 @@ export class Main extends Component { @@ -467,6 +468,7 @@ export class Main extends Component { }`} target="_blank" title="RSS" + rel="noopener" > # diff --git a/ui/src/components/post-form.tsx b/ui/src/components/post-form.tsx index 9f5aa363e..fdf6ebe47 100644 --- a/ui/src/components/post-form.tsx +++ b/ui/src/components/post-form.tsx @@ -222,6 +222,7 @@ export class PostForm extends Component { )}`} target="_blank" class="mr-2 d-inline-block float-right text-muted small font-weight-bold" + rel="noopener" > {i18n.t('archive_link')} @@ -302,6 +303,7 @@ export class PostForm extends Component { diff --git a/ui/src/components/post-listing.tsx b/ui/src/components/post-listing.tsx index b4cc4f928..3d6088427 100644 --- a/ui/src/components/post-listing.tsx +++ b/ui/src/components/post-listing.tsx @@ -197,6 +197,7 @@ export class PostListing extends Component { className="text-body" href={post.url} target="_blank" + rel="noopener" title={post.url} > {this.imgThumb(this.getImage(true))} @@ -227,6 +228,7 @@ export class PostListing extends Component { href={post.url} target="_blank" title={post.url} + rel="noopener" > @@ -303,6 +305,7 @@ export class PostListing extends Component { href={post.url} target="_blank" title={post.url} + rel="noopener" > {post.name} @@ -323,6 +326,7 @@ export class PostListing extends Component { href={post.url} target="_blank" title={post.url} + rel="noopener" > {hostname(post.url)} diff --git a/ui/src/components/private-message-form.tsx b/ui/src/components/private-message-form.tsx index 8cb7590e6..107823615 100644 --- a/ui/src/components/private-message-form.tsx +++ b/ui/src/components/private-message-form.tsx @@ -175,6 +175,7 @@ export class PrivateMessageForm extends Component< # @@ -236,6 +237,7 @@ export class PrivateMessageForm extends Component< diff --git a/ui/src/components/sort-select.tsx b/ui/src/components/sort-select.tsx index a6ce2ea98..05abdb20a 100644 --- a/ui/src/components/sort-select.tsx +++ b/ui/src/components/sort-select.tsx @@ -47,6 +47,7 @@ export class SortSelect extends Component { className="text-muted" href={sortingHelpUrl} target="_blank" + rel="noopener" title={i18n.t('sorting_help')} > diff --git a/ui/src/components/sponsors.tsx b/ui/src/components/sponsors.tsx index 7e5eed642..06e135248 100644 --- a/ui/src/components/sponsors.tsx +++ b/ui/src/components/sponsors.tsx @@ -89,7 +89,7 @@ export class Sponsors extends Component { {silver.map(s => (

- + 💎 {s.name}
diff --git a/ui/src/components/user.tsx b/ui/src/components/user.tsx index f635a1cd0..69914fd39 100644 --- a/ui/src/components/user.tsx +++ b/ui/src/components/user.tsx @@ -317,6 +317,7 @@ export class User extends Component { SortType[this.state.sort] }`} target="_blank" + rel="noopener" title="RSS" > @@ -463,6 +464,7 @@ export class User extends Component { !this.state.user.matrix_user_id && 'disabled' }`} target="_blank" + rel="noopener" href={`https://matrix.to/#/${this.state.user.matrix_user_id}`} > {i18n.t('send_secure_message')} @@ -586,7 +588,11 @@ export class User extends Component {
From 6d70067b1a1939dead07fa11ca913ded4f922d48 Mon Sep 17 00:00:00 2001 From: Ihor Horobets Date: Tue, 30 Jun 2020 19:43:02 +0300 Subject: [PATCH 42/45] Update uk.json --- ui/translations/uk.json | 270 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 269 insertions(+), 1 deletion(-) diff --git a/ui/translations/uk.json b/ui/translations/uk.json index 0967ef424..2db580a61 100644 --- a/ui/translations/uk.json +++ b/ui/translations/uk.json @@ -1 +1,269 @@ -{} +{ + "post": "Запис", + "remove_post": "Видалити запис", + "no_posts": "Немає записів.", + "create_a_post": "Створити запис", + "create_post": "Створити запис", + "number_of_posts_0": "{{count}} запис", + "number_of_posts_1": "{{count}} запис", + "number_of_posts_2": "{{count}} записів", + "posts": "Записи", + "related_posts": "Связані записи", + "comments": "Коментарі", + "number_of_comments_0": "{{count}} комментарів", + "number_of_comments_1": "{{count}} комментар", + "number_of_comments_2": "{{count}} комментарів", + "remove_comment": "Видалити коментар", + "communities": "Спільноти", + "users": "Користувачі", + "create_a_community": "Створити спільноту", + "create_community": "Створити спільноту", + "remove_community": "Видалити спільноту", + "subscribed_to_communities": "Підписані на <1>спільноти", + "trending_communities": "<1>Спільноти в тренді", + "list_of_communities": "Список спільнот", + "community_reqs": "маленькими буквами, підкреслення і без пробілів.", + "edit": "редагувати", + "reply": "відповісти", + "cancel": "Відміна", + "unlock": "розблокувати", + "lock": "заблокувати", + "link": "посилання", + "mod": "модератор", + "mods": "модератори", + "moderates": "Модерація", + "settings": "Налаштування", + "remove_as_mod": "зняти з модераторов", + "appoint_as_mod": "назначити модератором", + "modlog": "Модлог", + "admin": "адміністратор", + "admins": "адміністратори", + "remove_as_admin": "зняти з адміністраторів", + "appoint_as_admin": "назначити адміністратором", + "remove": "прибрати", + "removed": "прибрано модератором", + "locked": "заблоковоано", + "reason": "Причина", + "mark_as_read": "позначити як прочитані", + "mark_as_unread": "позначити як непрочитані", + "delete": "видалити", + "deleted": "видалено автором", + "restore": "відновити", + "ban": "забанити", + "ban_from_site": "забанити на сайті", + "unban": "розбанити", + "unban_from_site": "розбанити на сайті", + "save": "зберегти", + "unsave": "видалити зі збережених", + "create": "створити", + "username": "Ім'я користувача", + "email_or_username": "email або ім'я користувача", + "number_of_users_0": "{{count}} користувачів", + "number_of_users_1": "{{count}} користувач", + "number_of_users_2": "{{count}} користувачів", + "number_of_subscribers_0": "{{count}} підписників", + "number_of_subscribers_1": "{{count}} підписник", + "number_of_subscribers_2": "{{count}} підписників", + "number_of_points_0": "{{count}} балів", + "number_of_points_1": "{{count}} бала", + "number_of_points_2": "{{count}} балів", + "name": "Ім'я", + "title": "Назва", + "category": "Категорія", + "subscribers": "Підписники", + "both": "Обидва", + "saved": "Збережено", + "unsubscribe": "Відписатися", + "subscribe": "Підписатися", + "subscribed": "Підписані", + "prev": "Назад", + "next": "Далі", + "sidebar": "Бокова панель", + "sort_type": "Тип сортування", + "hot": "Популярне", + "new": "Нове", + "top_day": "Найкраще за день", + "week": "Неділя", + "month": "Місяць", + "year": "Рід", + "all": "Все", + "top": "Найкраще", + "api": "API", + "inbox": "Вхідні", + "inbox_for": "Вхідня повідомлення для <1>{{user}}", + "mark_all_as_read": "позначити все як прочитане", + "type": "Тип", + "unread": "Не прочитано", + "reply_sent": "Відповідь відправлено", + "search": "Пошук", + "overview": "Переглянути", + "view": "Перегляд", + "logout": "Вийти", + "login_sign_up": "Ввійти / Реєстрація", + "login": "Ввійти", + "sign_up": "Реєстрація", + "notifications_error": "Повідомленя в браузері недоступні для Вашого браузера. Спробуйте Firefox або Chromium.", + "unread_messages": "Непрочитані повідомлення", + "password": "Пароль", + "verify_password": "Повторіть пароль", + "email": "email", + "optional": "необов'язково", + "expires": "спливає", + "url": "URL", + "body": "Тіло", + "copy_suggested_title": "запропонована назва: {{title}}", + "community": "Спільнота", + "expand_here": "Розширити тут", + "subscribe_to_communities": "Підпишіться на деякі <1>спільноти.", + "chat": "Чат", + "no_results": "Немає результатів.", + "setup": "Встановлення", + "lemmy_instance_setup": "Встановлення інстансу Lemmy", + "setup_admin": "Налаштування адміністратора сайту", + "your_site": "ваш сайт", + "modified": "змінено", + "nsfw": "NSFW", + "show_nsfw": "Показувати NSFW-контент", + "sponsors": "Спонсори", + "sponsors_of_lemmy": "Спонсори Lemmy", + "sponsor_message": "Lemmy це безкоштовний, <1>відкритий софт, без реклами, монетизації чи венчурного капіталу. Назавжди. Ваші пожертви йдуть напряму на розвиток проетку. Дякую нищевказаним людям:", + "support_on_patreon": "Підтримати на Patreon", + "general_sponsors": "Генеральні спонсори - це ті, хто задонатив Lemmy від $10 до $39.", + "crypto": "Крипта", + "bitcoin": "Bitcoin", + "ethereum": "Ethereum", + "code": "Код", + "joined": "Приєдналися", + "powered_by": "Працює на", + "landing_0": "Lemmy - це <1>агрегатор посилань / альтернатива reddit, призначений для роботи в <2>федіверсі.<3>Це самодостаттня система, з обновлюваним коментарями, і це дуже маленька система (<4>~80 Кб). Федерація в мережі ActivityPub знаходиться в розробці. <5>Це <6>дуже рання бета-версія, і багато функцій відсутні або поломані. <7>Пропонувати нову функції або повідомляти про баги можна <8>тут.<9>Зроблено на <10>Rust, <11>Actix, <12>Inferno, <13>Typescript.", + "not_logged_in": "Не авторизовані.", + "community_ban": "Ви були заблоковані в цій спільноті.", + "site_ban": "Ви були заблоковані на данному сайті", + "couldnt_create_comment": "Не вдалося створити коментар.", + "couldnt_like_comment": "Не вдалося лайкнути коментар.", + "couldnt_update_comment": "Не вдалося обновити коментар.", + "couldnt_save_comment": "Не вдалося зберегти коментар.", + "no_comment_edit_allowed": "Неможливо відредагувати коментар.", + "no_post_edit_allowed": "Неможливо відредагувати запис.", + "no_community_edit_allowed": "Неможливо відредагувати спільноту.", + "couldnt_find_community": "Не вдалося знайти спільноту.", + "couldnt_update_community": "Не вдалося обновити спільноту.", + "community_already_exists": "Спільнота вже існує.", + "community_moderator_already_exists": "Модератор спільноти вже існує.", + "community_follower_already_exists": "Підписник спільноти вже існує.", + "community_user_already_banned": "Член спільноти вже забаниний..", + "couldnt_create_post": "Не вдалося створити запис.", + "couldnt_like_post": "Не вдалося лайкнути запис.", + "couldnt_find_post": "Не вдалося знайти запис.", + "couldnt_get_posts": "Не вдалося знайти записи", + "couldnt_update_post": "Не вдалося обновити запис", + "couldnt_save_post": "Не вдалося зберегти запис.", + "no_slurs": "Без образ.", + "not_an_admin": "Не адміністратор.", + "site_already_exists": "Сайт вже існує.", + "couldnt_update_site": "Не вдалося оновити сайт.", + "couldnt_find_that_username_or_email": "Не вдалося знайти ім'я користувача чи email.", + "password_incorrect": "Неправильний пароль.", + "passwords_dont_match": "Паролі не співпадають.", + "admin_already_created": "Пробачте, вже є адміністратор.", + "user_already_exists": "Користувач вже існує.", + "couldnt_update_user": "Не вдалося оновити користувача.", + "system_err_login": "Системна помилка. Спробуйте вийти та зайти назад.", + "create_private_message": "Створити приватне повідомлення", + "send_secure_message": "Послати зашифроване повідомлення", + "send_message": "Послати повідомлення", + "message": "Повідомлення", + "avatar": "Аватар", + "show_avatars": "Показувати аватари", + "formatting_help": "Допомога у верстанні тексту", + "sticky": "запкріпити", + "stickied": "закріплений", + "delete_account": "Видалити акаунт", + "delete_account_confirm": "Попередження: ця дія повністю знищить всі данні вашего акаунта. Введіть свій пароль для підтвердження.", + "docs": "Документація", + "replies": "Відповіді", + "mentions": "Згадування", + "message_sent": "Повідомлення відправлено", + "old_password": "Діючий пароль", + "forgot_password": "я забув(ла) пароль", + "reset_password_mail_sent": "Лист для відновлення пароля було надіслано.", + "private_message_disclaimer": "Повідомлення: Приватні повідомлення Lemmy на данний момент не зашифровані. Для безпечної комунікації створіть акаунт на <1>Riot.im.", + "send_notifications_to_email": "Посилати повідомлення на e-mail адресу", + "language": "Мова", + "browser_default": "Браузер по замовчуванню", + "open_registration": "Відрита реєстрація", + "registration_closed": "Реєстрацію закрито", + "recent_comments": "Недавні коментарі", + "cross_posts": "Це посилання було опубліковано в таких спільнотах:", + "cross_post": "Опубліковано в інших спільнотах", + "cross_posted_to": "Також опубліковано в: ", + "support_on_liberapay": "Підтримати на Librepay", + "donate_to_lemmy": "Підтримати Lemmy", + "transfer_community": "передати спільноту", + "yes": "так", + "no": "ні", + "preview": "Попередній перегляд", + "upload_image": "завантажити зображення", + "upload_avatar": "Завантажити аватар", + "messages": "Повідомлення", + "new_password": "Новий пароль", + "theme": "Візуальна тема", + "post_title_too_long": "Довжина назви перебільшує допустимий ліміт.", + "time": "Час", + "action": "Дія", + "view_source": "сирцевий код", + "more": "більше", + "sorting_help": "допомога по сортуванню", + "by": "від", + "number_of_communities_0": "{{count}} спільнот", + "number_of_communities_1": "{{count}} спільнот", + "number_of_communities_2": "{{count}} спільнот", + "creator": "автор", + "old": "Старе", + "to": "в", + "admin_settings": "Налаштування адміна", + "banned_users": "Забанані користувачі", + "support_on_open_collective": "Піддтримка на OpenCollective", + "site_saved": "Сайт збережено.", + "enable_nsfw": "Ввімкнути NSFW", + "donate": "Пожертвувати", + "unsticky": "відклеїти", + "site_config": "Конфігурація сайта", + "banned": "забанений", + "password_change": "Зміна паролю", + "no_email_setup": "На цьому сервері неправильно налаштовано email.", + "matrix_user_id": "Matrix айді користувача", + "are_you_sure": "ви впевненні?", + "archive_link": "активувати посилання", + "logged_in": "Ввійти в систему.", + "couldnt_get_comments": "Не вдалося отримати коментар.", + "from": "від", + "transfer_site": "трансфер сайту", + "show_context": "Показати контекст", + "email_already_exists": "E-mail вже існує.", + "couldnt_create_private_message": "Не вдалося отримати особисте повідомлення.", + "no_private_message_edit_allowed": "Не можна редагувати особисті повідомлення.", + "couldnt_update_private_message": "Не вдалося оновити особисте повідомлення.", + "block_leaving": "Ви впевненні що хочете покинути?", + "number_online_0": "{{count}} Користувачів онлайн", + "number_online_1": "{{count}} Користувач онлайн", + "number_online_2": "{{count}} Користувачів онлайн", + "invalid_community_name": "Неправильне ім'я користувача.", + "picture_deleted": "Зображення видалені.", + "click_to_delete_picture": "Натисніть, щоб видалити зображення.", + "downvotes_disabled": "Від'ємне голосування вимкненно.", + "upvote": "Голосувати за", + "enable_downvotes": "Ввімкнути від'ємне голосування", + "downvote": "Голосувати проти", + "number_of_upvotes_0": "{{count}} голосів за", + "number_of_upvotes_1": "{{count}} голос за", + "number_of_upvotes_2": "{{count}} голосів за", + "number_of_downvotes_0": "{{count}} голосів проти", + "number_of_downvotes_1": "{{count}} голос проти", + "number_of_downvotes_2": "{{count}} голосів проти", + "silver_sponsors": "Срібні спонсори - це ті, хто пожертував $40 для Lemmy.", + "monero": "Monero", + "emoji_picker": "Обрати емодзі", + "select_a_community": "Обрати спільноту", + "invalid_username": "Неправильне ім'я користувача." +} From 0d53c8dd0e37e53bc7432afca152c7d1c855476a Mon Sep 17 00:00:00 2001 From: Panos Alevropoulos Date: Tue, 30 Jun 2020 15:27:06 +0000 Subject: [PATCH 43/45] Translated using Weblate (Greek) Currently translated at 100.0% (249 of 249 strings) Translation: Lemmy/lemmy Translate-URL: http://weblate.yerbamate.dev/projects/lemmy/lemmy/el/ --- ui/translations/el.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ui/translations/el.json b/ui/translations/el.json index 7d7d14978..4dab7c884 100644 --- a/ui/translations/el.json +++ b/ui/translations/el.json @@ -102,7 +102,7 @@ "category": "Κατηγορία", "subscribers": "Εγγεγραμμένοι", "both": "Και οι δύο", - "saved": "Αποθηκεύτηκε", + "saved": "Αποθηκευμένα", "prev": "Προηγούμενο", "next": "Επόμενο", "sidebar": "Πλευρικό μενού", @@ -116,7 +116,7 @@ "mark_all_as_read": "επισήμανση όλων ως διαβασμένα", "type": "Είδος", "unread": "Μη διαβασμένα", - "url": "Ενιαίος Εντοπιστής Πόρων (URL)", + "url": "URL", "subscribed": "Εγγεγραμμένος", "week": "Εβδομάδα", "month": "Μήνας", @@ -151,8 +151,8 @@ "reset_password_mail_sent": "Μόλις στάλθηκε ένα μήνυμα ηλεκτρονικού ταχυδρομείου για την επαναφορά του κωδικού σας.", "password_change": "Αλλαγή κωδικού", "new_password": "Νέος κωδικός", - "no_email_setup": "Αυτός ο διακομιστής δεν έχει εγκαταστήσει σωστά το ηλεκτρονικό ταχυδρομείο.", - "email": "Ηλεκτρονικό ταχυδρομείο", + "no_email_setup": "Αυτός ο διακομιστής δεν έχει εγκαταστήσει σωστά το email.", + "email": "Email", "matrix_user_id": "Χρήστης Matrix", "private_message_disclaimer": "Προσοχή: τα προσωπικά μηνύματα στο Lemmy δεν είναι ασφαλή. Παρακαλούμε δημιουργήστε έναν λογαριασμό στο <1>Riot.im για ασφαλή επικοινωνία.", "send_notifications_to_email": "Αποστολή ειδοποιήσεων στη διεύθυνση ηλεκτρονικού ταχυδρομείου", @@ -200,7 +200,7 @@ "monero": "Monero", "code": "Κώδικας", "by": "από", - "to": "μέχρι", + "to": "προς", "from": "από", "transfer_community": "μεταφορά κοινότητας", "transfer_site": "μεταφορά ιστότοπου", From c239a5f0e5cc6c5f9fe243adbb79af49d4a0d6d4 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Wed, 1 Jul 2020 08:22:41 -0400 Subject: [PATCH 44/45] Fixing ban user bug. Fixes #876 --- server/src/api/user.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/api/user.rs b/server/src/api/user.rs index 0b6458e75..8f09ea5fc 100644 --- a/server/src/api/user.rs +++ b/server/src/api/user.rs @@ -710,7 +710,7 @@ impl Perform for Oper { return Err(APIError::err("not_an_admin").into()); } - match User_::ban_user(&conn, user_id, data.ban) { + match User_::ban_user(&conn, data.user_id, data.ban) { Ok(user) => user, Err(_e) => return Err(APIError::err("couldnt_update_user").into()), }; From 5c03e9e9ee53639c93e63253d99998a85b282ab8 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Wed, 1 Jul 2020 08:25:55 -0400 Subject: [PATCH 45/45] Version v0.7.6 --- ansible/VERSION | 2 +- docker/prod/docker-compose.yml | 2 +- server/src/version.rs | 2 +- ui/src/version.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ansible/VERSION b/ansible/VERSION index aed5a7df6..378c127dd 100644 --- a/ansible/VERSION +++ b/ansible/VERSION @@ -1 +1 @@ -v0.7.5 +v0.7.6 diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml index 5cb3f9adb..cd364a3cc 100644 --- a/docker/prod/docker-compose.yml +++ b/docker/prod/docker-compose.yml @@ -12,7 +12,7 @@ services: restart: always lemmy: - image: dessalines/lemmy:v0.7.5 + image: dessalines/lemmy:v0.7.6 ports: - "127.0.0.1:8536:8536" restart: always diff --git a/server/src/version.rs b/server/src/version.rs index 0970c1759..b72c81989 100644 --- a/server/src/version.rs +++ b/server/src/version.rs @@ -1 +1 @@ -pub const VERSION: &str = "v0.7.5"; +pub const VERSION: &str = "v0.7.6"; diff --git a/ui/src/version.ts b/ui/src/version.ts index 01d3be811..8ad27e7cc 100644 --- a/ui/src/version.ts +++ b/ui/src/version.ts @@ -1 +1 @@ -export const version: string = 'v0.7.5'; +export const version: string = 'v0.7.6';