diff --git a/install/package.json b/install/package.json
index f4bd300841..895b8b5be6 100644
--- a/install/package.json
+++ b/install/package.json
@@ -100,7 +100,7 @@
"nodebb-theme-slick": "https://github.com/pichalite/nodebb-theme-slick.git#webpack5",
"nodebb-theme-vanilla": "12.1.17",
"nodebb-widget-essentials": "https://github.com/nodebb/nodebb-widget-essentials.git#webpack5",
- "nodemailer": "6.7.2",
+ "nodemailer": "6.7.3",
"nprogress": "0.2.0",
"passport": "0.5.2",
"passport-http-bearer": "1.0.1",
@@ -125,7 +125,7 @@
"socket.io-adapter-cluster": "1.0.1",
"socket.io-client": "4.4.1",
"@socket.io/redis-adapter": "7.1.0",
- "sortablejs": "1.14.0",
+ "sortablejs": "1.15.0",
"spdx-license-list": "6.4.0",
"spider-detector": "2.0.0",
"textcomplete": "0.18.2",
diff --git a/public/language/sq-AL/error.json b/public/language/sq-AL/error.json
index 17e289e8bf..8ddc99b2c8 100644
--- a/public/language/sq-AL/error.json
+++ b/public/language/sq-AL/error.json
@@ -107,9 +107,9 @@
"already-bookmarked": "Ju e keni fiksuar tashmë këtë postim",
"already-unbookmarked": "Tashmë e keni hequr shënimin e këtij postimi",
"cant-ban-other-admins": "Nuk mund të bllokoni administratorë të tjerë.",
- "cant-mute-other-admins": "You can't mute other admins!",
- "user-muted-for-hours": "You have been muted, you will be able to post in %1 hour(s)",
- "user-muted-for-minutes": "You have been muted, you will be able to post in %1 minute(s)",
+ "cant-mute-other-admins": "Ju nuk mund të bëni mute administratorët e tjerë",
+ "user-muted-for-hours": "Ju jeni bërë mute, dhe do të mundeni të postoni në %1 (orë)",
+ "user-muted-for-minutes": "Ju jeni bërë mute, dhe do të mundeni të postoni në %1 minutë(a)",
"cant-make-banned-users-admin": "Ju nuk mund t'i bëni përdoruesit e ndaluar administrator.",
"cant-remove-last-admin": "Ju jeni i vetmi administrator. Shtoni një përdorues tjetër si administrator përpara se të hiqni veten si administrator",
"account-deletion-disabled": "Fshirja e llogarisë është çaktivizuar",
@@ -157,22 +157,22 @@
"already-voting-for-this-post": "Ju keni votuar tashmë për këtë postim.",
"reputation-system-disabled": "Sistemi i reputacionit është i çaktivizuar.",
"downvoting-disabled": "Kundërvotimi është i çaktivizuar",
- "not-enough-reputation-to-upvote": "You need %1 reputation to upvote",
- "not-enough-reputation-to-downvote": "You need %1 reputation to downvote",
- "not-enough-reputation-to-flag": "You need %1 reputation to flag this post",
- "not-enough-reputation-min-rep-website": "You need %1 reputation to add a website",
- "not-enough-reputation-min-rep-aboutme": "You need %1 reputation to add an about me",
- "not-enough-reputation-min-rep-signature": "You need %1 reputation to add a signature",
- "not-enough-reputation-min-rep-profile-picture": "You need %1 reputation to add a profile picture",
- "not-enough-reputation-min-rep-cover-picture": "You need %1 reputation to add a cover picture",
+ "not-enough-reputation-to-upvote": "Ju nevojitet %1 reputacion për të votuar pro",
+ "not-enough-reputation-to-downvote": "Ju nevojitet %1 reputacion për të votuar kundër",
+ "not-enough-reputation-to-flag": "Ju nevojitet %1 reputacion për të raportuar postimin",
+ "not-enough-reputation-min-rep-website": "Ju nevojitet %1 reputacion për të shtuar një faqe interneti",
+ "not-enough-reputation-min-rep-aboutme": "Ju nevojitet %1 reputacion për të shtuar një seksion 'rreth meje'",
+ "not-enough-reputation-min-rep-signature": "Ju nevojitet %1 reputacion për të shtuar një firmë",
+ "not-enough-reputation-min-rep-profile-picture": "Ju nevojitet %1 reputacion për të shtuar një foto profili",
+ "not-enough-reputation-min-rep-cover-picture": "Ju nevojitet %1 reputacion për të shtuar një foto kopertine",
"post-already-flagged": "Ju tashmë e keni raportuar këtë postim",
"user-already-flagged": "Ju e keni raportuar tashmë këtë përdorues",
"post-flagged-too-many-times": "Ky postim është raportuar tashmë nga të tjerë",
"user-flagged-too-many-times": "Ky përdorues tashmë është raportuar nga të tjerë",
"cant-flag-privileged": "Nuk ju lejohet të raportoni profilet ose përmbajtjen e përdoruesve të privilegjuar (moderatorët/moderatorët globalë/administratorët)",
"self-vote": "Ju nuk mund të votoni për postimin tuaj",
- "too-many-upvotes-today": "You can only upvote %1 times a day",
- "too-many-upvotes-today-user": "You can only upvote a user %1 times a day",
+ "too-many-upvotes-today": "Ju mund të votoni pro vetëm %1 herë në ditë",
+ "too-many-upvotes-today-user": "Ju mund të votoni një user %1 herë në ditë",
"too-many-downvotes-today": "Mund të votosh vetëm %1 herë në ditë",
"too-many-downvotes-today-user": "Ju mund të votoni kundër një përdoruesi vetëm %1 herë në ditë",
"reload-failed": "NodeBB hasi në një problem gjatë ringarkimit: \"%1\". NodeBB do të vazhdojë t'i shërbejë aseteve ekzistuese të klientit, megjithëse duhet të zhbëni atë që keni bërë pak para ringarkimit.",
diff --git a/public/language/sq-AL/flags.json b/public/language/sq-AL/flags.json
index 8f912a8170..3cf0fa22fe 100644
--- a/public/language/sq-AL/flags.json
+++ b/public/language/sq-AL/flags.json
@@ -1,5 +1,5 @@
{
- "state": "gjendja",
+ "state": "Gjendja",
"reports": "Raportet",
"first-reported": "Raportuar për herë të parë",
"no-flags": "Juhu! Nuk u gjet asnje gabim.",
@@ -7,11 +7,11 @@
"update": "Përditëso",
"updated": "I përditësuar",
"resolved": "E zgjidhur",
- "target-purged": "Përmbajtja të cilës i referohet ky flamur është pastruar dhe nuk disponohet më.",
+ "target-purged": "Përmbajtja të cilës i referohet ky raportim është fshire dhe nuk disponohet më.",
- "graph-label": "Flamujt e Përditshëm",
+ "graph-label": "Raportimet e Përditshëme",
"quick-filters": "Filtra të shpejtë",
- "filter-active": "Ka një ose më shumë filtra aktivë në këtë listë flamujsh",
+ "filter-active": "Ka një ose më shumë filtra aktivë në këtë listë raportimesh",
"filter-reset": "Hiqni filtrat",
"filters": "Opsionet e filtrit",
"filter-reporterId": "UID e reporterit",
@@ -20,7 +20,7 @@
"filter-type-all": "E gjithë Përmbajtja",
"filter-type-post": "Postim",
"filter-type-user": "Përdorues",
- "filter-state": "gjendja",
+ "filter-state": "Gjendja",
"filter-assignee": "Përfituesi UID",
"filter-cid": "Kategoria",
"filter-quick-mine": "Më është caktuar mua",
@@ -30,26 +30,26 @@
"fewer-filters": "Më pak filtra",
"quick-actions": "Veprimet e shpejta",
- "flagged-user": "Përdorues i shënuar",
+ "flagged-user": "Përdorues i raportuar",
"view-profile": "Shiko Profilin",
"start-new-chat": "Filloni një bisedë të re",
- "go-to-target": "Shiko objektivin e flamurit",
- "assign-to-me": "Cakto për mua",
+ "go-to-target": "Shiko objektivin e raportimit",
+ "assign-to-me": "Ma cakto mua",
"delete-post": "Fshij postimin",
- "purge-post": "Pastrimi i postës",
+ "purge-post": "Pastro postimin",
"restore-post": "Rivendos postimin",
"user-view": "Shiko Profilin",
"user-edit": "Rregullo Profilin",
- "notes": "Shënime flamuri",
+ "notes": "Shënime nga raportimet",
"add-note": "Shtoni shënim",
"no-notes": "Nuk ka shënime të përbashkëta.",
- "delete-note-confirm": "Je i sigurt që dëshiron ta fshish këtë shënim flamuri?",
+ "delete-note-confirm": "Je i sigurt që dëshiron ta fshish këtë shënim?",
"note-added": "Shënimi u shtua",
"note-deleted": "Shënimi u fshi",
- "history": "Llogaria & Historia e Flamurit",
+ "history": "Llogaria & Historia e raportimeve",
"no-history": "Nuk ka histori flamuri.",
"state-all": "Të gjitha gjendjet",
@@ -79,7 +79,7 @@
"modal-submit-success": "Përmbajtja është raportuar për moderim",
"bulk-actions": "Veprimet me shumicë",
- "bulk-resolve": "Zgjidhja e flamurit(eve)",
+ "bulk-resolve": "Zgjidhja e raportim(eve)",
"bulk-success": "%1 flamujt u përditësuan",
"flagged-timeago-readable": "I shënuar 1 (% 2)",
"auto-flagged": "[Auto Flagged] Received %1 downvotes."
diff --git a/public/language/sq-AL/global.json b/public/language/sq-AL/global.json
index 79ca3e1078..f2db43b2c2 100644
--- a/public/language/sq-AL/global.json
+++ b/public/language/sq-AL/global.json
@@ -1,5 +1,5 @@
{
- "home": "Kreu",
+ "home": "Kryefaqja",
"search": "Kërko",
"buttons.close": "Mbyll",
"403.title": "Hyrja e ndaluar",
@@ -10,13 +10,13 @@
"500.title": "Gabim i brendshëm.",
"500.message": "Ups! Diçka nuk shkoi mirë!",
"400.title": "Bad Request.",
- "400.message": "Me sa duket kjo lidhje është jo e sigurt, ju lutemi kontrolloni dhe provoni përsëri. Përndryshe, 1 kthehu në faqen kryesore.",
+ "400.message": "Me sa duket kjo lidhje është jo e sigurt, ju lutemi kontrolloni dhe provoni përsëri. Përndryshe, kthehuni në 1faqen kryesore1.",
"register": "Regjistrohu",
"login": "Hyr",
"please_log_in": "Ju lutemi Identifikohu",
"logout": "Dil",
"posting_restriction_info": "Postimi aktualisht është i kufizuar vetëm për anëtarët e regjistruar, klikoni këtu për t'u identifikuar.",
- "welcome_back": "Mirëse u ktheve",
+ "welcome_back": "Mirë se u kthyet",
"you_have_successfully_logged_in": "Ju keni hyrë me sukses",
"save_changes": "Ruaj ndryshimet",
"save": "Ruaj",
@@ -24,15 +24,15 @@
"pagination": "Pagination",
"pagination.out_of": "%1 out of %2",
"pagination.enter_index": "Go to post index",
- "header.admin": "Administrator",
+ "header.admin": "Administratoret",
"header.categories": "Kategoritë",
"header.recent": "Të fundit",
"header.unread": "Të palexuara",
- "header.tags": "Etiketa",
- "header.popular": "I kërkuar",
- "header.top": "Kryesor",
- "header.users": "Perdorues",
- "header.groups": "Grupe",
+ "header.tags": "Etiketimet",
+ "header.popular": "Më të kërkuarat",
+ "header.top": "Kryesoret",
+ "header.users": "Perdoruesit",
+ "header.groups": "Grupet",
"header.chats": "Bisedat",
"header.notifications": "Njoftime",
"header.search": "Kërko",
@@ -40,7 +40,7 @@
"header.navigation": "Lundrim",
"notifications.loading": "Njoftimet po ngarkohen",
"chats.loading": "Po ngarkohen bisedat",
- "motd.welcome": "Mirë se vini në NodeBB, platformën e diskutimit të së ardhmes.",
+ "motd.welcome": "Mirë se vini në VIAL, platformën e diskutimit të së ardhmes.",
"previouspage": "Faqja e meparshme",
"nextpage": "Faqja tjetër",
"alert.success": "Sukses",
@@ -55,17 +55,17 @@
"topics": "Temat",
"posts": "Postimet",
"x-posts": "%1 postime",
- "best": "Më e mira",
+ "best": "Më të mirat",
"controversial": "E diskutueshme",
"votes": "Votat",
"x-votes": "%1 vota",
"voters": "Votuesit",
- "upvoters": "Votuesit e lartë",
+ "upvoters": "Votuesit",
"upvoted": "Votuar për",
"downvoters": "Kundërvotuesit",
"downvoted": "Kundërvotoi",
- "views": "Pamje",
- "posters": "Postera",
+ "views": "Shikueshmeri",
+ "posters": "Banera",
"reputation": "Reputacioni",
"lastpost": "Postimi i fundit",
"firstpost": "Postimi i parë",
@@ -116,7 +116,7 @@
"unsaved-changes": "Ju keni ndryshime të paruajtura. Jeni i sigurt që dëshironi të largoheni?",
"reconnecting-message": "Me sa duket lidhja jote me %1 ka humbur, ju lutemi prisni derisa të përpiqemi të rilidhemi.",
"play": "Luaj",
- "cookies.message": "Kjo faqe interneti përdor cookie për të siguruar që ju të keni përvojën më të mirë në faqen tonë të internetit.",
+ "cookies.message": "Kjo faqe interneti përdor cookie për tu siguruar që ju të keni përvojën më të mirë në VIAL.",
"cookies.accept": "E kuptova!",
"cookies.learn_more": "Mëso më shumë",
"edited": "U rregullua",
diff --git a/public/language/sq-AL/groups.json b/public/language/sq-AL/groups.json
index 01ed45e4db..8750e76f13 100644
--- a/public/language/sq-AL/groups.json
+++ b/public/language/sq-AL/groups.json
@@ -1,7 +1,7 @@
{
"groups": "Grupe",
"view_group": "Shiko grupin",
- "owner": "Pronari i grupit",
+ "owner": "Zotuesi i grupit",
"new_group": "Krijo një grup të ri",
"no_groups_found": "Nuk ka grupe për të parë",
"pending.accept": "Pranoje",
@@ -38,7 +38,7 @@
"details.member-post-cids": "ID-të e kategorive për të shfaqur postimet nga",
"details.badge_preview": "Pamja paraprake e medaljes",
"details.change_icon": "Ndrysho ikonën",
- "details.change_label_colour": "Ndrysho ngjyrën e etiketës",
+ "details.change_label_colour": "Ndrysho ngjyrën e kontureve",
"details.change_text_colour": "Ndrysho ngjyrën e tekstit",
"details.badge_text": "Teksti i medaljes",
"details.userTitleEnabled": "Shfaq medaljen",
@@ -57,8 +57,8 @@
"membership.leave.notification_title": "% 1 ka lënë grupin % 2",
"membership.reject": "Refuzoj",
"new-group.group_name": "Emri i grupit:",
- "upload-group-cover": "Ngarko kopertinën e grupit",
+ "upload-group-cover": "Ngarko foton e coverit për grupin",
"bulk-invite-instructions": "Futni një listë të emrave të përdoruesve të ndarë me presje për t'i ftuar në këtë grup",
"bulk-invite": "Ftesë me shumicë",
- "remove_group_cover_confirm": "Jeni i sigurt që dëshironi të hiqni foton e kopertinës?"
+ "remove_group_cover_confirm": "Jeni i sigurt që dëshironi ta hiqni foton e coverit?"
}
\ No newline at end of file
diff --git a/public/language/sq-AL/ip-blacklist.json b/public/language/sq-AL/ip-blacklist.json
index 26f0633891..ce4850672b 100644
--- a/public/language/sq-AL/ip-blacklist.json
+++ b/public/language/sq-AL/ip-blacklist.json
@@ -1,6 +1,6 @@
{
"lead": "Konfiguro listën e zezë të IP-së këtu.",
- "description": "Herë pas here, një ndalim i llogarisë së përdoruesit nuk është një pengesë e mjaftueshme. Herë të tjera, kufizimi i aksesit në forum në një IP të caktuar ose një sërë IP-sh është mënyra më e mirë për të mbrojtur një forum. Në këto skenarë, ju mund të shtoni adresa IP problematike ose blloqe të tëra CIDR në këtë listë të zezë dhe ato do të parandalohen nga hyrja ose regjistrimi i një llogarie të re.",
+ "description": "Herë pas here, një bllokim i llogarisë së përdoruesit nuk është një pengesë e mjaftueshme. Nganjëhere, kufizimi i aksesit në forum në një IP të caktuar ose një sërë IP-sh është mënyra më e mirë për të mbrojtur një forum. Në këto skenarë, ju mund të shtoni adresa IP problematike ose blloqe të tëra CIDR në këtë listë të zezë dhe ato do të parandalohen nga hyrja ose regjistrimi i një llogarie të re.",
"active-rules": "Rregullat aktive",
"validate": "Vërteto listën e zezë",
"apply": "Aplikoni listën e zezë",
diff --git a/public/language/sq-AL/login.json b/public/language/sq-AL/login.json
index 5f4553c90d..e1b9a44bbf 100644
--- a/public/language/sq-AL/login.json
+++ b/public/language/sq-AL/login.json
@@ -1,8 +1,8 @@
{
"username-email": "Emri i përdoruesit / Email",
"username": "Emri i përdoruesit",
- "remember_me": "Më mban mend?",
- "forgot_password": "Harrove fjalëkalimin?",
+ "remember_me": "Më mbaj mend?",
+ "forgot_password": "Harruat fjalëkalimin?",
"alternative_logins": "Hyrjet alternative",
"failed_login_attempt": "Identifikimi i pasuksesshëm",
"login_successful": "Ju keni hyrë me sukses ne linjë!",
diff --git a/public/language/sq-AL/modules.json b/public/language/sq-AL/modules.json
index b45097acfd..1c63de727b 100644
--- a/public/language/sq-AL/modules.json
+++ b/public/language/sq-AL/modules.json
@@ -8,23 +8,23 @@
"chat.user_has_messaged_you": "%1 ju ka dërguar mesazh.",
"chat.see_all": "Shiko të gjitha bisedat",
"chat.mark_all_read": "Shënoni të gjitha bisedat e lexuara",
- "chat.no-messages": "Ju lutemi zgjidhni një marrës për të parë historikun e mesazheve të bisedës",
- "chat.no-users-in-room": "Jo përdorues në këtë dhomë",
+ "chat.no-messages": "Ju lutemi zgjidhni një person për të parë historikun e mesazheve të bisedës",
+ "chat.no-users-in-room": "Jo përdorues në këtë hapësirë",
"chat.recent-chats": "Bisedat e fundit",
"chat.contacts": "Kontaktet",
"chat.message-history": "Historia e mesazheve",
"chat.message-deleted": "Mesazh i fshirë",
"chat.options": "Opsionet e bisedës",
- "chat.pop-out": "Pop out chat",
+ "chat.pop-out": "Veco bisedën",
"chat.minimize": "Minimizo",
- "chat.maximize": "Maksimizoj",
+ "chat.maximize": "Maksimizo",
"chat.seven_days": "7 Ditë",
"chat.thirty_days": "30 Ditë",
"chat.three_months": "3 Muaj",
"chat.delete_message_confirm": "A je i sigurt që dëshiron ta fshihni këtë mesazh?",
- "chat.retrieving-users": "Po merr përdorues...",
- "chat.manage-room": "Menaxho dhomën e bisedave",
- "chat.add-user-help": "Kërkoni për përdoruesit këtu. Kur zgjidhet, përdoruesi do të shtohet në bisedë. Përdoruesi i ri nuk do të jetë në gjendje të shohë mesazhet e bisedës të shkruara përpara se të shtoheshin në bisedë. Vetëm krijuesit e dhomave () mund të heqin përdoruesit nga dhomat e bisedës.",
+ "chat.retrieving-users": "Duek marre perdoruesit...",
+ "chat.manage-room": "Menaxho hapesiren e bisedave",
+ "chat.add-user-help": "Kërkoni për përdoruesit këtu. Kur zgjidhet, përdoruesi do të shtohet në bisedë. Përdoruesi i ri nuk do të jetë në gjendje të shohë mesazhet e bisedës të shkruara përpara se të shtoheshin në bisedë. Vetëm krijuesit e bisedes () mund të heqin përdoruesit nga hapesirat e bisedës.",
"chat.confirm-chat-with-dnd-user": "Ky përdorues ka vendosur statusin e tij në DnD (Mos shqetëso). Dëshiron ende të bisedosh me ta?",
"chat.rename-room": "Riemërto dhomën",
"chat.rename-placeholder": "Shkruani emrin e dhomës tuaj këtu",
@@ -33,31 +33,31 @@
"chat.leave-prompt": "Jeni i sigurt që dëshironi të largoheni nga kjo bisedë?",
"chat.leave-help": "Largimi nga kjo bisedë do t'ju heqë nga korrespondenca e ardhshme në këtë bisedë. Nëse do të rishtoheni në të ardhmen, nuk do të shihni asnjë histori bisede nga para ribashkimit.",
"chat.in-room": "Në këtë dhomë",
- "chat.kick": "Godit",
+ "chat.kick": "Largo",
"chat.show-ip": "Shfaq IP",
- "chat.owner": "Pronari i dhomës",
- "chat.system.user-join": "%1 i është bashkuar dhomës",
- "chat.system.user-leave": "%1 ka dalë nga dhoma",
- "chat.system.room-rename": "%2 e ka riemërtuar këtë dhomë: %1",
+ "chat.owner": "Administratori i hapesires",
+ "chat.system.user-join": "%1 i është bashkuar hapësirës",
+ "chat.system.user-leave": "%1 ka dalë nga hapësira",
+ "chat.system.room-rename": "%2 e ka riemërtuar këtë hapësirë: %1",
"composer.compose": "Harto",
"composer.show_preview": "Shiko rezultatin",
"composer.hide_preview": "Mbulo rezultatin",
"composer.user_said_in": "% 1 tha në % 2:",
"composer.user_said": "% 1 tha:",
"composer.discard": "Jeni i sigurt që dëshironi ta hiqni këtë postim?",
- "composer.submit_and_lock": "Paraqisni dhe Bllokoni",
+ "composer.submit_and_lock": "Dorëzo dhe izolo",
"composer.toggle_dropdown": "Aktivizo Dropdown",
"composer.uploading": "Ngarkimi %1",
"composer.formatting.bold": "Bold",
"composer.formatting.italic": "Italic",
- "composer.formatting.list": "Listo",
- "composer.formatting.strikethrough": "Strikethrough",
+ "composer.formatting.list": "List",
+ "composer.formatting.strikethrough": "Kalo nëpërmjet",
"composer.formatting.code": "Kodi",
"composer.formatting.link": "Linku",
"composer.formatting.picture": "Linku i imazhit",
"composer.upload-picture": "Ngarko imazhin",
"composer.upload-file": "Ngarko dokumentin",
- "composer.zen_mode": "Zen Mode",
+ "composer.zen_mode": "Modeli Zen ",
"composer.select_category": "Zgjidh nje kategori",
"composer.textarea.placeholder": "Futni përmbajtjen tuaj të postimit këtu, tërhiqni dhe lëshoni imazhet",
"composer.schedule-for": "Programoni temën për",
@@ -70,13 +70,13 @@
"bootbox.confirm": "Konfirmo ",
"bootbox.submit": "Paraqes",
"bootbox.send": "Dërgo",
- "cover.dragging_title": "Pozicionimi i fotos së kopertinës",
- "cover.dragging_message": "Zvarritni foton e kopertinës në pozicionin e dëshiruar dhe klikoni \"Ruaj\"",
- "cover.saved": "Imazhi dhe pozicioni i fotos së kopertinës u ruajtën",
+ "cover.dragging_title": "Pozicionimi i fotos së coverit",
+ "cover.dragging_message": "Zhvendosni foton e coverit në pozicionin e dëshiruar dhe klikoni \"Ruaj\"",
+ "cover.saved": "Imazhi dhe pozicioni i fotos së coverit u ruajtën",
"thumbs.modal.title": "Menaxho fotografitë e temave",
- "thumbs.modal.no-thumbs": "No thumbnails found.",
- "thumbs.modal.resize-note": "Note: This forum is configured to resize topic thumbnails down to a maximum width of %1px",
- "thumbs.modal.add": "Add thumbnail",
- "thumbs.modal.remove": "Remove thumbnail",
- "thumbs.modal.confirm-remove": "Are you sure you want to remove this thumbnail?"
+ "thumbs.modal.no-thumbs": "Nuk u gjeten informacione.",
+ "thumbs.modal.resize-note": "1Shenim1: Ky forum eshte konfiguruar per te ndryshuar permasat e gjeresise te materialit maksimalisht ne 1%1p",
+ "thumbs.modal.add": "Shto informacion",
+ "thumbs.modal.remove": "Largo informacionin",
+ "thumbs.modal.confirm-remove": "Jeni te sigurte qe doni ta fshini kete informacion?"
}
\ No newline at end of file
diff --git a/public/language/sq-AL/notifications.json b/public/language/sq-AL/notifications.json
index a917d57111..01537cb3b9 100644
--- a/public/language/sq-AL/notifications.json
+++ b/public/language/sq-AL/notifications.json
@@ -2,9 +2,9 @@
"title": "Njoftimet",
"no_notifs": "Ju nuk keni njoftime te reja",
"see_all": "Shikoni të gjitha njoftimet",
- "mark_all_read": "Shëno të gjitha njoftimet të lexuara",
- "back_to_home": "Mbrapa në %1",
- "outgoing_link": "Lidhje dalëse",
+ "mark_all_read": "Shëno të gjitha njoftimet si të lexuara",
+ "back_to_home": "Shko mbrapa në %1",
+ "outgoing_link": "Link dalës",
"outgoing_link_message": "Tani po largoheni nga %1",
"continue_to": "Vazhdoni tek %1",
"return_to": "Kthehuni në %1",
@@ -14,24 +14,24 @@
"topics": "Temat",
"replies": "Përgjigjet",
"chat": "Bisedat",
- "group-chat": "Bisedat Grup",
+ "group-chat": "Bisedat në Grup",
"follows": "Ndjek",
"upvote": "Votat pro",
- "new-flags": "New Flags",
- "my-flags": "Flags assigned to me",
- "bans": "Bans",
+ "new-flags": "Raportim i ri",
+ "my-flags": "Raportimet u kaluan tek unë",
+ "bans": "Të bllokuar",
"new_message_from": "Mesazh i ri nga%1",
"upvoted_your_post_in": "%1ka votuar në postin tënd në %2.",
"upvoted_your_post_in_dual": "%1 dhe % 2 kanë votuar për postimin tuaj në %3.",
"upvoted_your_post_in_multiple": "%1 dhe %2 të tjerë kanë votuar për postimin tuaj në %3.",
"moved_your_post": "%1 e ka zhvendosur postimin tuaj në %2",
"moved_your_topic": "% 1 ka lëvizur % 2",
- "user_flagged_post_in": "%1 flagged a post in %2",
- "user_flagged_post_in_dual": "%1 and %2 flagged a post in %3",
- "user_flagged_post_in_multiple": "%1 and %2 others flagged a post in %3",
- "user_flagged_user": "%1 flagged a user profile (%2)",
- "user_flagged_user_dual": "%1 and %2 flagged a user profile (%3)",
- "user_flagged_user_multiple": "%1 and %2 others flagged a user profile (%3)",
+ "user_flagged_post_in": "%1 ka raportuar një postim në %2",
+ "user_flagged_post_in_dual": "%1 dhe %2 raportuam një postim në %3",
+ "user_flagged_post_in_multiple": "%1 dhe %2 dhe disa të tjerë raportuan një postim në %3",
+ "user_flagged_user": "%1 ka raportuar një profil përdoruesi (%2)",
+ "user_flagged_user_dual": "%1 dhe %2 kane raportuar një profil përdoruesi (%3)",
+ "user_flagged_user_multiple": "%1 dhe %2 dhe disa të tjerë kanë raportuar një profil përdoruesi (%3)",
"user_posted_to": "%1 ka postuar një përgjigje në: 2 %2",
"user_posted_to_dual": "%1 dhe %2 kanë postuar përgjigje në: %3",
"user_posted_to_multiple": "%1 dhe %2 të tjerë kanë postuar përgjigje në: %3",
@@ -40,21 +40,21 @@
"user_started_following_you": "%1 filloi t'ju ndjekë.",
"user_started_following_you_dual": "% 1 dhe % 2 filluan t'ju ndjekin.",
"user_started_following_you_multiple": "%1 dhe %2 të tjerë filluan t'ju ndjekin.",
- "new_register": "%1 dërgoi një kërkesë regjistrimi.",
- "new_register_multiple": "Ka %1 kërkesa regjistrimi në pritje të shqyrtimit.",
- "flag_assigned_to_you": "Flag %1 has been assigned to you",
+ "new_register": "%1 dërgoi një kërkesë për regjistrim.",
+ "new_register_multiple": "Ka %1 kërkesa regjistrimi në pritje për shqyrtimit.",
+ "flag_assigned_to_you": " Raportimi %1 ju është ngarkuar juve",
"post_awaiting_review": "Postimi në pritje të rishikimit",
- "profile-exported": "%1 profile exported, click to download",
- "posts-exported": "%1 posts exported, click to download",
- "uploads-exported": "%1 uploads exported, click to download",
+ "profile-exported": "%1 profile u eksportuan, kliko për ta shkarkaur",
+ "posts-exported": "%1 postime u eksportuan, kliko per ta shkarkaur",
+ "uploads-exported": "%1 ngarkime u eksportuan, kliko per ta shkarkaur",
"users-csv-exported": "Csv e përdoruesve u eksportua, klikoni për ta shkarkuar",
"post-queue-accepted": "Postimi juaj në radhë është pranuar. Klikoni këtu për të parë postimin tuaj.",
- "post-queue-rejected": "Postimi juaj në pritje është refuzuar.",
- "post-queue-notify": "Queued post received a notification:
\"%1\"",
+ "post-queue-rejected": "Postimi juaj në pritje nuk është pranuar.",
+ "post-queue-notify": "Ka nje njoftim te ri per postimin ne pritje: ''%1''",
"email-confirmed": "Email-i u konfirmua",
"email-confirmed-message": "Faleminderit për vërtetimin e emailit tuaj. Llogaria juaj tani është plotësisht e aktivizuar.",
"email-confirm-error-message": "Pati një problem me vërtetimin e adresës tuaj të emailit. Ndoshta kodi ishte i pavlefshëm ose ka skaduar.",
- "email-confirm-sent": "Email konfirmimi u dërgua.",
+ "email-confirm-sent": "Email i konfirmimit u dërgua.",
"none": "Asnjë",
"notification_only": "Vetëm njoftime",
"email_only": "Vetem email",
@@ -71,6 +71,6 @@
"notificationType_group-request-membership": "Kur dikush kërkon t'i bashkohet një grupi që ju zotëroni",
"notificationType_new-register": "Kur dikush shtohet në radhën e regjistrimit",
"notificationType_post-queue": "Kur një postim i ri është në radhë",
- "notificationType_new-post-flag": "When a post is flagged",
- "notificationType_new-user-flag": "When a user is flagged"
+ "notificationType_new-post-flag": "Kur një postim është raportuar",
+ "notificationType_new-user-flag": "Kur një përdorues është raportuar"
}
\ No newline at end of file
diff --git a/public/language/sq-AL/pages.json b/public/language/sq-AL/pages.json
index 7fffb1ca00..4de17c5eb8 100644
--- a/public/language/sq-AL/pages.json
+++ b/public/language/sq-AL/pages.json
@@ -22,7 +22,7 @@
"users/most-flags": "Shumica e përdoruesve të shënuar",
"users/search": "Kërkimi i përdoruesit",
"notifications": "Njoftimet",
- "tags": "Etiketat",
+ "tags": "Etiketimet",
"tag": "Temat e etiketuara nën "%1"",
"register": "Regjistroni një llogari",
"registration-complete": "Regjistrimi ka përfunduar",
@@ -51,15 +51,15 @@
"account/settings": "Cilësimet e përdoruesit",
"account/watched": "Tema e para nga %1",
"account/ignored": "Temat e shmangura nga %1",
- "account/upvoted": "Posts upvoted by %1",
- "account/downvoted": "Posts downvoted by %1",
+ "account/upvoted": "Postimi u votua lartë nga %1",
+ "account/downvoted": "Postimi u votua poshtë nga %1",
"account/best": "Postimet më të mira krijuar nga %1",
"account/controversial": "Postet e dikutuara krijuar nga %1",
"account/blocks": "Përdoruesit e bllokuara për %1",
"account/uploads": "Ngarkimet e %1",
"account/sessions": "Seancat e hyrjes",
"confirm": "Email-i u konfirmua",
- "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.",
- "maintenance.messageIntro": "Additionally, the administrator has left this message:",
- "throttled.text": "%1 is currently unavailable due to excessive load. Please come back another time."
+ "maintenance.text": "%1 po i nënshtrohet mirëmbajtjes. Të lutem kthehu një herë tjetër.",
+ "maintenance.messageIntro": "Për më tepër, administratori ka lënë këtë mesazh:",
+ "throttled.text": "%1 është aktualisht i padisponueshëm për shkak të ngarkesës së tepërt. Të lutem kthehu një herë tjetër."
}
\ No newline at end of file
diff --git a/public/language/sq-AL/topic.json b/public/language/sq-AL/topic.json
index 2001d759ed..f731655f0a 100644
--- a/public/language/sq-AL/topic.json
+++ b/public/language/sq-AL/topic.json
@@ -18,44 +18,44 @@
"reply-as-topic": "Përgjigju si temë",
"guest-login-reply": "Identifikohu për t'iu përgjigjur",
"login-to-view": "🔒 Identifikohu për ta parë",
- "edit": "Redakto",
+ "edit": "Edito",
"delete": "Fshij ",
"delete-event": "Fshij eventin",
"delete-event-confirm": "Je i sigurt që dëshiron ta fshish këtë ngjarje?",
"purge": "Pastrim",
- "restore": "Kthej",
+ "restore": "Rikthe",
"move": "Lëvizni",
"change-owner": "Ndrysho pronarin",
- "fork": "Fork",
+ "fork": "Ndrysho",
"link": "Link",
"share": "Ndaj",
"tools": "Mjete",
"locked": "I bllokuar",
"pinned": "E ngjitur",
- "pinned-with-expiry": "Pinned until %1",
+ "pinned-with-expiry": "Fiksuar deri në %1",
"scheduled": "I planifikuar",
- "moved": "Lëvizi",
- "moved-from": "Lëvizi nga %1",
+ "moved": "Lëvizur",
+ "moved-from": "Lëvizur nga %1",
"copy-ip": "Kopjoni IP-në",
"ban-ip": "Ndaloni IP-në",
- "view-history": "Redakto Historinë",
+ "view-history": "Edito Historinë",
"locked-by": "E mbyllur nga",
"unlocked-by": "E shkyçur nga",
- "pinned-by": "Pinned by",
- "unpinned-by": "Unpinned by",
+ "pinned-by": "Fiksuar nga",
+ "unpinned-by": "Ç'fiksim nga",
"deleted-by": "Fshirë nga",
"restored-by": "Rivendosur nga ",
"moved-from-by": "Zhvendosur nga % 1 nga",
"queued-by": "Postimi në radhë për miratim →",
"backlink": "Referuar nga",
- "forked-by": "Forked by",
+ "forked-by": "Ndryshuar nga",
"bookmark_instructions": "Klikoni këtu për t'u kthyer në postimin e fundit të lexuar në këtë temë.",
- "flag-post": "Flag this post",
- "flag-user": "Flag this user",
- "already-flagged": "Already Flagged",
- "view-flag-report": "View Flag Report",
- "resolve-flag": "Resolve Flag",
- "merged_message": "Kjo temë është shkrirë në %2",
+ "flag-post": "Raporto këtë postim",
+ "flag-user": "Raporto këtë user",
+ "already-flagged": "Raportuar më parë",
+ "view-flag-report": "Shiko analizën e raportimeve",
+ "resolve-flag": "Zgjidh raportimin",
+ "merged_message": "Kjo temë është bashkuar në 1%21",
"deleted_message": "Kjo temë është fshirë. Vetëm përdoruesit me privilegje të menaxhimit të temave mund ta shohin atë.",
"following_topic.message": "Tani do të merrni njoftime kur dikush poston në këtë temë.",
"not_following_topic.message": "Ju do ta shihni këtë temë në listën e temave të palexuara, por nuk do të merrni njoftime kur dikush poston në këtë temë.",
@@ -77,8 +77,8 @@
"ignoring.description": "Mos më njofto për përgjigjet e reja. Mos e shfaq temën e palexuar.",
"thread_tools.title": "Mjetet e Temave",
"thread_tools.markAsUnreadForAll": "Shënoni të palexuar për të gjithë",
- "thread_tools.pin": "Pin Topic",
- "thread_tools.unpin": "Unpin Topic",
+ "thread_tools.pin": "Fikso temën",
+ "thread_tools.unpin": "Ç'fikso temën",
"thread_tools.lock": "Blloko temën",
"thread_tools.unlock": "Zhblloko temën",
"thread_tools.move": "Zhvendos temen",
@@ -86,7 +86,7 @@
"thread_tools.move_all": "Zhvendos të gjitha",
"thread_tools.change_owner": "Ndrysho pronarin",
"thread_tools.select_category": "Zgjidh nje kategori",
- "thread_tools.fork": "Fork Topic",
+ "thread_tools.fork": "Ndrysho temën",
"thread_tools.delete": "Fshij temen",
"thread_tools.delete-posts": "Fshij postimin",
"thread_tools.delete_confirm": "Jeni i sigurt që dëshironi ta fshini këtë temë?",
@@ -109,24 +109,24 @@
"pin-modal-help": "Mund të caktoni opsionalisht një datë skadimi për temën(at) e ngjitura këtu. Përndryshe, mund ta lini këtë fushë bosh që tema të qëndrojë e renditura e para derisa të hiqet manualisht.",
"load_categories": "Duke ngarkuar kategoritë",
"confirm_move": "Lëvizni",
- "confirm_fork": "Fork",
- "bookmark": "Faqerojtësit",
- "bookmarks": "Faqerojtësit",
- "bookmarks.has_no_bookmarks": "Nuk keni shënuar ende asnjë postim.",
+ "confirm_fork": "Ndrysho",
+ "bookmark": "Ruaj",
+ "bookmarks": "Të ruajtura",
+ "bookmarks.has_no_bookmarks": "Nuk keni ruajtur ende asnjë postim.",
"loading_more_posts": "Duke ngarkuar më shumë postime",
"move_topic": "Zhvendos Temën",
"move_topics": "Zhvendos Temat",
"move_post": "Zhvendos Postimin",
"post_moved": "Postimi u zhvendos!",
- "fork_topic": "Fork Topic",
- "enter-new-topic-title": "Fut titullin e temës së re",
- "fork_topic_instruction": "Click the posts you want to fork",
+ "fork_topic": "Ndrysho temën",
+ "enter-new-topic-title": "Vendos titullin e temës së re",
+ "fork_topic_instruction": "Zgjidhni postimet që dëshironi të ndryshoni",
"fork_no_pids": "Asnjë postim i zgjedhur!",
"no-posts-selected": "Asnjë postim i zgjedhur!",
"x-posts-selected": "%1 postim(e) i zgjedhur",
"x-posts-will-be-moved-to-y": "%1 postim(s) do të zhvendoset në \"% 2\"",
"fork_pid_count": "%1 postim(e) i zgjedhur",
- "fork_success": "Successfully forked topic! Click here to go to the forked topic.",
+ "fork_success": "Kjo temë u ndryshua me sukses! Kliko këtu që të shkoni tek tema e ndryshuar.",
"delete_posts_instruction": "Klikoni postimet që dëshironi të fshini/pastroni",
"merge_topics_instruction": "Klikoni temat që dëshironi të bashkoni ose kërkoni për to",
"merge-topic-list-title": "Lista e temave që do të bashkohen",
@@ -156,7 +156,7 @@
"more_users": "%1 përdorue(s) të tjerë",
"more_guests": "%1 më shumë të ftuar ()",
"users_and_others": "% 1 dhe % 2 të tjerë",
- "sort_by": "Ndaj sipas",
+ "sort_by": "Rendit sipas",
"oldest_to_newest": "Më e vjetra tek më e reja",
"newest_to_oldest": "Më e reja tek më e vjetra",
"most_votes": "Shumica e Votave",
diff --git a/public/language/sq-AL/unread.json b/public/language/sq-AL/unread.json
index 6542610c13..526f7be493 100644
--- a/public/language/sq-AL/unread.json
+++ b/public/language/sq-AL/unread.json
@@ -7,9 +7,9 @@
"all": "Të gjitha",
"all_categories": "Të gjitha kategoritë",
"topics_marked_as_read.success": "Temat e shënuara si të lexuara!",
- "all-topics": "Të gjitha Temat",
+ "all-topics": "Të gjitha temat",
"new-topics": "Tema të reja",
"watched-topics": "Temat e lexuara",
"unreplied-topics": "Tema pa përgjigje",
- "multiple-categories-selected": "Disa të zgjedhura"
+ "multiple-categories-selected": "Disa të zgjedhura njëkohësisht"
}
\ No newline at end of file
diff --git a/public/language/sq-AL/uploads.json b/public/language/sq-AL/uploads.json
index 0e3d4a186c..46d5c21fc1 100644
--- a/public/language/sq-AL/uploads.json
+++ b/public/language/sq-AL/uploads.json
@@ -3,7 +3,7 @@
"select-file-to-upload": "Zgjidhni një material për të ngarkuar!",
"upload-success": "Materiali u ngarkua me sukses!",
"maximum-file-size": "Maksimumi %1 kb",
- "no-uploads-found": "Nuk u gjet asnjë ngarkim",
+ "no-uploads-found": "Nuk u gjet asnjë material i ngarkuar",
"public-uploads-info": "Ngarkimet janë publike, të gjithë vizitorët mund t'i shohin ato.",
"private-uploads-info": "Ngarkimet janë private, vetëm përdoruesit e regjistruar mund t'i shohin ato."
}
\ No newline at end of file
diff --git a/public/language/sq-AL/user.json b/public/language/sq-AL/user.json
index c3d67e8d7c..677dfed226 100644
--- a/public/language/sq-AL/user.json
+++ b/public/language/sq-AL/user.json
@@ -12,12 +12,12 @@
"ban_account": "Ndalimi i llogarisë",
"ban_account_confirm": "Dëshiron vërtet ta ndalosh këtë përdorues?",
"unban_account": "Zhblloko llogarinë",
- "mute_account": "Hesht llogarinë",
+ "mute_account": "Bëje llogarinë pa zë",
"unmute_account": "Aktivizo llogarinë",
"delete_account": "Fshij llogarinë",
- "delete_account_as_admin": "Fshij 1 llogarinë",
- "delete_content": "Fshij përmbajtjen e llogarisë",
- "delete_all": "Fshij llogarinë dhe përmbajtjen",
+ "delete_account_as_admin": "Fshij 1llogarinë1",
+ "delete_content": "Fshij 1përmbajtjen1 e llogarisë",
+ "delete_all": "Fshij 2llogarinë2 dhe 1përmbajtjen1",
"delete_account_confirm": "Jeni i sigurt që dëshironi të beni anonim postimet tuaja dhe të fshini llogarinë tuaj? Ky veprim është i pakthyeshëm dhe nuk do të mund të rikuperoni asnjë nga të dhënat tuaja. Futni fjalëkalimin tuaj për të konfirmuar që dëshironi të fshini këtë llogari.",
"delete_this_account_confirm": "Jeni i sigurt që dëshironi ta fshini këtë llogari duke lënë pas përmbajtjen e saj? Ky veprim është i pakthyeshëm, postimet do të jenë anonime dhe nuk do të jeni në gjendje të rivendosni lidhjet e postimeve me llogarinë e fshirë.",
"delete_account_content_confirm": "Jeni i sigurt që dëshironi të fshini përmbajtjen e kësaj llogarie (postimet/temat/ngarkimet)? Ky veprim është i pakthyeshëm dhe nuk do të mund të rikuperoni asnjë të dhënë.",
@@ -33,7 +33,7 @@
"profile": "Profili",
"profile_views": "Shikime të profilit",
"reputation": "Reputacioni",
- "bookmarks": "Faqerojtësit",
+ "bookmarks": "Faqe të ruajtura",
"watched_categories": "Kategoritë e kërkuara",
"change_all": "Ndrysho të gjitha",
"watched": "Shikuar",
@@ -51,9 +51,9 @@
"chat": "Bisedë",
"chat_with": "Vazhdo bisedën me %1",
"new_chat_with": "Fillo bisedë te re me %1",
- "flag-profile": "Profil ofensiv",
+ "flag-profile": "Profil i raportuar",
"follow": "Ndjek",
- "unfollow": "Mos ndiq",
+ "unfollow": "Hiqe",
"more": "Më shumë",
"profile_update_success": "Profili është përditësuar me sukses!",
"change_picture": "Ndrysho foton",
@@ -83,8 +83,8 @@
"upload_a_picture": "Ngarko një foto",
"remove_uploaded_picture": "Hiq fotografine e ngarkuar",
"upload_cover_picture": "Ngarko fotografinë e kopertinës",
- "remove_cover_picture_confirm": "Jeni i sigurt që dëshironi të hiqni foton e kopertinës?",
- "crop_picture": "Pritni foton",
+ "remove_cover_picture_confirm": "Jeni i sigurt që dëshironi të hiqni foton e kopertines?",
+ "crop_picture": "Prisni përmasat e fotos",
"upload_cropped_picture": "Prit dhe Ngarko",
"avatar-background-colour": "Ngjyra e sfondit të Avatarit",
"settings": "Preferenca",
@@ -104,7 +104,7 @@
"has_no_best_posts": "Ky përdorues nuk ka ende asnjë postim me votim.",
"has_no_topics": "Ky përdorues nuk ka postuar akoma asnjë temë.",
"has_no_watched_topics": "Ky përdorues nuk ka frekuentuar akoma asnjë temë.",
- "has_no_ignored_topics": "Ky përdorues nuk ka injoruar asnjë temë.",
+ "has_no_ignored_topics": "Ky përdorues nuk ka injoruar asnjë temë ende.",
"has_no_upvoted_posts": "Ky përdorues nuk ka votuar pro akoma në asnjë postim.",
"has_no_downvoted_posts": "Ky përdorues nuk ka votuar kundër asnjë postimi.",
"has_no_controversial_posts": "Ky përdorues nuk ka ende asnjë postim me votim kundër.",
@@ -131,13 +131,13 @@
"update_url_with_post_index": "Përditësoni URL-në me indeksin e postimeve gjatë shfletimit të temave",
"scroll_to_my_post": "Pasi të keni postuar një përgjigje, shfaqni postimin e ri",
"follow_topics_you_reply_to": "Shiko temat të cilave u përgjigjesh",
- "follow_topics_you_create": "Shikoni temat që krijoni",
+ "follow_topics_you_create": "Shikoni temat që keni krijuar",
"grouptitle": "Titull Grupi",
"group-order-help": "Zgjidhni një grup dhe përdorni shigjetat për të renditur titujt",
"no-group-title": "Pa titull grupi",
"select-skin": "Zgjidhni nje karakter",
"select-homepage": "Zgjidhni një Faqe kryesore",
- "homepage": "Faqja kryesore",
+ "homepage": "Kryefaqe",
"homepage_description": "Zgjidhni një faqe për t'u përdorur si faqen kryesore të forumit ose 'Asnjë' për të përdorur faqen kryesore të paracaktuar.",
"custom_route": "Faqe Kryesore e Personlizuar",
"custom_route_help": "Futni një emër itinerari këtu, pa ndonjë prerje të mëparshme (p.sh. \"i fundit\" ose \"kategoria/2/diskutim i përgjithshëm\")",
@@ -147,7 +147,7 @@
"sso.dissociate": "Shkëputeni",
"sso.dissociate-confirm-title": "Konfirmo shkëputjen",
"sso.dissociate-confirm": "Jeni i sigurt që dëshironi të shkëputni llogarinë tuaj nga %1?",
- "info.latest-flags": "Latest Flags",
+ "info.latest-flags": "Raportimet më të fundit",
"info.no-flags": "Nuk u gjet asnjë postim i shënuar",
"info.ban-history": "Historia e fundit e ndalimit",
"info.no-ban-history": "Ky përdorues nuk është ndaluar kurrë",
@@ -156,7 +156,7 @@
"info.banned-permanently": "Ndaluar përgjithmonë",
"info.banned-reason-label": "Arsye",
"info.banned-no-reason": "Asnjë arsye e dhënë.",
- "info.muted-no-reason": "No reason given.",
+ "info.muted-no-reason": "Nuk u dha asnjë arsye",
"info.username-history": "Historia e emrit të përdoruesit",
"info.email-history": "Historia e emailit",
"info.moderation-note": "Shënim i Moderimit",
diff --git a/public/language/sq-AL/users.json b/public/language/sq-AL/users.json
index 1e6e3c41ff..c2f2de4e76 100644
--- a/public/language/sq-AL/users.json
+++ b/public/language/sq-AL/users.json
@@ -1,8 +1,8 @@
{
"latest_users": "Përdoruesit e fundit",
- "top_posters": "Krijuesit më të mirë",
- "most_reputation": "Reputacioni më i madh",
- "most_flags": "Most Flags",
+ "top_posters": "Postuesit më të mirë",
+ "most_reputation": "Reputacionin më të madh",
+ "most_flags": "Më shumë raportime",
"search": "Kërko",
"enter_username": "Futni një emër përdoruesi për të kërkuar",
"search-user-for-chat": "Kërkoni një përdorues për të filluar bisedën",
@@ -19,6 +19,6 @@
"popular_topics": "Temat me te kerkuara",
"unread_topics": "Tema të palexuara",
"categories": "Kategoritë",
- "tags": "Etiketa",
+ "tags": "Etiketimet",
"no-users-found": "Nuk u gjet asnjë përdorues!"
}
\ No newline at end of file
diff --git a/public/src/modules/hooks.js b/public/src/modules/hooks.js
index 7ba651e252..4092c6b9f2 100644
--- a/public/src/modules/hooks.js
+++ b/public/src/modules/hooks.js
@@ -59,17 +59,18 @@ define('hooks', [], () => {
}
Hooks.logs.log(`[hooks] Registered ${hookName}`, method);
+ return Hooks;
};
Hooks.on = Hooks.register;
Hooks.one = (hookName, method) => {
- Hooks.register(hookName, method);
Hooks.runOnce.add({ hookName, method });
+ return Hooks.register(hookName, method);
};
// registerPage/onPage takes care of unregistering the listener on ajaxify
Hooks.registerPage = (hookName, method) => {
Hooks.temporary.add({ hookName, method });
- Hooks.register(hookName, method);
+ return Hooks.register(hookName, method);
};
Hooks.onPage = Hooks.registerPage;
Hooks.register('action:ajaxify.start', () => {
@@ -86,6 +87,8 @@ define('hooks', [], () => {
} else {
Hooks.logs.log(`[hooks] Unregistration of ${hookName} failed, passed-in method is not a registered listener or the hook itself has no listeners, currently.`);
}
+
+ return Hooks;
};
Hooks.off = Hooks.unregister;
diff --git a/src/emailer.js b/src/emailer.js
index 929e737017..6dfe2601e1 100644
--- a/src/emailer.js
+++ b/src/emailer.js
@@ -357,8 +357,6 @@ Emailer.sendViaFallback = async (data) => {
// NodeMailer uses a combined "from"
data.from = `${data.from_name}<${data.from}>`;
delete data.from_name;
-
- winston.verbose(`[emailer] Sending email to uid ${data.uid} (${data.to})`);
await Emailer.fallbackTransport.sendMail(data);
};
diff --git a/src/flags.js b/src/flags.js
index 9fc315116f..d942792a8c 100644
--- a/src/flags.js
+++ b/src/flags.js
@@ -463,6 +463,49 @@ Flags.create = async function (type, id, uid, reason, timestamp, forceFlag = fal
return flagObj;
};
+Flags.purge = async function (flagIds) {
+ const flagData = (await db.getObjects(flagIds.map(flagId => `flag:${flagId}`))).filter(Boolean);
+ const postFlags = flagData.filter(flagObj => flagObj.type === 'post');
+ const userFlags = flagData.filter(flagObj => flagObj.type === 'user');
+ const assignedFlags = flagData.filter(flagObj => !!flagObj.assignee);
+
+ const [allReports, postCids] = await Promise.all([
+ db.getSortedSetsMembers(flagData.map(flagObj => `flag:${flagObj.flagId}:reports`)),
+ posts.getCidsByPids(postFlags.map(flagObj => flagObj.targetId)),
+ ]);
+ const allReporterUids = allReports.map(flagReports => flagReports.map(report => report && report.split(';')[0]));
+ const removeReporters = [];
+ flagData.forEach((flagObj, i) => {
+ if (Array.isArray(allReporterUids[i])) {
+ allReporterUids[i].forEach((uid) => {
+ removeReporters.push([`flags:hash`, [flagObj.type, flagObj.targetId, uid].join(':')]);
+ removeReporters.push([`flags:byReporter:${uid}`, flagObj.flagId]);
+ });
+ }
+ });
+ await Promise.all([
+ db.sortedSetRemoveBulk([
+ ...flagData.map(flagObj => ([`flags:byType:${flagObj.type}`, flagObj.flagId])),
+ ...flagData.map(flagObj => ([`flags:byState:${flagObj.state}`, flagObj.flagId])),
+ ...removeReporters,
+ ...postFlags.map((flagObj, i) => ([`flags:byCid:${postCids[i]}`, flagObj.flagId])),
+ ...postFlags.map(flagObj => ([`flags:byPid:${flagObj.targetId}`, flagObj.flagId])),
+ ...assignedFlags.map(flagObj => ([`flags:byAssignee:${flagObj.assignee}`, flagObj.flagId])),
+ ...userFlags.map(flagObj => ([`flags:byTargetUid:${flagObj.targetUid}`, flagObj.flagId])),
+ ]),
+ db.deleteAll([
+ ...flagIds.map(flagId => `flag:${flagId}`),
+ ...flagIds.map(flagId => `flag:${flagId}:notes`),
+ ...flagIds.map(flagId => `flag:${flagId}:reports`),
+ ]),
+ db.sortedSetRemove('flags:datetime', flagIds),
+ db.sortedSetRemove(
+ 'flags:byTarget',
+ flagData.map(flagObj => [flagObj.type, flagObj.targetId].join(':'))
+ ),
+ ]);
+};
+
Flags.getReports = async function (flagId) {
const payload = await db.getSortedSetRevRangeWithScores(`flag:${flagId}:reports`, 0, -1);
const [reports, uids] = payload.reduce((memo, cur) => {
diff --git a/src/posts/uploads.js b/src/posts/uploads.js
index b7916f8ad1..229eaf2cfe 100644
--- a/src/posts/uploads.js
+++ b/src/posts/uploads.js
@@ -163,7 +163,6 @@ module.exports = function (Posts) {
await Promise.all(filePaths.map(async (fileName) => {
try {
const size = await image.size(_getFullPath(fileName));
- winston.verbose(`[posts/uploads/${fileName}] Saving size (${size.width}px x ${size.height}px)`);
await db.setObject(`upload:${md5(fileName)}`, {
width: size.width,
height: size.height,