diff --git a/.tx/config b/.tx/config
index 58394ddcf9..b6c0caa4c5 100644
--- a/.tx/config
+++ b/.tx/config
@@ -41,6 +41,7 @@ trans.rw = public/language/rw/category.json
trans.sc = public/language/sc/category.json
trans.sk = public/language/sk/category.json
trans.sl = public/language/sl/category.json
+trans.sq_AL = public/language/sq-AL/category.json
trans.sr = public/language/sr/category.json
trans.sv = public/language/sv/category.json
trans.th = public/language/th/category.json
@@ -91,6 +92,7 @@ trans.rw = public/language/rw/login.json
trans.sc = public/language/sc/login.json
trans.sk = public/language/sk/login.json
trans.sl = public/language/sl/login.json
+trans.sq_AL = public/language/sq-AL/login.json
trans.sr = public/language/sr/login.json
trans.sv = public/language/sv/login.json
trans.th = public/language/th/login.json
@@ -141,6 +143,7 @@ trans.rw = public/language/rw/recent.json
trans.sc = public/language/sc/recent.json
trans.sk = public/language/sk/recent.json
trans.sl = public/language/sl/recent.json
+trans.sq_AL = public/language/sq-AL/recent.json
trans.sr = public/language/sr/recent.json
trans.sv = public/language/sv/recent.json
trans.th = public/language/th/recent.json
@@ -191,6 +194,7 @@ trans.rw = public/language/rw/unread.json
trans.sc = public/language/sc/unread.json
trans.sk = public/language/sk/unread.json
trans.sl = public/language/sl/unread.json
+trans.sq_AL = public/language/sq-AL/unread.json
trans.sr = public/language/sr/unread.json
trans.sv = public/language/sv/unread.json
trans.th = public/language/th/unread.json
@@ -241,6 +245,7 @@ trans.rw = public/language/rw/modules.json
trans.sc = public/language/sc/modules.json
trans.sk = public/language/sk/modules.json
trans.sl = public/language/sl/modules.json
+trans.sq_AL = public/language/sq-AL/modules.json
trans.sr = public/language/sr/modules.json
trans.sv = public/language/sv/modules.json
trans.th = public/language/th/modules.json
@@ -291,6 +296,7 @@ trans.rw = public/language/rw/post-queue.json
trans.sc = public/language/sc/post-queue.json
trans.sk = public/language/sk/post-queue.json
trans.sl = public/language/sl/post-queue.json
+trans.sq_AL = public/language/sq-AL/post-queue.json
trans.sr = public/language/sr/post-queue.json
trans.sv = public/language/sv/post-queue.json
trans.th = public/language/th/post-queue.json
@@ -341,6 +347,7 @@ trans.rw = public/language/rw/ip-blacklist.json
trans.sc = public/language/sc/ip-blacklist.json
trans.sk = public/language/sk/ip-blacklist.json
trans.sl = public/language/sl/ip-blacklist.json
+trans.sq_AL = public/language/sq-AL/ip-blacklist.json
trans.sr = public/language/sr/ip-blacklist.json
trans.sv = public/language/sv/ip-blacklist.json
trans.th = public/language/th/ip-blacklist.json
@@ -391,6 +398,7 @@ trans.rw = public/language/rw/register.json
trans.sc = public/language/sc/register.json
trans.sk = public/language/sk/register.json
trans.sl = public/language/sl/register.json
+trans.sq_AL = public/language/sq-AL/register.json
trans.sr = public/language/sr/register.json
trans.sv = public/language/sv/register.json
trans.th = public/language/th/register.json
@@ -441,6 +449,7 @@ trans.rw = public/language/rw/user.json
trans.sc = public/language/sc/user.json
trans.sk = public/language/sk/user.json
trans.sl = public/language/sl/user.json
+trans.sq_AL = public/language/sq-AL/user.json
trans.sr = public/language/sr/user.json
trans.sv = public/language/sv/user.json
trans.th = public/language/th/user.json
@@ -491,6 +500,7 @@ trans.rw = public/language/rw/global.json
trans.sc = public/language/sc/global.json
trans.sk = public/language/sk/global.json
trans.sl = public/language/sl/global.json
+trans.sq_AL = public/language/sq-AL/global.json
trans.sr = public/language/sr/global.json
trans.sv = public/language/sv/global.json
trans.th = public/language/th/global.json
@@ -541,6 +551,7 @@ trans.rw = public/language/rw/notifications.json
trans.sc = public/language/sc/notifications.json
trans.sk = public/language/sk/notifications.json
trans.sl = public/language/sl/notifications.json
+trans.sq_AL = public/language/sq-AL/notifications.json
trans.sr = public/language/sr/notifications.json
trans.sv = public/language/sv/notifications.json
trans.th = public/language/th/notifications.json
@@ -591,6 +602,7 @@ trans.rw = public/language/rw/reset_password.json
trans.sc = public/language/sc/reset_password.json
trans.sk = public/language/sk/reset_password.json
trans.sl = public/language/sl/reset_password.json
+trans.sq_AL = public/language/sq-AL/reset_password.json
trans.sr = public/language/sr/reset_password.json
trans.sv = public/language/sv/reset_password.json
trans.th = public/language/th/reset_password.json
@@ -641,6 +653,7 @@ trans.rw = public/language/rw/users.json
trans.sc = public/language/sc/users.json
trans.sk = public/language/sk/users.json
trans.sl = public/language/sl/users.json
+trans.sq_AL = public/language/sq-AL/users.json
trans.sr = public/language/sr/users.json
trans.sv = public/language/sv/users.json
trans.th = public/language/th/users.json
@@ -691,6 +704,7 @@ trans.rw = public/language/rw/language.json
trans.sc = public/language/sc/language.json
trans.sk = public/language/sk/language.json
trans.sl = public/language/sl/language.json
+trans.sq_AL = public/language/sq-AL/language.json
trans.sr = public/language/sr/language.json
trans.sv = public/language/sv/language.json
trans.th = public/language/th/language.json
@@ -741,6 +755,7 @@ trans.rw = public/language/rw/pages.json
trans.sc = public/language/sc/pages.json
trans.sk = public/language/sk/pages.json
trans.sl = public/language/sl/pages.json
+trans.sq_AL = public/language/sq-AL/pages.json
trans.sr = public/language/sr/pages.json
trans.sv = public/language/sv/pages.json
trans.th = public/language/th/pages.json
@@ -791,6 +806,7 @@ trans.rw = public/language/rw/topic.json
trans.sc = public/language/sc/topic.json
trans.sk = public/language/sk/topic.json
trans.sl = public/language/sl/topic.json
+trans.sq_AL = public/language/sq-AL/topic.json
trans.sr = public/language/sr/topic.json
trans.sv = public/language/sv/topic.json
trans.th = public/language/th/topic.json
@@ -841,6 +857,7 @@ trans.rw = public/language/rw/success.json
trans.sc = public/language/sc/success.json
trans.sk = public/language/sk/success.json
trans.sl = public/language/sl/success.json
+trans.sq_AL = public/language/sq-AL/success.json
trans.sr = public/language/sr/success.json
trans.sv = public/language/sv/success.json
trans.th = public/language/th/success.json
@@ -891,6 +908,7 @@ trans.rw = public/language/rw/error.json
trans.sc = public/language/sc/error.json
trans.sk = public/language/sk/error.json
trans.sl = public/language/sl/error.json
+trans.sq_AL = public/language/sq-AL/error.json
trans.sr = public/language/sr/error.json
trans.sv = public/language/sv/error.json
trans.th = public/language/th/error.json
@@ -941,6 +959,7 @@ trans.rw = public/language/rw/flags.json
trans.sc = public/language/sc/flags.json
trans.sk = public/language/sk/flags.json
trans.sl = public/language/sl/flags.json
+trans.sq_AL = public/language/sq-AL/flags.json
trans.sr = public/language/sr/flags.json
trans.sv = public/language/sv/flags.json
trans.th = public/language/th/flags.json
@@ -990,6 +1009,7 @@ trans.rw = public/language/rw/tags.json
trans.sc = public/language/sc/tags.json
trans.sk = public/language/sk/tags.json
trans.sl = public/language/sl/tags.json
+trans.sq_AL = public/language/sq-AL/tags.json
trans.sr = public/language/sr/tags.json
trans.sv = public/language/sv/tags.json
trans.th = public/language/th/tags.json
@@ -1040,6 +1060,7 @@ trans.rw = public/language/rw/top.json
trans.sc = public/language/sc/top.json
trans.sk = public/language/sk/top.json
trans.sl = public/language/sl/top.json
+trans.sq_AL = public/language/sq-AL/top.json
trans.sr = public/language/sr/top.json
trans.sv = public/language/sv/top.json
trans.th = public/language/th/top.json
@@ -1090,6 +1111,7 @@ trans.rw = public/language/rw/email.json
trans.sc = public/language/sc/email.json
trans.sk = public/language/sk/email.json
trans.sl = public/language/sl/email.json
+trans.sq_AL = public/language/sq-AL/email.json
trans.sr = public/language/sr/email.json
trans.sv = public/language/sv/email.json
trans.th = public/language/th/email.json
@@ -1140,6 +1162,7 @@ trans.rw = public/language/rw/search.json
trans.sc = public/language/sc/search.json
trans.sk = public/language/sk/search.json
trans.sl = public/language/sl/search.json
+trans.sq_AL = public/language/sq-AL/search.json
trans.sr = public/language/sr/search.json
trans.sv = public/language/sv/search.json
trans.th = public/language/th/search.json
@@ -1190,6 +1213,7 @@ trans.rw = public/language/rw/groups.json
trans.sc = public/language/sc/groups.json
trans.sk = public/language/sk/groups.json
trans.sl = public/language/sl/groups.json
+trans.sq_AL = public/language/sq-AL/groups.json
trans.sr = public/language/sr/groups.json
trans.sv = public/language/sv/groups.json
trans.th = public/language/th/groups.json
@@ -1240,6 +1264,7 @@ trans.rw = public/language/rw/uploads.json
trans.sc = public/language/sc/uploads.json
trans.sk = public/language/sk/uploads.json
trans.sl = public/language/sl/uploads.json
+trans.sq_AL = public/language/sq-AL/uploads.json
trans.sr = public/language/sr/uploads.json
trans.sv = public/language/sv/uploads.json
trans.th = public/language/th/uploads.json
@@ -1290,6 +1315,7 @@ trans.rw = public/language/rw/admin/admin.json
trans.sc = public/language/sc/admin/admin.json
trans.sk = public/language/sk/admin/admin.json
trans.sl = public/language/sl/admin/admin.json
+trans.sq_AL = public/language/sq-AL/admin/admin.json
trans.sr = public/language/sr/admin/admin.json
trans.sv = public/language/sv/admin/admin.json
trans.th = public/language/th/admin/admin.json
@@ -1340,6 +1366,7 @@ trans.rw = public/language/rw/admin/menu.json
trans.sc = public/language/sc/admin/menu.json
trans.sk = public/language/sk/admin/menu.json
trans.sl = public/language/sl/admin/menu.json
+trans.sq_AL = public/language/sq-AL/admin/menu.json
trans.sr = public/language/sr/admin/menu.json
trans.sv = public/language/sv/admin/menu.json
trans.th = public/language/th/admin/menu.json
@@ -1390,6 +1417,7 @@ trans.rw = public/language/rw/admin/advanced/cache.json
trans.sc = public/language/sc/admin/advanced/cache.json
trans.sk = public/language/sk/admin/advanced/cache.json
trans.sl = public/language/sl/admin/advanced/cache.json
+trans.sq_AL = public/language/sq-AL/admin/advanced/cache.json
trans.sr = public/language/sr/admin/advanced/cache.json
trans.sv = public/language/sv/admin/advanced/cache.json
trans.th = public/language/th/admin/advanced/cache.json
@@ -1440,6 +1468,7 @@ trans.rw = public/language/rw/admin/advanced/database.json
trans.sc = public/language/sc/admin/advanced/database.json
trans.sk = public/language/sk/admin/advanced/database.json
trans.sl = public/language/sl/admin/advanced/database.json
+trans.sq_AL = public/language/sq-AL/admin/advanced/database.json
trans.sr = public/language/sr/admin/advanced/database.json
trans.sv = public/language/sv/admin/advanced/database.json
trans.th = public/language/th/admin/advanced/database.json
@@ -1490,6 +1519,7 @@ trans.rw = public/language/rw/admin/advanced/errors.json
trans.sc = public/language/sc/admin/advanced/errors.json
trans.sk = public/language/sk/admin/advanced/errors.json
trans.sl = public/language/sl/admin/advanced/errors.json
+trans.sq_AL = public/language/sq-AL/admin/advanced/errors.json
trans.sr = public/language/sr/admin/advanced/errors.json
trans.sv = public/language/sv/admin/advanced/errors.json
trans.th = public/language/th/admin/advanced/errors.json
@@ -1540,6 +1570,7 @@ trans.rw = public/language/rw/admin/advanced/events.json
trans.sc = public/language/sc/admin/advanced/events.json
trans.sk = public/language/sk/admin/advanced/events.json
trans.sl = public/language/sl/admin/advanced/events.json
+trans.sq_AL = public/language/sq-AL/admin/advanced/events.json
trans.sr = public/language/sr/admin/advanced/events.json
trans.sv = public/language/sv/admin/advanced/events.json
trans.th = public/language/th/admin/advanced/events.json
@@ -1590,6 +1621,7 @@ trans.rw = public/language/rw/admin/advanced/logs.json
trans.sc = public/language/sc/admin/advanced/logs.json
trans.sk = public/language/sk/admin/advanced/logs.json
trans.sl = public/language/sl/admin/advanced/logs.json
+trans.sq_AL = public/language/sq-AL/admin/advanced/logs.json
trans.sr = public/language/sr/admin/advanced/logs.json
trans.sv = public/language/sv/admin/advanced/logs.json
trans.th = public/language/th/admin/advanced/logs.json
@@ -1640,6 +1672,7 @@ trans.rw = public/language/rw/admin/appearance/customise.json
trans.sc = public/language/sc/admin/appearance/customise.json
trans.sk = public/language/sk/admin/appearance/customise.json
trans.sl = public/language/sl/admin/appearance/customise.json
+trans.sq_AL = public/language/sq-AL/admin/appearance/customise.json
trans.sr = public/language/sr/admin/appearance/customise.json
trans.sv = public/language/sv/admin/appearance/customise.json
trans.th = public/language/th/admin/appearance/customise.json
@@ -1690,6 +1723,7 @@ trans.rw = public/language/rw/admin/appearance/skins.json
trans.sc = public/language/sc/admin/appearance/skins.json
trans.sk = public/language/sk/admin/appearance/skins.json
trans.sl = public/language/sl/admin/appearance/skins.json
+trans.sq_AL = public/language/sq-AL/admin/appearance/skins.json
trans.sr = public/language/sr/admin/appearance/skins.json
trans.sv = public/language/sv/admin/appearance/skins.json
trans.th = public/language/th/admin/appearance/skins.json
@@ -1740,6 +1774,7 @@ trans.rw = public/language/rw/admin/appearance/themes.json
trans.sc = public/language/sc/admin/appearance/themes.json
trans.sk = public/language/sk/admin/appearance/themes.json
trans.sl = public/language/sl/admin/appearance/themes.json
+trans.sq_AL = public/language/sq-AL/admin/appearance/themes.json
trans.sr = public/language/sr/admin/appearance/themes.json
trans.sv = public/language/sv/admin/appearance/themes.json
trans.th = public/language/th/admin/appearance/themes.json
@@ -1790,6 +1825,7 @@ trans.rw = public/language/rw/admin/development/info.json
trans.sc = public/language/sc/admin/development/info.json
trans.sk = public/language/sk/admin/development/info.json
trans.sl = public/language/sl/admin/development/info.json
+trans.sq_AL = public/language/sq-AL/admin/development/info.json
trans.sr = public/language/sr/admin/development/info.json
trans.sv = public/language/sv/admin/development/info.json
trans.th = public/language/th/admin/development/info.json
@@ -1840,6 +1876,7 @@ trans.rw = public/language/rw/admin/development/logger.json
trans.sc = public/language/sc/admin/development/logger.json
trans.sk = public/language/sk/admin/development/logger.json
trans.sl = public/language/sl/admin/development/logger.json
+trans.sq_AL = public/language/sq-AL/admin/development/logger.json
trans.sr = public/language/sr/admin/development/logger.json
trans.sv = public/language/sv/admin/development/logger.json
trans.th = public/language/th/admin/development/logger.json
@@ -1890,6 +1927,7 @@ trans.rw = public/language/rw/admin/extend/plugins.json
trans.sc = public/language/sc/admin/extend/plugins.json
trans.sk = public/language/sk/admin/extend/plugins.json
trans.sl = public/language/sl/admin/extend/plugins.json
+trans.sq_AL = public/language/sq-AL/admin/extend/plugins.json
trans.sr = public/language/sr/admin/extend/plugins.json
trans.sv = public/language/sv/admin/extend/plugins.json
trans.th = public/language/th/admin/extend/plugins.json
@@ -1940,6 +1978,7 @@ trans.rw = public/language/rw/admin/extend/rewards.json
trans.sc = public/language/sc/admin/extend/rewards.json
trans.sk = public/language/sk/admin/extend/rewards.json
trans.sl = public/language/sl/admin/extend/rewards.json
+trans.sq_AL = public/language/sq-AL/admin/extend/rewards.json
trans.sr = public/language/sr/admin/extend/rewards.json
trans.sv = public/language/sv/admin/extend/rewards.json
trans.th = public/language/th/admin/extend/rewards.json
@@ -1990,6 +2029,7 @@ trans.rw = public/language/rw/admin/extend/widgets.json
trans.sc = public/language/sc/admin/extend/widgets.json
trans.sk = public/language/sk/admin/extend/widgets.json
trans.sl = public/language/sl/admin/extend/widgets.json
+trans.sq_AL = public/language/sq-AL/admin/extend/widgets.json
trans.sr = public/language/sr/admin/extend/widgets.json
trans.sv = public/language/sv/admin/extend/widgets.json
trans.th = public/language/th/admin/extend/widgets.json
@@ -2040,6 +2080,7 @@ trans.rw = public/language/rw/admin/dashboard.json
trans.sc = public/language/sc/admin/dashboard.json
trans.sk = public/language/sk/admin/dashboard.json
trans.sl = public/language/sl/admin/dashboard.json
+trans.sq_AL = public/language/sq-AL/admin/dashboard.json
trans.sr = public/language/sr/admin/dashboard.json
trans.sv = public/language/sv/admin/dashboard.json
trans.th = public/language/th/admin/dashboard.json
@@ -2090,6 +2131,7 @@ trans.rw = public/language/rw/admin/settings/homepage.json
trans.sc = public/language/sc/admin/settings/homepage.json
trans.sk = public/language/sk/admin/settings/homepage.json
trans.sl = public/language/sl/admin/settings/homepage.json
+trans.sq_AL = public/language/sq-AL/admin/settings/homepage.json
trans.sr = public/language/sr/admin/settings/homepage.json
trans.sv = public/language/sv/admin/settings/homepage.json
trans.th = public/language/th/admin/settings/homepage.json
@@ -2140,6 +2182,7 @@ trans.rw = public/language/rw/admin/settings/languages.json
trans.sc = public/language/sc/admin/settings/languages.json
trans.sk = public/language/sk/admin/settings/languages.json
trans.sl = public/language/sl/admin/settings/languages.json
+trans.sq_AL = public/language/sq-AL/admin/settings/languages.json
trans.sr = public/language/sr/admin/settings/languages.json
trans.sv = public/language/sv/admin/settings/languages.json
trans.th = public/language/th/admin/settings/languages.json
@@ -2190,6 +2233,7 @@ trans.rw = public/language/rw/admin/settings/navigation.json
trans.sc = public/language/sc/admin/settings/navigation.json
trans.sk = public/language/sk/admin/settings/navigation.json
trans.sl = public/language/sl/admin/settings/navigation.json
+trans.sq_AL = public/language/sq-AL/admin/settings/navigation.json
trans.sr = public/language/sr/admin/settings/navigation.json
trans.sv = public/language/sv/admin/settings/navigation.json
trans.th = public/language/th/admin/settings/navigation.json
@@ -2240,6 +2284,7 @@ trans.rw = public/language/rw/admin/settings/social.json
trans.sc = public/language/sc/admin/settings/social.json
trans.sk = public/language/sk/admin/settings/social.json
trans.sl = public/language/sl/admin/settings/social.json
+trans.sq_AL = public/language/sq-AL/admin/settings/social.json
trans.sr = public/language/sr/admin/settings/social.json
trans.sv = public/language/sv/admin/settings/social.json
trans.th = public/language/th/admin/settings/social.json
@@ -2290,6 +2335,7 @@ trans.rw = public/language/rw/admin/settings/sounds.json
trans.sc = public/language/sc/admin/settings/sounds.json
trans.sk = public/language/sk/admin/settings/sounds.json
trans.sl = public/language/sl/admin/settings/sounds.json
+trans.sq_AL = public/language/sq-AL/admin/settings/sounds.json
trans.sr = public/language/sr/admin/settings/sounds.json
trans.sv = public/language/sv/admin/settings/sounds.json
trans.th = public/language/th/admin/settings/sounds.json
@@ -2340,6 +2386,7 @@ trans.rw = public/language/rw/admin/manage/admins-mods.json
trans.sc = public/language/sc/admin/manage/admins-mods.json
trans.sk = public/language/sk/admin/manage/admins-mods.json
trans.sl = public/language/sl/admin/manage/admins-mods.json
+trans.sq_AL = public/language/sq-AL/admin/manage/admins-mods.json
trans.sr = public/language/sr/admin/manage/admins-mods.json
trans.sv = public/language/sv/admin/manage/admins-mods.json
trans.th = public/language/th/admin/manage/admins-mods.json
@@ -2390,6 +2437,7 @@ trans.rw = public/language/rw/admin/manage/categories.json
trans.sc = public/language/sc/admin/manage/categories.json
trans.sk = public/language/sk/admin/manage/categories.json
trans.sl = public/language/sl/admin/manage/categories.json
+trans.sq_AL = public/language/sq-AL/admin/manage/categories.json
trans.sr = public/language/sr/admin/manage/categories.json
trans.sv = public/language/sv/admin/manage/categories.json
trans.th = public/language/th/admin/manage/categories.json
@@ -2440,6 +2488,7 @@ trans.rw = public/language/rw/admin/manage/groups.json
trans.sc = public/language/sc/admin/manage/groups.json
trans.sk = public/language/sk/admin/manage/groups.json
trans.sl = public/language/sl/admin/manage/groups.json
+trans.sq_AL = public/language/sq-AL/admin/manage/groups.json
trans.sr = public/language/sr/admin/manage/groups.json
trans.sv = public/language/sv/admin/manage/groups.json
trans.th = public/language/th/admin/manage/groups.json
@@ -2490,6 +2539,7 @@ trans.rw = public/language/rw/admin/manage/privileges.json
trans.sc = public/language/sc/admin/manage/privileges.json
trans.sk = public/language/sk/admin/manage/privileges.json
trans.sl = public/language/sl/admin/manage/privileges.json
+trans.sq_AL = public/language/sq-AL/admin/manage/privileges.json
trans.sr = public/language/sr/admin/manage/privileges.json
trans.sv = public/language/sv/admin/manage/privileges.json
trans.th = public/language/th/admin/manage/privileges.json
@@ -2540,6 +2590,7 @@ trans.rw = public/language/rw/admin/manage/registration.json
trans.sc = public/language/sc/admin/manage/registration.json
trans.sk = public/language/sk/admin/manage/registration.json
trans.sl = public/language/sl/admin/manage/registration.json
+trans.sq_AL = public/language/sq-AL/admin/manage/registration.json
trans.sr = public/language/sr/admin/manage/registration.json
trans.sv = public/language/sv/admin/manage/registration.json
trans.th = public/language/th/admin/manage/registration.json
@@ -2590,6 +2641,7 @@ trans.rw = public/language/rw/admin/manage/tags.json
trans.sc = public/language/sc/admin/manage/tags.json
trans.sk = public/language/sk/admin/manage/tags.json
trans.sl = public/language/sl/admin/manage/tags.json
+trans.sq_AL = public/language/sq-AL/admin/manage/tags.json
trans.sr = public/language/sr/admin/manage/tags.json
trans.sv = public/language/sv/admin/manage/tags.json
trans.th = public/language/th/admin/manage/tags.json
@@ -2640,6 +2692,7 @@ trans.rw = public/language/rw/admin/manage/uploads.json
trans.sc = public/language/sc/admin/manage/uploads.json
trans.sk = public/language/sk/admin/manage/uploads.json
trans.sl = public/language/sl/admin/manage/uploads.json
+trans.sq_AL = public/language/sq-AL/admin/manage/uploads.json
trans.sr = public/language/sr/admin/manage/uploads.json
trans.sv = public/language/sv/admin/manage/uploads.json
trans.th = public/language/th/admin/manage/uploads.json
@@ -2690,6 +2743,7 @@ trans.rw = public/language/rw/admin/manage/users.json
trans.sc = public/language/sc/admin/manage/users.json
trans.sk = public/language/sk/admin/manage/users.json
trans.sl = public/language/sl/admin/manage/users.json
+trans.sq_AL = public/language/sq-AL/admin/manage/users.json
trans.sr = public/language/sr/admin/manage/users.json
trans.sv = public/language/sv/admin/manage/users.json
trans.th = public/language/th/admin/manage/users.json
@@ -2740,6 +2794,7 @@ trans.rw = public/language/rw/admin/manage/digest.json
trans.sc = public/language/sc/admin/manage/digest.json
trans.sk = public/language/sk/admin/manage/digest.json
trans.sl = public/language/sl/admin/manage/digest.json
+trans.sq_AL = public/language/sq-AL/admin/manage/digest.json
trans.sr = public/language/sr/admin/manage/digest.json
trans.sv = public/language/sv/admin/manage/digest.json
trans.th = public/language/th/admin/manage/digest.json
@@ -2790,6 +2845,7 @@ trans.rw = public/language/rw/admin/settings/advanced.json
trans.sc = public/language/sc/admin/settings/advanced.json
trans.sk = public/language/sk/admin/settings/advanced.json
trans.sl = public/language/sl/admin/settings/advanced.json
+trans.sq_AL = public/language/sq-AL/admin/settings/advanced.json
trans.sr = public/language/sr/admin/settings/advanced.json
trans.sv = public/language/sv/admin/settings/advanced.json
trans.th = public/language/th/admin/settings/advanced.json
@@ -2840,6 +2896,7 @@ trans.rw = public/language/rw/admin/settings/cookies.json
trans.sc = public/language/sc/admin/settings/cookies.json
trans.sk = public/language/sk/admin/settings/cookies.json
trans.sl = public/language/sl/admin/settings/cookies.json
+trans.sq_AL = public/language/sq-AL/admin/settings/cookies.json
trans.sr = public/language/sr/admin/settings/cookies.json
trans.sv = public/language/sv/admin/settings/cookies.json
trans.th = public/language/th/admin/settings/cookies.json
@@ -2890,6 +2947,7 @@ trans.rw = public/language/rw/admin/settings/general.json
trans.sc = public/language/sc/admin/settings/general.json
trans.sk = public/language/sk/admin/settings/general.json
trans.sl = public/language/sl/admin/settings/general.json
+trans.sq_AL = public/language/sq-AL/admin/settings/general.json
trans.sr = public/language/sr/admin/settings/general.json
trans.sv = public/language/sv/admin/settings/general.json
trans.th = public/language/th/admin/settings/general.json
@@ -2940,6 +2998,7 @@ trans.rw = public/language/rw/admin/settings/guest.json
trans.sc = public/language/sc/admin/settings/guest.json
trans.sk = public/language/sk/admin/settings/guest.json
trans.sl = public/language/sl/admin/settings/guest.json
+trans.sq_AL = public/language/sq-AL/admin/settings/guest.json
trans.sr = public/language/sr/admin/settings/guest.json
trans.sv = public/language/sv/admin/settings/guest.json
trans.th = public/language/th/admin/settings/guest.json
@@ -2990,6 +3049,7 @@ trans.rw = public/language/rw/admin/settings/pagination.json
trans.sc = public/language/sc/admin/settings/pagination.json
trans.sk = public/language/sk/admin/settings/pagination.json
trans.sl = public/language/sl/admin/settings/pagination.json
+trans.sq_AL = public/language/sq-AL/admin/settings/pagination.json
trans.sr = public/language/sr/admin/settings/pagination.json
trans.sv = public/language/sv/admin/settings/pagination.json
trans.th = public/language/th/admin/settings/pagination.json
@@ -3040,6 +3100,7 @@ trans.rw = public/language/rw/admin/settings/reputation.json
trans.sc = public/language/sc/admin/settings/reputation.json
trans.sk = public/language/sk/admin/settings/reputation.json
trans.sl = public/language/sl/admin/settings/reputation.json
+trans.sq_AL = public/language/sq-AL/admin/settings/reputation.json
trans.sr = public/language/sr/admin/settings/reputation.json
trans.sv = public/language/sv/admin/settings/reputation.json
trans.th = public/language/th/admin/settings/reputation.json
@@ -3090,6 +3151,7 @@ trans.rw = public/language/rw/admin/settings/tags.json
trans.sc = public/language/sc/admin/settings/tags.json
trans.sk = public/language/sk/admin/settings/tags.json
trans.sl = public/language/sl/admin/settings/tags.json
+trans.sq_AL = public/language/sq-AL/admin/settings/tags.json
trans.sr = public/language/sr/admin/settings/tags.json
trans.sv = public/language/sv/admin/settings/tags.json
trans.th = public/language/th/admin/settings/tags.json
@@ -3140,6 +3202,7 @@ trans.rw = public/language/rw/admin/settings/user.json
trans.sc = public/language/sc/admin/settings/user.json
trans.sk = public/language/sk/admin/settings/user.json
trans.sl = public/language/sl/admin/settings/user.json
+trans.sq_AL = public/language/sq-AL/admin/settings/user.json
trans.sr = public/language/sr/admin/settings/user.json
trans.sv = public/language/sv/admin/settings/user.json
trans.th = public/language/th/admin/settings/user.json
@@ -3190,6 +3253,7 @@ trans.rw = public/language/rw/admin/settings/chat.json
trans.sc = public/language/sc/admin/settings/chat.json
trans.sk = public/language/sk/admin/settings/chat.json
trans.sl = public/language/sl/admin/settings/chat.json
+trans.sq_AL = public/language/sq-AL/admin/settings/chat.json
trans.sr = public/language/sr/admin/settings/chat.json
trans.sv = public/language/sv/admin/settings/chat.json
trans.th = public/language/th/admin/settings/chat.json
@@ -3240,6 +3304,7 @@ trans.rw = public/language/rw/admin/settings/email.json
trans.sc = public/language/sc/admin/settings/email.json
trans.sk = public/language/sk/admin/settings/email.json
trans.sl = public/language/sl/admin/settings/email.json
+trans.sq_AL = public/language/sq-AL/admin/settings/email.json
trans.sr = public/language/sr/admin/settings/email.json
trans.sv = public/language/sv/admin/settings/email.json
trans.th = public/language/th/admin/settings/email.json
@@ -3290,6 +3355,7 @@ trans.rw = public/language/rw/admin/settings/group.json
trans.sc = public/language/sc/admin/settings/group.json
trans.sk = public/language/sk/admin/settings/group.json
trans.sl = public/language/sl/admin/settings/group.json
+trans.sq_AL = public/language/sq-AL/admin/settings/group.json
trans.sr = public/language/sr/admin/settings/group.json
trans.sv = public/language/sv/admin/settings/group.json
trans.th = public/language/th/admin/settings/group.json
@@ -3340,6 +3406,7 @@ trans.rw = public/language/rw/admin/settings/notifications.json
trans.sc = public/language/sc/admin/settings/notifications.json
trans.sk = public/language/sk/admin/settings/notifications.json
trans.sl = public/language/sl/admin/settings/notifications.json
+trans.sq_AL = public/language/sq-AL/admin/settings/notifications.json
trans.sr = public/language/sr/admin/settings/notifications.json
trans.sv = public/language/sv/admin/settings/notifications.json
trans.th = public/language/th/admin/settings/notifications.json
@@ -3390,6 +3457,7 @@ trans.rw = public/language/rw/admin/settings/api.json
trans.sc = public/language/sc/admin/settings/api.json
trans.sk = public/language/sk/admin/settings/api.json
trans.sl = public/language/sl/admin/settings/api.json
+trans.sq_AL = public/language/sq-AL/admin/settings/api.json
trans.sr = public/language/sr/admin/settings/api.json
trans.sv = public/language/sv/admin/settings/api.json
trans.th = public/language/th/admin/settings/api.json
@@ -3440,6 +3508,7 @@ trans.rw = public/language/rw/admin/settings/post.json
trans.sc = public/language/sc/admin/settings/post.json
trans.sk = public/language/sk/admin/settings/post.json
trans.sl = public/language/sl/admin/settings/post.json
+trans.sq_AL = public/language/sq-AL/admin/settings/post.json
trans.sr = public/language/sr/admin/settings/post.json
trans.sv = public/language/sv/admin/settings/post.json
trans.th = public/language/th/admin/settings/post.json
@@ -3490,6 +3559,7 @@ trans.rw = public/language/rw/admin/settings/sockets.json
trans.sc = public/language/sc/admin/settings/sockets.json
trans.sk = public/language/sk/admin/settings/sockets.json
trans.sl = public/language/sl/admin/settings/sockets.json
+trans.sq_AL = public/language/sq-AL/admin/settings/sockets.json
trans.sr = public/language/sr/admin/settings/sockets.json
trans.sv = public/language/sv/admin/settings/sockets.json
trans.th = public/language/th/admin/settings/sockets.json
@@ -3540,6 +3610,7 @@ trans.rw = public/language/rw/admin/settings/uploads.json
trans.sc = public/language/sc/admin/settings/uploads.json
trans.sk = public/language/sk/admin/settings/uploads.json
trans.sl = public/language/sl/admin/settings/uploads.json
+trans.sq_AL = public/language/sq-AL/admin/settings/uploads.json
trans.sr = public/language/sr/admin/settings/uploads.json
trans.sv = public/language/sv/admin/settings/uploads.json
trans.th = public/language/th/admin/settings/uploads.json
@@ -3590,6 +3661,7 @@ trans.rw = public/language/rw/admin/settings/web-crawler.json
trans.sc = public/language/sc/admin/settings/web-crawler.json
trans.sk = public/language/sk/admin/settings/web-crawler.json
trans.sl = public/language/sl/admin/settings/web-crawler.json
+trans.sq_AL = public/language/sq-AL/admin/settings/web-crawler.json
trans.sr = public/language/sr/admin/settings/web-crawler.json
trans.sv = public/language/sv/admin/settings/web-crawler.json
trans.th = public/language/th/admin/settings/web-crawler.json
diff --git a/public/language/sq-AL/admin/admin.json b/public/language/sq-AL/admin/admin.json
new file mode 100644
index 0000000000..f633c82c19
--- /dev/null
+++ b/public/language/sq-AL/admin/admin.json
@@ -0,0 +1,11 @@
+{
+ "alert.confirm-rebuild-and-restart": "Jeni i sigurt që dëshironi të rindërtoni dhe rinisni NodeBB?",
+ "alert.confirm-restart": "Jeni i sigurt që dëshironi të rinisni NodeBB?",
+
+ "acp-title": "%1 | NodeBB Paneli i Kontrollit të Administratorit ",
+ "settings-header-contents": "Përmbatja ",
+ "changes-saved": "Ndryshimet u ruajtën!",
+ "changes-saved-message": "Ndryshimet në konfigurimin e NodeBB u ruajtën me sukses!",
+ "changes-not-saved": "Ndryshimet nuk u ruajtën!",
+ "changes-not-saved-message": "NodeBB gjeti një problem gjatë ruajtjes së ndryshimeve. (%1)"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/advanced/cache.json b/public/language/sq-AL/admin/advanced/cache.json
new file mode 100644
index 0000000000..09ac0af108
--- /dev/null
+++ b/public/language/sq-AL/admin/advanced/cache.json
@@ -0,0 +1,6 @@
+{
+ "post-cache": "Post Cache",
+ "percent-full": "%1% Plot ",
+ "post-cache-size": "Post Cache Size",
+ "items-in-cache": "Items in Cache"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/advanced/database.json b/public/language/sq-AL/admin/advanced/database.json
new file mode 100644
index 0000000000..9167b381ed
--- /dev/null
+++ b/public/language/sq-AL/admin/advanced/database.json
@@ -0,0 +1,52 @@
+{
+ "x-b": "%1 b",
+ "x-mb": "%1 mb",
+ "x-gb": "%1 gb",
+ "uptime-seconds": "Uptime in Seconds",
+ "uptime-days": "Uptime in Days",
+
+ "mongo": "Mongo",
+ "mongo.version": "MongoDB Version",
+ "mongo.storage-engine": "Storage Engine",
+ "mongo.collections": "Collections",
+ "mongo.objects": "Objects",
+ "mongo.avg-object-size": "Avg. Object Size",
+ "mongo.data-size": "Data Size",
+ "mongo.storage-size": "Storage Size",
+ "mongo.index-size": "Index Size",
+ "mongo.file-size": "File Size",
+ "mongo.resident-memory": "Resident Memory",
+ "mongo.virtual-memory": "Virtual Memory",
+ "mongo.mapped-memory": "Mapped Memory",
+ "mongo.bytes-in": "Bytes In",
+ "mongo.bytes-out": "Bytes Out",
+ "mongo.num-requests": "Number of Requests",
+ "mongo.raw-info": "MongoDB Raw Info",
+ "mongo.unauthorized": "NodeBB was unable to query the MongoDB database for relevant statistics. Please ensure that the user in use by NodeBB contains the "clusterMonitor" role for the "admin" database.",
+
+ "redis": "Redis",
+ "redis.version": "Redis Version",
+ "redis.keys": "Keys",
+ "redis.expires": "Expires",
+ "redis.avg-ttl": "Average TTL",
+ "redis.connected-clients": "Connected Clients",
+ "redis.connected-slaves": "Connected Slaves",
+ "redis.blocked-clients": "Blocked Clients",
+ "redis.used-memory": "Used Memory",
+ "redis.memory-frag-ratio": "Memory Fragmentation Ratio",
+ "redis.total-connections-recieved": "Total Connections Received",
+ "redis.total-commands-processed": "Total Commands Processed",
+ "redis.iops": "Instantaneous Ops. Per Second",
+ "redis.iinput": "Instantaneous Input Per Second",
+ "redis.ioutput": "Instantaneous Output Per Second",
+ "redis.total-input": "Total Input",
+ "redis.total-output": "Total Ouput",
+
+ "redis.keyspace-hits": "Keyspace Hits",
+ "redis.keyspace-misses": "Keyspace Misses",
+ "redis.raw-info": "Redis Raw Info",
+
+ "postgres": "Postgres",
+ "postgres.version": "PostgreSQL Version",
+ "postgres.raw-info": "Postgres Raw Info"
+}
diff --git a/public/language/sq-AL/admin/advanced/errors.json b/public/language/sq-AL/admin/advanced/errors.json
new file mode 100644
index 0000000000..546f0f1508
--- /dev/null
+++ b/public/language/sq-AL/admin/advanced/errors.json
@@ -0,0 +1,14 @@
+{
+ "figure-x": "Figure %1",
+ "error-events-per-day": "%1
events per day",
+ "error.404": "404 Not Found",
+ "error.503": "503 Service Unavailable",
+ "manage-error-log": "Manage Error Log",
+ "export-error-log": "Export Error Log (CSV)",
+ "clear-error-log": "Clear Error Log",
+ "route": "Route",
+ "count": "Count",
+ "no-routes-not-found": "Hooray! No 404 errors!",
+ "clear404-confirm": "Are you sure you wish to clear the 404 error logs?",
+ "clear404-success": "\"404 Not Found\" errors cleared"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/advanced/events.json b/public/language/sq-AL/admin/advanced/events.json
new file mode 100644
index 0000000000..b2c2033fb5
--- /dev/null
+++ b/public/language/sq-AL/admin/advanced/events.json
@@ -0,0 +1,13 @@
+{
+ "events": "Events",
+ "no-events": "There are no events",
+ "control-panel": "Events Control Panel",
+ "delete-events": "Delete Events",
+ "confirm-delete-all-events": "Are you sure you want to delete all logged events?",
+ "filters": "Filters",
+ "filters-apply": "Apply Filters",
+ "filter-type": "Event Type",
+ "filter-start": "Start Date",
+ "filter-end": "End Date",
+ "filter-perPage": "Per Page"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/advanced/logs.json b/public/language/sq-AL/admin/advanced/logs.json
new file mode 100644
index 0000000000..b9de400e1c
--- /dev/null
+++ b/public/language/sq-AL/admin/advanced/logs.json
@@ -0,0 +1,7 @@
+{
+ "logs": "Logs",
+ "control-panel": "Logs Control Panel",
+ "reload": "Reload Logs",
+ "clear": "Clear Logs",
+ "clear-success": "Logs Cleared!"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/appearance/customise.json b/public/language/sq-AL/admin/appearance/customise.json
new file mode 100644
index 0000000000..97abb5ede5
--- /dev/null
+++ b/public/language/sq-AL/admin/appearance/customise.json
@@ -0,0 +1,16 @@
+{
+ "custom-css": "Custom CSS/LESS",
+ "custom-css.description": "Enter your own CSS/LESS declarations here, which will be applied after all other styles.",
+ "custom-css.enable": "Enable Custom CSS/LESS",
+
+ "custom-js": "Custom Javascript",
+ "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.",
+ "custom-js.enable": "Enable Custom Javascript",
+
+ "custom-header": "Custom Header",
+ "custom-header.description": "Enter custom HTML here (ex. Meta Tags, etc.), which will be appended to the <head>
section of your forum's markup. Script tags are allowed, but are discouraged, as the Custom Javascript tab is available.",
+ "custom-header.enable": "Enable Custom Header",
+
+ "custom-css.livereload": "Enable Live Reload",
+ "custom-css.livereload.description": "Enable this to force all sessions on every device under your account to refresh whenever you click save"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/appearance/skins.json b/public/language/sq-AL/admin/appearance/skins.json
new file mode 100644
index 0000000000..4db6fbdd8a
--- /dev/null
+++ b/public/language/sq-AL/admin/appearance/skins.json
@@ -0,0 +1,9 @@
+{
+ "loading": "Loading Skins...",
+ "homepage": "Homepage",
+ "select-skin": "Select Skin",
+ "current-skin": "Current Skin",
+ "skin-updated": "Skin Updated",
+ "applied-success": "%1 skin was succesfully applied",
+ "revert-success": "Skin reverted to base colours"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/appearance/themes.json b/public/language/sq-AL/admin/appearance/themes.json
new file mode 100644
index 0000000000..597830f379
--- /dev/null
+++ b/public/language/sq-AL/admin/appearance/themes.json
@@ -0,0 +1,11 @@
+{
+ "checking-for-installed": "Checking for installed themes...",
+ "homepage": "Homepage",
+ "select-theme": "Select Theme",
+ "current-theme": "Current Theme",
+ "no-themes": "No installed themes found",
+ "revert-confirm": "Are you sure you wish to restore the default NodeBB theme?",
+ "theme-changed": "Theme Changed",
+ "revert-success": "You have successfully reverted your NodeBB back to it's default theme.",
+ "restart-to-activate": "Please rebuild and restart your NodeBB to fully activate this theme."
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/dashboard.json b/public/language/sq-AL/admin/dashboard.json
new file mode 100644
index 0000000000..4d39626882
--- /dev/null
+++ b/public/language/sq-AL/admin/dashboard.json
@@ -0,0 +1,90 @@
+{
+ "forum-traffic": "Forum Traffic",
+ "page-views": "Page Views",
+ "unique-visitors": "Unique Visitors",
+ "logins": "Logins",
+ "new-users": "New Users",
+ "posts": "Posts",
+ "topics": "Topics",
+ "page-views-seven": "Last 7 Days",
+ "page-views-thirty": "Last 30 Days",
+ "page-views-last-day": "Last 24 hours",
+ "page-views-custom": "Custom Date Range",
+ "page-views-custom-start": "Range Start",
+ "page-views-custom-end": "Range End",
+ "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD
",
+ "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD
",
+
+ "stats.yesterday": "Yesterday",
+ "stats.today": "Today",
+ "stats.last-week": "Last Week",
+ "stats.this-week": "This Week",
+ "stats.last-month": "Last Month",
+ "stats.this-month": "This Month",
+ "stats.all": "All Time",
+
+ "updates": "Updates",
+ "running-version": "You are running NodeBB v%1.",
+ "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.",
+ "up-to-date": "
You are up-to-date
", + "upgrade-available": "A new version (v%1) has been released. Consider upgrading your NodeBB.
", + "prerelease-upgrade-available": "This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider upgrading your NodeBB.
", + "prerelease-warning": "This is a pre-release version of NodeBB. Unintended bugs may occur.
", + "fallback-emailer-not-found": "Fallback emailer not found!", + "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", + "latest-lookup-failed": "Failed to look up latest available version of NodeBB
", + + "notices": "Notices", + "restart-not-required": "Restart not required", + "restart-required": "Restart required", + "search-plugin-installed": "Search Plugin installed", + "search-plugin-not-installed": "Search Plugin not installed", + "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", + + "control-panel": "System Control", + "rebuild-and-restart": "Rebuild & Restart", + "restart": "Restart", + "restart-warning": "Rebuilding or Restarting your NodeBB will drop all existing connections for a few seconds.", + "restart-disabled": "Rebuilding and Restarting your NodeBB has been disabled as you do not seem to be running it via the appropriate daemon.", + "maintenance-mode": "Maintenance Mode", + "maintenance-mode-title": "Click here to set up maintenance mode for NodeBB", + "realtime-chart-updates": "Realtime Chart Updates", + + "active-users": "Active Users", + "active-users.users": "Users", + "active-users.guests": "Guests", + "active-users.total": "Total", + "active-users.connections": "Connections", + + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", + "registered": "Registered", + + "user-presence": "User Presence", + "on-categories": "On categories list", + "reading-posts": "Reading posts", + "browsing-topics": "Browsing topics", + "recent": "Recent", + "unread": "Unread", + + "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", + + "graphs.page-views": "Page Views", + "graphs.page-views-registered": "Page Views Registered", + "graphs.page-views-guest": "Page Views Guest", + "graphs.page-views-bot": "Page Views Bot", + "graphs.unique-visitors": "Unique Visitors", + "graphs.registered-users": "Registered Users", + "graphs.guest-users": "Guest Users", + "last-restarted-by": "Last restarted by", + "no-users-browsing": "No users browsing", + + "back-to-dashboard": "Back to Dashboard", + "details.no-users": "No users have joined within the selected timeframe", + "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", + "details.no-logins": "No logins have been recorded within the selected timeframe", + "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", + "details.logins-login-time": "Login Time" +} diff --git a/public/language/sq-AL/admin/development/info.json b/public/language/sq-AL/admin/development/info.json new file mode 100644 index 0000000000..11202d9c3a --- /dev/null +++ b/public/language/sq-AL/admin/development/info.json @@ -0,0 +1,25 @@ +{ + "you-are-on": "You are on %1:%2", + "ip": "IP %1", + "nodes-responded": "%1 nodes responded within %2ms!", + "host": "host", + "primary": "primary / run jobs", + "pid": "pid", + "nodejs": "nodejs", + "online": "online", + "git": "git", + "process-memory": "process memory", + "system-memory": "system memory", + "used-memory-process": "Used memory by process", + "used-memory-os": "Used system memory", + "total-memory-os": "Total system memory", + "load": "system load", + "cpu-usage": "cpu usage", + "uptime": "uptime", + + "registered": "Registered", + "sockets": "Sockets", + "guests": "Guests", + + "info": "Info" +} \ No newline at end of file diff --git a/public/language/sq-AL/admin/development/logger.json b/public/language/sq-AL/admin/development/logger.json new file mode 100644 index 0000000000..6ab9558149 --- /dev/null +++ b/public/language/sq-AL/admin/development/logger.json @@ -0,0 +1,12 @@ +{ + "logger-settings": "Logger Settings", + "description": "By enabling the check boxes, you will receive logs to your terminal. If you specify a path, logs will then be saved to a file instead. HTTP logging is useful for collecting statistics about who, when, and what people access on your forum. In addition to logging HTTP requests, we can also log socket.io events. Socket.io logging, in combination with redis-cli monitor, can be very helpful for learning NodeBB's internals.", + "explanation": "Simply check/uncheck the logging settings to enable or disable logging on the fly. No restart needed.", + "enable-http": "Enable HTTP logging", + "enable-socket": "Enable socket.io event logging", + "file-path": "Path to log file", + "file-path-placeholder": "/path/to/log/file.log ::: leave blank to log to your terminal", + + "control-panel": "Logger Control Panel", + "update-settings": "Update Logger Settings" +} \ No newline at end of file diff --git a/public/language/sq-AL/admin/extend/plugins.json b/public/language/sq-AL/admin/extend/plugins.json new file mode 100644 index 0000000000..f7e60c4360 --- /dev/null +++ b/public/language/sq-AL/admin/extend/plugins.json @@ -0,0 +1,57 @@ +{ + "trending": "Trending", + "installed": "Installed", + "active": "Active", + "inactive": "Inactive", + "out-of-date": "Out of Date", + "none-found": "No plugins found.", + "none-active": "No Active Plugins", + "find-plugins": "Find Plugins", + + "plugin-search": "Plugin Search", + "plugin-search-placeholder": "Search for plugin...", + "submit-anonymous-usage": "Submit anonymous plugin usage data.", + "reorder-plugins": "Re-order Plugins", + "order-active": "Order Active Plugins", + "dev-interested": "Interested in writing plugins for NodeBB?", + "docs-info": "Full documentation regarding plugin authoring can be found in the NodeBB Docs Portal.", + + "order.description": "Certain plugins work ideally when they are initialised before/after other plugins.", + "order.explanation": "Plugins load in the order specified here, from top to bottom", + + "plugin-item.themes": "Themes", + "plugin-item.deactivate": "Deactivate", + "plugin-item.activate": "Activate", + "plugin-item.install": "Install", + "plugin-item.uninstall": "Uninstall", + "plugin-item.settings": "Settings", + "plugin-item.installed": "Installed", + "plugin-item.latest": "Latest", + "plugin-item.upgrade": "Upgrade", + "plugin-item.more-info": "For more information:", + "plugin-item.unknown": "Unknown", + "plugin-item.unknown-explanation": "The state of this plugin could not be determined, possibly due to a misconfiguration error.", + "plugin-item.compatible": "This plugin works on NodeBB %1", + "plugin-item.not-compatible": "This plugin has no compatibility data, make sure it works before installing on your production environment.", + + "alert.enabled": "Plugin Enabled", + "alert.disabled": "Plugin Disabled", + "alert.upgraded": "Plugin Upgraded", + "alert.installed": "Plugin Installed", + "alert.uninstalled": "Plugin Uninstalled", + "alert.activate-success": "Please rebuild and restart your NodeBB to fully activate this plugin", + "alert.deactivate-success": "Plugin successfully deactivated", + "alert.upgrade-success": "Please rebuild and restart your NodeBB to fully upgrade this plugin.", + "alert.install-success": "Plugin successfully installed, please activate the plugin.", + "alert.uninstall-success": "The plugin has been successfully deactivated and uninstalled.", + "alert.suggest-error": "NodeBB could not reach the package manager, proceed with installation of latest version?
NodeBB could not reach the package manager, an upgrade is not suggested at this time.
", + "alert.incompatible": "Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.
", + "alert.possibly-incompatible": "No Compatibility Information Found
This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.
In the event that NodeBB cannot boot properly:
$ ./nodebb reset plugin=\"%1\"
Continue installation of latest version of this plugin?
", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", + + "license.title": "Plugin License Information", + "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", + "license.cta": "Do you wish to continue with activating this plugin?" +} diff --git a/public/language/sq-AL/admin/extend/rewards.json b/public/language/sq-AL/admin/extend/rewards.json new file mode 100644 index 0000000000..df89d441a7 --- /dev/null +++ b/public/language/sq-AL/admin/extend/rewards.json @@ -0,0 +1,15 @@ +{ + "rewards": "Rewards", + "condition-if-users": "If User's", + "condition-is": "Is:", + "condition-then": "Then:", + "max-claims": "Amount of times reward is claimable", + "zero-infinite": "Enter 0 for infinite", + "delete": "Delete", + "enable": "Enable", + "disable": "Disable", + + "alert.delete-success": "Successfully deleted reward", + "alert.no-inputs-found": "Illegal reward - no inputs found!", + "alert.save-success": "Successfully saved rewards" +} \ No newline at end of file diff --git a/public/language/sq-AL/admin/extend/widgets.json b/public/language/sq-AL/admin/extend/widgets.json new file mode 100644 index 0000000000..ab9bfb4cdb --- /dev/null +++ b/public/language/sq-AL/admin/extend/widgets.json @@ -0,0 +1,30 @@ +{ + "available": "Available Widgets", + "explanation": "Select a widget from the dropdown menu and then drag and drop it into a template's widget area on the left.", + "none-installed": "No widgets found! Activate the widget essentials plugin in the plugins control panel.", + "clone-from": "Clone widgets from", + "containers.available": "Available Containers", + "containers.explanation": "Drag and drop on top of any active widget", + "containers.none": "None", + "container.well": "Well", + "container.jumbotron": "Jumbotron", + "container.panel": "Panel", + "container.panel-header": "Panel Header", + "container.panel-body": "Panel Body", + "container.alert": "Alert", + + "alert.confirm-delete": "Are you sure you wish to delete this widget?", + "alert.updated": "Widgets Updated", + "alert.update-success": "Successfully updated widgets", + "alert.clone-success": "Successfully cloned widgets", + + "error.select-clone": "Please select a page to clone from", + + "title": "Title", + "title.placeholder": "Title (only shown on some containers)", + "container": "Container", + "container.placeholder": "Drag and drop a container or enter HTML here.", + "show-to-groups": "Show to groups", + "hide-from-groups": "Hide from groups", + "hide-on-mobile": "Hide on mobile" +} \ No newline at end of file diff --git a/public/language/sq-AL/admin/manage/admins-mods.json b/public/language/sq-AL/admin/manage/admins-mods.json new file mode 100644 index 0000000000..e0f39ed5d4 --- /dev/null +++ b/public/language/sq-AL/admin/manage/admins-mods.json @@ -0,0 +1,10 @@ +{ + "administrators": "Administrators", + "global-moderators": "Global Moderators", + "no-global-moderators": "No Global Moderators", + "moderators-of-category": "%1 Moderators", + "no-moderators": "No Moderators", + "add-administrator": "Add Administrator", + "add-global-moderator": "Add Global Moderator", + "add-moderator": "Add Moderator" +} \ No newline at end of file diff --git a/public/language/sq-AL/admin/manage/categories.json b/public/language/sq-AL/admin/manage/categories.json new file mode 100644 index 0000000000..ed5462e9be --- /dev/null +++ b/public/language/sq-AL/admin/manage/categories.json @@ -0,0 +1,92 @@ +{ + "settings": "Category Settings", + "privileges": "Privileges", + + "name": "Category Name", + "description": "Category Description", + "bg-color": "Background Colour", + "text-color": "Text Colour", + "bg-image-size": "Background Image Size", + "custom-class": "Custom Class", + "num-recent-replies": "# of Recent Replies", + "ext-link": "External Link", + "subcategories-per-page": "Subcategories per page", + "is-section": "Treat this category as a section", + "post-queue": "Post queue", + "tag-whitelist": "Tag Whitelist", + "upload-image": "Upload Image", + "delete-image": "Remove", + "category-image": "Category Image", + "parent-category": "Parent Category", + "optional-parent-category": "(Optional) Parent Category", + "top-level": "Top Level", + "parent-category-none": "(None)", + "copy-parent": "Copy Parent", + "copy-settings": "Copy Settings From", + "optional-clone-settings": "(Optional) Clone Settings From Category", + "clone-children": "Clone Children Categories And Settings", + "purge": "Purge Category", + + "enable": "Enable", + "disable": "Disable", + "edit": "Edit", + "analytics": "Analytics", + "view-category": "View category", + "set-order": "Set order", + "set-order-help": "Setting the order of the category will move this category to that order and update the order of other categories as necessary. Minimum order is 1 which puts the category at the top.", + + "select-category": "Select Category", + "set-parent-category": "Set Parent Category", + + "privileges.description": "You can configure the access control privileges for portions of the site in this section. Privileges can be granted on a per-user or a per-group basis. Select the domain of effect from the dropdown below.", + "privileges.category-selector": "Configuring privileges for ", + "privileges.warning": "Note: Privilege settings take effect immediately. It is not necessary to save the category after adjusting these settings.", + "privileges.section-viewing": "Viewing Privileges", + "privileges.section-posting": "Posting Privileges", + "privileges.section-moderation": "Moderation Privileges", + "privileges.section-other": "Other", + "privileges.section-user": "User", + "privileges.search-user": "Add User", + "privileges.no-users": "No user-specific privileges in this category.", + "privileges.section-group": "Group", + "privileges.group-private": "This group is private", + "privileges.inheritance-exception": "This group does not inherit privileges from registered-users group", + "privileges.banned-user-inheritance": "Banned users inherit privileges from banned-users group", + "privileges.search-group": "Add Group", + "privileges.copy-to-children": "Copy to Children", + "privileges.copy-from-category": "Copy from Category", + "privileges.copy-privileges-to-all-categories": "Copy to All Categories", + "privileges.copy-group-privileges-to-children": "Copy this group's privileges to the children of this category.", + "privileges.copy-group-privileges-to-all-categories": "Copy this group's privileges to all categories.", + "privileges.copy-group-privileges-from": "Copy this group's privileges from another category.", + "privileges.inherit": "If theregistered-users
group is granted a specific privilege, all other groups receive an implicit privilege, even if they are not explicitly defined/checked. This implicit privilege is shown to you because all users are part of the registered-users
user group, and so, privileges for additional groups need not be explicitly granted.",
+ "privileges.copy-success": "Privileges copied!",
+
+ "analytics.back": "Back to Categories List",
+ "analytics.title": "Analytics for \"%1\" category",
+ "analytics.pageviews-hourly": "Figure 1 – Hourly page views for this category",
+ "analytics.pageviews-daily": "Figure 2 – Daily page views for this category",
+ "analytics.topics-daily": "Figure 3 – Daily topics created in this category",
+ "analytics.posts-daily": "Figure 4 – Daily posts made in this category",
+
+ "alert.created": "Created",
+ "alert.create-success": "Category successfully created!",
+ "alert.none-active": "You have no active categories.",
+ "alert.create": "Create a Category",
+ "alert.confirm-purge": "Do you really want to purge this category \"%1\"?
Purging a category will remove all topics and posts, and delete the category from the database. If you want to remove a category temporarily, you'll want to \"disable\" the category instead.
", + "alert.purge-success": "Category purged!", + "alert.copy-success": "Settings Copied!", + "alert.set-parent-category": "Set Parent Category", + "alert.updated": "Updated Categories", + "alert.updated-success": "Category IDs %1 successfully updated.", + "alert.upload-image": "Upload category image", + "alert.find-user": "Find a User", + "alert.user-search": "Search for a user here...", + "alert.find-group": "Find a Group", + "alert.group-search": "Search for a group here...", + "alert.not-enough-whitelisted-tags": "Whitelisted tags are less than minimum tags, you need to create more whitelisted tags!", + "collapse-all": "Collapse All", + "expand-all": "Expand All", + "disable-on-create": "Disable on create", + "no-matches": "No matches" +} \ No newline at end of file diff --git a/public/language/sq-AL/admin/manage/digest.json b/public/language/sq-AL/admin/manage/digest.json new file mode 100644 index 0000000000..38c634d1f6 --- /dev/null +++ b/public/language/sq-AL/admin/manage/digest.json @@ -0,0 +1,22 @@ +{ + "lead": "A listing of digest delivery stats and times is displayed below.", + "disclaimer": "Please be advised that email delivery is not guaranteed, due to the nature of email technology. Many variables factor into whether an email sent to the recipient server is ultimately delivered into the user's inbox, including server reputation, blacklisted IP addresses, and whether DKIM/SPF/DMARC is configured.", + "disclaimer-continued": "A successful delivery means the message was sent successfully by NodeBB and acknowledged by the recipient server. It does not mean the email landed in the inbox. For best results, we recommend using a third-party email delivery service such as SendGrid.", + + "user": "User", + "subscription": "Subscription Type", + "last-delivery": "Last successful delivery", + "default": "System default", + "default-help": "System default means the user has not explicitly overridden the global forum setting for digests, which is currently: "%1"", + "resend": "Resend Digest", + "resend-all-confirm": "Are you sure you wish to manually execute this digest run?", + "resent-single": "Manual digest resend completed", + "resent-day": "Daily digest resent", + "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", + "resent-month": "Monthly digest resent", + "null": "Never", + "manual-run": "Manual digest run:", + + "no-delivery-data": "No delivery data found" +} diff --git a/public/language/sq-AL/admin/manage/groups.json b/public/language/sq-AL/admin/manage/groups.json new file mode 100644 index 0000000000..911fcce010 --- /dev/null +++ b/public/language/sq-AL/admin/manage/groups.json @@ -0,0 +1,44 @@ +{ + "name": "Group Name", + "badge": "Badge", + "properties": "Properties", + "description": "Group Description", + "member-count": "Member Count", + "system": "System", + "hidden": "Hidden", + "private": "Private", + "edit": "Edit", + "delete": "Delete", + "privileges": "Privileges", + "download-csv": "CSV", + "search-placeholder": "Search", + "create": "Create Group", + "description-placeholder": "A short description about your group", + "create-button": "Create", + + "alerts.create-failure": "Uh-OhThere was a problem creating your group. Please try again later!
", + "alerts.confirm-delete": "Are you sure you wish to delete this group?", + + "edit.name": "Name", + "edit.description": "Description", + "edit.user-title": "Title of Members", + "edit.icon": "Group Icon", + "edit.label-color": "Group Label Color", + "edit.text-color": "Group Text Color", + "edit.show-badge": "Show Badge", + "edit.private-details": "If enabled, joining of groups requires approval from a group owner.", + "edit.private-override": "Warning: Private groups is disabled at system level, which overrides this option.", + "edit.disable-join": "Disable join requests", + "edit.disable-leave": "Disallow users from leaving the group", + "edit.hidden": "Hidden", + "edit.hidden-details": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "edit.add-user": "Add User to Group", + "edit.add-user-search": "Search Users", + "edit.members": "Member List", + "control-panel": "Groups Control Panel", + "revert": "Revert", + + "edit.no-users-found": "No Users Found", + "edit.confirm-remove-user": "Are you sure you want to remove this user?", + "edit.save-success": "Changes saved!" +} \ No newline at end of file diff --git a/public/language/sq-AL/admin/manage/privileges.json b/public/language/sq-AL/admin/manage/privileges.json new file mode 100644 index 0000000000..13a38819b0 --- /dev/null +++ b/public/language/sq-AL/admin/manage/privileges.json @@ -0,0 +1,64 @@ +{ + "global": "Global", + "admin": "Admin", + "group-privileges": "Group Privileges", + "user-privileges": "User Privileges", + "edit-privileges": "Edit Privileges", + "select-clear-all": "Select/Clear All", + "chat": "Chat", + "upload-images": "Upload Images", + "upload-files": "Upload Files", + "signature": "Signature", + "ban": "Ban", + "mute": "Mute", + "invite": "Invite", + "search-content": "Search Content", + "search-users": "Search Users", + "search-tags": "Search Tags", + "view-users": "View Users", + "view-tags": "View Tags", + "view-groups": "View Groups", + "allow-local-login": "Local Login", + "allow-group-creation": "Group Create", + "view-users-info": "View Users Info", + "find-category": "Find Category", + "access-category": "Access Category", + "access-topics": "Access Topics", + "create-topics": "Create Topics", + "reply-to-topics": "Reply to Topics", + "schedule-topics": "Schedule Topics", + "tag-topics": "Tag Topics", + "edit-posts": "Edit Posts", + "view-edit-history": "View Edit History", + "delete-posts": "Delete Posts", + "view_deleted": "View Deleted Posts", + "upvote-posts": "Upvote Posts", + "downvote-posts": "Downvote Posts", + "delete-topics": "Delete Topics", + "purge": "Purge", + "moderate": "Moderate", + "admin-dashboard": "Dashboard", + "admin-categories": "Categories", + "admin-privileges": "Privileges", + "admin-users": "Users", + "admin-admins-mods": "Admins & Mods", + "admin-groups": "Groups", + "admin-tags": "Tags", + "admin-settings": "Settings", + + "alert.confirm-moderate": "Are you sure you wish to grant the moderation privilege to this user group? This group is public, and any users can join at will.", + "alert.confirm-admins-mods": "Are you sure you wish to grant the "Admins & Mods" privilege to this user/group? Users with this privilege are able to promote and demote other users into privileged positions, including super administrator", + "alert.confirm-save": "Please confirm your intention to save these privileges", + "alert.saved": "Privilege changes saved and applied", + "alert.confirm-discard": "Are you sure you wish to discard your privilege changes?", + "alert.discarded": "Privilege changes discarded", + "alert.confirm-copyToAll": "Are you sure you wish to apply this set of %1 to all categories?", + "alert.confirm-copyToAllGroup": "Are you sure you wish to apply this group's set of %1 to all categories?", + "alert.confirm-copyToChildren": "Are you sure you wish to apply this set of %1 to all descendant (child) categories?", + "alert.confirm-copyToChildrenGroup": "Are you sure you wish to apply this group's set of %1 to all descendant (child) categories?", + "alert.no-undo": "This action cannot be undone.", + "alert.admin-warning": "Administrators implicitly get all privileges", + "alert.copyPrivilegesFrom-title": "Select a category to copy from", + "alert.copyPrivilegesFrom-warning": "This will copy %1 from the selected category.", + "alert.copyPrivilegesFromGroup-warning": "This will copy this group's set of %1 from the selected category." +} \ No newline at end of file diff --git a/public/language/sq-AL/admin/manage/registration.json b/public/language/sq-AL/admin/manage/registration.json new file mode 100644 index 0000000000..f51b4d56e6 --- /dev/null +++ b/public/language/sq-AL/admin/manage/registration.json @@ -0,0 +1,20 @@ +{ + "queue": "Queue", + "description": "There are no users in the registration queue.CTRL
to select multiple tags.",
+ "create": "Create Tag",
+ "modify": "Modify Tags",
+ "rename": "Rename Tags",
+ "delete": "Delete Selected Tags",
+ "search": "Search for tags...",
+ "settings": "Tags Settings",
+ "name": "Tag Name",
+
+ "alerts.editing": "Editing tag(s)",
+ "alerts.confirm-delete": "Do you want to delete the selected tags?",
+ "alerts.update-success": "Tag Updated!",
+ "reset-colors": "Reset colors"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/manage/uploads.json b/public/language/sq-AL/admin/manage/uploads.json
new file mode 100644
index 0000000000..72a695ccdc
--- /dev/null
+++ b/public/language/sq-AL/admin/manage/uploads.json
@@ -0,0 +1,11 @@
+{
+ "upload-file": "Upload File",
+ "filename": "Filename",
+ "usage": "Post Usage",
+ "orphaned": "Orphaned",
+ "size/filecount": "Size / Filecount",
+ "confirm-delete": "Do you really want to delete this file?",
+ "filecount": "%1 files",
+ "new-folder": "New Folder",
+ "name-new-folder": "Enter a name for new the folder"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/manage/users.json b/public/language/sq-AL/admin/manage/users.json
new file mode 100644
index 0000000000..2fe43e0e2a
--- /dev/null
+++ b/public/language/sq-AL/admin/manage/users.json
@@ -0,0 +1,111 @@
+{
+ "users": "Users",
+ "edit": "Actions",
+ "make-admin": "Make Admin",
+ "remove-admin": "Remove Admin",
+ "validate-email": "Validate Email",
+ "send-validation-email": "Send Validation Email",
+ "password-reset-email": "Send Password Reset Email",
+ "force-password-reset": "Force Password Reset & Log User Out",
+ "ban": "Ban User(s)",
+ "temp-ban": "Ban User(s) Temporarily",
+ "unban": "Unban User(s)",
+ "reset-lockout": "Reset Lockout",
+ "reset-flags": "Reset Flags",
+ "delete": "Delete User(s)",
+ "delete-content": "Delete User(s) Content",
+ "purge": "Delete User(s) and Content",
+ "download-csv": "Download CSV",
+ "manage-groups": "Manage Groups",
+ "add-group": "Add Group",
+ "create": "Create User",
+ "invite": "Invite by Email",
+ "new": "New User",
+ "filter-by": "Filter by",
+ "pills.unvalidated": "Not Validated",
+ "pills.validated": "Validated",
+ "pills.banned": "Banned",
+
+ "50-per-page": "50 per page",
+ "100-per-page": "100 per page",
+ "250-per-page": "250 per page",
+ "500-per-page": "500 per page",
+
+ "search.uid": "By User ID",
+ "search.uid-placeholder": "Enter a user ID to search",
+ "search.username": "By User Name",
+ "search.username-placeholder": "Enter a username to search",
+ "search.email": "By Email",
+ "search.email-placeholder": "Enter a email to search",
+ "search.ip": "By IP Address",
+ "search.ip-placeholder": "Enter an IP Address to search",
+ "search.not-found": "User not found!",
+
+ "inactive.3-months": "3 months",
+ "inactive.6-months": "6 months",
+ "inactive.12-months": "12 months",
+
+ "users.uid": "uid",
+ "users.username": "username",
+ "users.email": "email",
+ "users.no-email": "(no email)",
+ "users.ip": "IP",
+ "users.postcount": "postcount",
+ "users.reputation": "reputation",
+ "users.flags": "flags",
+ "users.joined": "joined",
+ "users.last-online": "last online",
+ "users.banned": "banned",
+
+ "create.username": "User Name",
+ "create.email": "Email",
+ "create.email-placeholder": "Email of this user",
+ "create.password": "Password",
+ "create.password-confirm": "Confirm Password",
+
+ "temp-ban.length": "Length",
+ "temp-ban.reason": "Reason (Optional)",
+ "temp-ban.hours": "Hours",
+ "temp-ban.days": "Days",
+ "temp-ban.explanation": "Enter the length of time for the ban. Note that a time of 0 will be a considered a permanent ban.",
+
+ "alerts.confirm-ban": "Do you really want to ban this user permanently?",
+ "alerts.confirm-ban-multi": "Do you really want to ban these users permanently?",
+ "alerts.ban-success": "User(s) banned!",
+ "alerts.button-ban-x": "Ban %1 user(s)",
+ "alerts.unban-success": "User(s) unbanned!",
+ "alerts.lockout-reset-success": "Lockout(s) reset!",
+ "alerts.flag-reset-success": "Flags(s) reset!",
+ "alerts.no-remove-yourself-admin": "You can't remove yourself as Administrator!",
+ "alerts.make-admin-success": "User is now administrator.",
+ "alerts.confirm-remove-admin": "Do you really want to remove this administrator?",
+ "alerts.remove-admin-success": "User is no longer administrator.",
+ "alerts.make-global-mod-success": "User is now global moderator.",
+ "alerts.confirm-remove-global-mod": "Do you really want to remove this global moderator?",
+ "alerts.remove-global-mod-success": "User is no longer global moderator.",
+ "alerts.make-moderator-success": "User is now moderator.",
+ "alerts.confirm-remove-moderator": "Do you really want to remove this moderator?",
+ "alerts.remove-moderator-success": "User is no longer moderator.",
+ "alerts.confirm-validate-email": "Do you want to validate email(s) of these user(s)?",
+ "alerts.confirm-force-password-reset": "Are you sure you want to force the password reset and log out these user(s)?",
+ "alerts.validate-email-success": "Emails validated",
+ "alerts.validate-force-password-reset-success": "User(s) passwords have been reset and their existing sessions have been revoked.",
+ "alerts.password-reset-confirm": "Do you want to send password reset email(s) to these user(s)?",
+ "alerts.confirm-delete": "Warning!Do you really want to delete user(s)?
This action is not reversible! Only the user account will be deleted, their posts and topics will remain.
", + "alerts.delete-success": "User(s) Deleted!", + "alerts.confirm-delete-content": "Warning!Do you really want to delete these user(s) content?
This action is not reversible! The users' accounts will remain, but their posts and topics will be deleted.
", + "alerts.delete-content-success": "User(s) Content Deleted!", + "alerts.confirm-purge": "Warning!Do you really want to delete user(s) and their content?
This action is not reversible! All user data and content will be erased!
", + "alerts.create": "Create User", + "alerts.button-create": "Create", + "alerts.button-cancel": "Cancel", + "alerts.error-passwords-different": "Passwords must match!", + "alerts.error-x": "Error%1
", + "alerts.create-success": "User created!", + + "alerts.prompt-email": "Emails: ", + "alerts.email-sent-to": "An invitation email has been sent to %1", + "alerts.x-users-found": "%1 user(s) found, (%2 seconds)", + "export-users-started": "Exporting users as csv, this might take a while. You will receive a notification when it is complete.", + "export-users-completed": "Users exported as csv, click here to download." +} \ No newline at end of file diff --git a/public/language/sq-AL/admin/menu.json b/public/language/sq-AL/admin/menu.json new file mode 100644 index 0000000000..5b22fbeb36 --- /dev/null +++ b/public/language/sq-AL/admin/menu.json @@ -0,0 +1,89 @@ +{ + "section-dashboard": "Dashboards", + "dashboard/overview": "Overview", + "dashboard/logins": "Logins", + "dashboard/users": "Users", + "dashboard/topics": "Topics", + "dashboard/searches": "Searches", + "section-general": "General", + + "section-manage": "Manage", + "manage/categories": "Categories", + "manage/privileges": "Privileges", + "manage/tags": "Tags", + "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", + "manage/registration": "Registration Queue", + "manage/post-queue": "Post Queue", + "manage/groups": "Groups", + "manage/ip-blacklist": "IP Blacklist", + "manage/uploads": "Uploads", + "manage/digest": "Digests", + + "section-settings": "Settings", + "settings/general": "General", + "settings/homepage": "Home Page", + "settings/navigation": "Navigation", + "settings/reputation": "Reputation & Flags", + "settings/email": "Email", + "settings/user": "Users", + "settings/group": "Groups", + "settings/guest": "Guests", + "settings/uploads": "Uploads", + "settings/languages": "Languages", + "settings/post": "Posts", + "settings/chat": "Chats", + "settings/pagination": "Pagination", + "settings/tags": "Tags", + "settings/notifications": "Notifications", + "settings/api": "API Access", + "settings/sounds": "Sounds", + "settings/social": "Social", + "settings/cookies": "Cookies", + "settings/web-crawler": "Web Crawler", + "settings/sockets": "Sockets", + "settings/advanced": "Advanced", + + "settings.page-title": "%1 Settings", + + "section-appearance": "Appearance", + "appearance/themes": "Themes", + "appearance/skins": "Skins", + "appearance/customise": "Custom Content (HTML/JS/CSS)", + + "section-extend": "Extend", + "extend/plugins": "Plugins", + "extend/widgets": "Widgets", + "extend/rewards": "Rewards", + + "section-social-auth": "Social Authentication", + + "section-plugins": "Plugins", + "extend/plugins.install": "Install Plugins", + + "section-advanced": "Advanced", + "advanced/database": "Database", + "advanced/events": "Events", + "advanced/hooks": "Hooks", + "advanced/logs": "Logs", + "advanced/errors": "Errors", + "advanced/cache": "Cache", + "development/logger": "Logger", + "development/info": "Info", + + "rebuild-and-restart-forum": "Rebuild & Restart Forum", + "restart-forum": "Restart Forum", + "logout": "Log out", + "view-forum": "View Forum", + + "search.placeholder": "Press "/" to search for settings", + "search.no-results": "No results...", + "search.search-forum": "Search the forum for ", + "search.keep-typing": "Type more to see results...", + "search.start-typing": "Start typing to see results...", + + "connection-lost": "Connection to %1 has been lost, attempting to reconnect...", + + "alerts.version": "Running NodeBB v%1", + "alerts.upgrade": "Upgrade to v%1" +} \ No newline at end of file diff --git a/public/language/sq-AL/admin/settings/advanced.json b/public/language/sq-AL/admin/settings/advanced.json new file mode 100644 index 0000000000..ddf000be64 --- /dev/null +++ b/public/language/sq-AL/admin/settings/advanced.json @@ -0,0 +1,46 @@ +{ + "maintenance-mode": "Maintenance Mode", + "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", + "maintenance-mode.status": "Maintenance Mode Status Code", + "maintenance-mode.message": "Maintenance Message", + "headers": "Headers", + "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", + "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", + "headers.csp-frame-ancestors-help": "'none', 'self'(default) or list of URIs to allow.", + "headers.powered-by": "Customise the \"Powered By\" header sent by NodeBB", + "headers.acao": "Access-Control-Allow-Origin", + "headers.acao-regex": "Access-Control-Allow-Origin Regular Expression", + "headers.acao-help": "To deny access to all sites, leave empty", + "headers.acao-regex-help": "Enter regular expressions here to match dynamic origins. To deny access to all sites, leave empty", + "headers.acac": "Access-Control-Allow-Credentials", + "headers.acam": "Access-Control-Allow-Methods", + "headers.acah": "Access-Control-Allow-Headers", + "headers.coep": "Cross-Origin-Embedder-Policy", + "headers.coep-help": "When enabled (default), will set the header torequire-corp
",
+ "headers.corp": "Cross-Origin-Resource-Policy",
+ "hsts": "Strict Transport Security",
+ "hsts.enabled": "Enabled HSTS (recommended)",
+ "hsts.maxAge": "HSTS Max Age",
+ "hsts.subdomains": "Include subdomains in HSTS header",
+ "hsts.preload": "Allow preloading of HSTS header",
+ "hsts.help": "If enabled, an HSTS header will be set for this site. You can elect to include subdomains and preloading flags in your header. If in doubt, you can leave these unchecked. More information ",
+ "traffic-management": "Traffic Management",
+ "traffic.help": "NodeBB uses a module that automatically denies requests in high-traffic situations. You can tune these settings here, although the defaults are a good starting point.",
+ "traffic.enable": "Enable Traffic Management",
+ "traffic.event-lag": "Event Loop Lag Threshold (in milliseconds)",
+ "traffic.event-lag-help": "Lowering this value decreases wait times for page loads, but will also show the \"excessive load\" message to more users. (Restart required)",
+ "traffic.lag-check-interval": "Check Interval (in milliseconds)",
+ "traffic.lag-check-interval-help": "Lowering this value causes NodeBB to become more sensitive to spikes in load, but may also cause the check to become too sensitive. (Restart required)",
+
+ "sockets.settings": "WebSocket Settings",
+ "sockets.max-attempts": "Max Reconnection Attempts",
+ "sockets.default-placeholder": "Default: %1",
+ "sockets.delay": "Reconnection Delay",
+
+ "analytics.settings": "Analytics Settings",
+ "analytics.max-cache": "Analytics Cache Max Value",
+ "analytics.max-cache-help": "On high-traffic installs, the cache could be exhausted continuously if there are more concurrent active users than the Max Cache value. (Restart required)",
+ "compression.settings": "Compression Settings",
+ "compression.enable": "Enable Compression",
+ "compression.help": "This setting enables gzip compression. For a high-traffic website in production, the best way to put compression in place is to implement it at a reverse proxy level. You can enable it here for testing purposes."
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/settings/api.json b/public/language/sq-AL/admin/settings/api.json
new file mode 100644
index 0000000000..50892925f3
--- /dev/null
+++ b/public/language/sq-AL/admin/settings/api.json
@@ -0,0 +1,16 @@
+{
+ "tokens": "Tokens",
+ "settings": "Settings",
+ "lead-text": "From this page you can configure access to the Write API in NodeBB.",
+ "intro": "By default, the Write API authenticates users based on their session cookie, but NodeBB also supports Bearer authentication via tokens generated via this page.",
+ "docs": "Click here to access the full API specification",
+
+ "require-https": "Require API usage via HTTPS only",
+ "require-https-caveat": "Note: Some installations involving load balancers may proxy their requests to NodeBB using HTTP, in which case this option should remain disabled.",
+
+ "uid": "User ID",
+ "uid-help-text": "Specify a User ID to associate with this token. If the user ID is 0
, it will be considered a master token, which can assume the identity of other users based on the _uid
parameter",
+ "description": "Description",
+ "no-description": "No description specified.",
+ "token-on-save": "Token will be generated once form is saved"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/settings/chat.json b/public/language/sq-AL/admin/settings/chat.json
new file mode 100644
index 0000000000..67898611e7
--- /dev/null
+++ b/public/language/sq-AL/admin/settings/chat.json
@@ -0,0 +1,12 @@
+{
+ "chat-settings": "Chat Settings",
+ "disable": "Disable chat",
+ "disable-editing": "Disable chat message editing/deletion",
+ "disable-editing-help": "Administrators and global moderators are exempt from this restriction",
+ "max-length": "Maximum length of chat messages",
+ "max-room-size": "Maximum number of users in chat rooms",
+ "delay": "Time between chat messages in milliseconds",
+ "notification-delay": "Notification delay for chat messages. (0 for no delay)",
+ "restrictions.seconds-edit-after": "Number of seconds a chat message will remain editable. (0 disabled)",
+ "restrictions.seconds-delete-after": "Number of seconds a chat message will remain deletable. (0 disabled)"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/settings/cookies.json b/public/language/sq-AL/admin/settings/cookies.json
new file mode 100644
index 0000000000..1ffd2dced4
--- /dev/null
+++ b/public/language/sq-AL/admin/settings/cookies.json
@@ -0,0 +1,13 @@
+{
+ "eu-consent": "EU Consent",
+ "consent.enabled": "Enabled",
+ "consent.message": "Notification message",
+ "consent.acceptance": "Acceptance message",
+ "consent.link-text": "Policy Link Text",
+ "consent.link-url": "Policy Link URL",
+ "consent.blank-localised-default": "Leave blank to use NodeBB localised defaults",
+ "settings": "Settings",
+ "cookie-domain": "Session cookie domain",
+ "max-user-sessions": "Max active sessions per user",
+ "blank-default": "Leave blank for default"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/settings/email.json b/public/language/sq-AL/admin/settings/email.json
new file mode 100644
index 0000000000..8f5cdf0f95
--- /dev/null
+++ b/public/language/sq-AL/admin/settings/email.json
@@ -0,0 +1,48 @@
+{
+ "email-settings": "Email Settings",
+ "address": "Email Address",
+ "address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
+ "from": "From Name",
+ "from-help": "The from name to display in the email.",
+
+ "smtp-transport": "SMTP Transport",
+ "smtp-transport.enabled": "Enable SMTP Transport",
+ "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
+ "smtp-transport.service": "Select a service",
+ "smtp-transport.service-custom": "Custom Service",
+ "smtp-transport.service-help": "Select a service name above in order to use the known information about it. Alternatively, select 'Custom Service' and enter the details below.",
+ "smtp-transport.gmail-warning1": "There have been reports of the Gmail service not working on accounts with heightened security. In those scenarios, you will have to configure your GMail account to allow less secure apps.",
+ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.",
+ "smtp-transport.host": "SMTP Host",
+ "smtp-transport.port": "SMTP Port",
+ "smtp-transport.security": "Connection security",
+ "smtp-transport.security-encrypted": "Encrypted",
+ "smtp-transport.security-starttls": "StartTLS",
+ "smtp-transport.security-none": "None",
+ "smtp-transport.username": "Username",
+ "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.",
+ "smtp-transport.password": "Password",
+ "smtp-transport.pool": "Enable pooled connections",
+ "smtp-transport.pool-help": "Pooling connections prevents NodeBB from creating a new connection for every email. This option only applies if SMTP Transport is enabled.",
+
+ "template": "Edit Email Template",
+ "template.select": "Select Email Template",
+ "template.revert": "Revert to Original",
+ "testing": "Email Testing",
+ "testing.select": "Select Email Template",
+ "testing.send": "Send Test Email",
+ "testing.send-help": "The test email will be sent to the currently logged in user's email address.",
+ "subscriptions": "Email Digests",
+ "subscriptions.disable": "Disable email digests",
+ "subscriptions.hour": "Digest Hour",
+ "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0
for midnight, 17
for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.url
property in config.json",
+ "title.name": "Your Community Name",
+ "title.show-in-header": "Show Site Title in Header",
+ "browser-title": "Browser Title",
+ "browser-title-help": "If no browser title is specified, the site title will be used",
+ "title-layout": "Title Layout",
+ "title-layout-help": "Define how the browser title will be structured ie. {pageTitle} | {browserTitle}",
+ "description.placeholder": "A short description about your community",
+ "description": "Site Description",
+ "keywords": "Site Keywords",
+ "keywords-placeholder": "Keywords describing your community, comma-separated",
+ "logo": "Site Logo",
+ "logo.image": "Image",
+ "logo.image-placeholder": "Path to a logo to display on forum header",
+ "logo.upload": "Upload",
+ "logo.url": "Logo Link URL",
+ "logo.url-placeholder": "The URL of the site logo",
+ "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index. url
property in config.json",
+ "logo.alt-text": "Alt Text",
+ "log.alt-text-placeholder": "Alternative text for accessibility",
+ "favicon": "Favicon",
+ "favicon.upload": "Upload",
+ "pwa": "Progressive Web App",
+ "touch-icon": "Touch Icon",
+ "touch-icon.upload": "Upload",
+ "touch-icon.help": "Recommended size and format: 512x512, PNG format only. If no touch icon is specified, NodeBB will fall back to using the favicon.",
+ "maskable-icon": "Maskable (Homescreen) Icon",
+ "maskable-icon.help": "Recommended size and format: 512x512, PNG format only. If no maskable icon is specified, NodeBB will fall back to the Touch Icon.",
+ "outgoing-links": "Outgoing Links",
+ "outgoing-links.warning-page": "Use Outgoing Links Warning Page",
+ "search": "Search",
+ "search-default-in": "Search In",
+ "search-default-in-quick": "Quick Search In",
+ "search-default-sort-by": "Sort by",
+ "outgoing-links.whitelist": "Domains to whitelist for bypassing the warning page",
+ "site-colors": "Site Color Metadata",
+ "theme-color": "Theme Color",
+ "background-color": "Background Color",
+ "background-color-help": "Color used for splash screen background when website is installed as a PWA",
+ "undo-timeout": "Undo Timeout",
+ "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.",
+ "topic-tools": "Topic Tools"
+}
diff --git a/public/language/sq-AL/admin/settings/group.json b/public/language/sq-AL/admin/settings/group.json
new file mode 100644
index 0000000000..f13933ea7e
--- /dev/null
+++ b/public/language/sq-AL/admin/settings/group.json
@@ -0,0 +1,13 @@
+{
+ "general": "General",
+ "private-groups": "Private Groups",
+ "private-groups.help": "If enabled, joining of groups requires the approval of the group owner (Default: enabled)",
+ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.",
+ "allow-multiple-badges": "Allow Multiple Badges",
+ "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.",
+ "max-name-length": "Maximum Group Name Length",
+ "max-title-length": "Maximum Group Title Length",
+ "cover-image": "Group Cover Image",
+ "default-cover": "Default Cover Images",
+ "default-cover-help": "Add comma-separated default cover images for groups that don't have an uploaded cover image"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/settings/guest.json b/public/language/sq-AL/admin/settings/guest.json
new file mode 100644
index 0000000000..75d44f37e4
--- /dev/null
+++ b/public/language/sq-AL/admin/settings/guest.json
@@ -0,0 +1,7 @@
+{
+ "settings": "Settings",
+ "handles.enabled": "Allow guest handles",
+ "handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/settings/homepage.json b/public/language/sq-AL/admin/settings/homepage.json
new file mode 100644
index 0000000000..7428d59eeb
--- /dev/null
+++ b/public/language/sq-AL/admin/settings/homepage.json
@@ -0,0 +1,8 @@
+{
+ "home-page": "Home Page",
+ "description": "Choose what page is shown when users navigate to the root URL of your forum.",
+ "home-page-route": "Home Page Route",
+ "custom-route": "Custom Route",
+ "allow-user-home-pages": "Allow User Home Pages",
+ "home-page-title": "Title of the home page (default \"Home\")"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/settings/languages.json b/public/language/sq-AL/admin/settings/languages.json
new file mode 100644
index 0000000000..bdd57849b3
--- /dev/null
+++ b/public/language/sq-AL/admin/settings/languages.json
@@ -0,0 +1,6 @@
+{
+ "language-settings": "Language Settings",
+ "description": "The default language determines the language settings for all users who are visiting your forum. 30
, or one month). Set to 0 to always display dates, leave blank to always display relative times.",
+ "timestamp.necro-threshold": "Necro Threshold (in days)",
+ "timestamp.necro-threshold-help": "A message will be shown between posts if the time between them is longer than the necro threshold. (Default: 7
, or one week). Set to 0 to disable.",
+ "timestamp.topic-views-interval": "Increment topic views interval (in minutes)",
+ "timestamp.topic-views-interval-help": "Topic views will only increment once every X minutes as defined by this setting.",
+ "teaser": "Teaser Post",
+ "teaser.last-post": "Last – Show the latest post, including the original post, if no replies",
+ "teaser.last-reply": "Last – Show the latest reply, or a \"No replies\" placeholder if no replies",
+ "teaser.first": "First",
+ "showPostPreviewsOnHover": "Show a preview of posts when mouse overed",
+ "unread": "Unread Settings",
+ "unread.cutoff": "Unread cutoff days",
+ "unread.min-track-last": "Minimum posts in topic before tracking last read",
+ "recent": "Recent Settings",
+ "recent.max-topics": "Maximum topics on /recent",
+ "recent.categoryFilter.disable": "Disable filtering of topics in ignored categories on the /recent page",
+ "signature": "Signature Settings",
+ "signature.disable": "Disable signatures",
+ "signature.no-links": "Disable links in signatures",
+ "signature.no-images": "Disable images in signatures",
+ "signature.max-length": "Maximum Signature Length",
+ "composer": "Composer Settings",
+ "composer-help": "The following settings govern the functionality and/or appearance of the post composer shown\n\t\t\t\tto users when they create new topics, or reply to existing topics.",
+ "composer.show-help": "Show \"Help\" tab",
+ "composer.enable-plugin-help": "Allow plugins to add content to the help tab",
+ "composer.custom-help": "Custom Help Text",
+ "backlinks": "Backlinks",
+ "backlinks.enabled": "Enable topic backlinks",
+ "backlinks.help": "If a post references another topic, a link back to the post will be inserted into the referenced topic at that point in time.",
+ "ip-tracking": "IP Tracking",
+ "ip-tracking.each-post": "Track IP Address for each post",
+ "enable-post-history": "Enable Post History"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/settings/reputation.json b/public/language/sq-AL/admin/settings/reputation.json
new file mode 100644
index 0000000000..4140161eb8
--- /dev/null
+++ b/public/language/sq-AL/admin/settings/reputation.json
@@ -0,0 +1,26 @@
+{
+ "reputation": "Reputation Settings",
+ "disable": "Disable Reputation System",
+ "disable-down-voting": "Disable Down Voting",
+ "votes-are-public": "All Votes Are Public",
+ "thresholds": "Activity Thresholds",
+ "min-rep-upvote": "Minimum reputation to upvote posts",
+ "upvotes-per-day": "Upvotes per day (set to 0 for unlimited upvotes)",
+ "upvotes-per-user-per-day": "Upvotes per user per day (set to 0 for unlimited upvotes)",
+ "min-rep-downvote": "Minimum reputation to downvote posts",
+ "downvotes-per-day": "Downvotes per day (set to 0 for unlimited downvotes)",
+ "downvotes-per-user-per-day": "Downvotes per user per day (set to 0 for unlimited downvotes)",
+ "min-rep-flag": "Minimum reputation to flag posts",
+ "min-rep-website": "Minimum reputation to add \"Website\" to user profile",
+ "min-rep-aboutme": "Minimum reputation to add \"About me\" to user profile",
+ "min-rep-signature": "Minimum reputation to add \"Signature\" to user profile",
+ "min-rep-profile-picture": "Minimum reputation to add \"Profile Picture\" to user profile",
+ "min-rep-cover-picture": "Minimum reputation to add \"Cover Picture\" to user profile",
+
+ "flags": "Flag Settings",
+ "flags.limit-per-target": "Maximum number of times something can be flagged",
+ "flags.limit-per-target-placeholder": "Default: 0",
+ "flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a "report" and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
+ "flags.auto-flag-on-downvote-threshold": "Number of downvotes to auto flag posts (Set to 0 to disable, default: 0)",
+ "flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/settings/social.json b/public/language/sq-AL/admin/settings/social.json
new file mode 100644
index 0000000000..23aedfcfaa
--- /dev/null
+++ b/public/language/sq-AL/admin/settings/social.json
@@ -0,0 +1,5 @@
+{
+ "post-sharing": "Post Sharing",
+ "info-plugins-additional": "Plugins can add additional networks for sharing posts.",
+ "save-success": "Successfully saved Post Sharing Networks!"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/settings/sockets.json b/public/language/sq-AL/admin/settings/sockets.json
new file mode 100644
index 0000000000..d04ee42fcf
--- /dev/null
+++ b/public/language/sq-AL/admin/settings/sockets.json
@@ -0,0 +1,6 @@
+{
+ "reconnection": "Reconnection Settings",
+ "max-attempts": "Max Reconnection Attempts",
+ "default-placeholder": "Default: %1",
+ "delay": "Reconnection Delay"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/settings/sounds.json b/public/language/sq-AL/admin/settings/sounds.json
new file mode 100644
index 0000000000..95ccbde0f1
--- /dev/null
+++ b/public/language/sq-AL/admin/settings/sounds.json
@@ -0,0 +1,9 @@
+{
+ "notifications": "Notifications",
+ "chat-messages": "Chat Messages",
+ "play-sound": "Play",
+ "incoming-message": "Incoming Message",
+ "outgoing-message": "Outgoing Message",
+ "upload-new-sound": "Upload New Sound",
+ "saved": "Settings Saved"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/settings/tags.json b/public/language/sq-AL/admin/settings/tags.json
new file mode 100644
index 0000000000..080010f6f0
--- /dev/null
+++ b/public/language/sq-AL/admin/settings/tags.json
@@ -0,0 +1,12 @@
+{
+ "tag": "Tag Settings",
+ "link-to-manage": "Manage Tags",
+ "system-tags": "System Tags",
+ "system-tags-help": "Only privileged users will be able to use these tags.",
+ "min-per-topic": "Minimum Tags per Topic",
+ "max-per-topic": "Maximum Tags per Topic",
+ "min-length": "Minimum Tag Length",
+ "max-length": "Maximum Tag Length",
+ "related-topics": "Related Topics",
+ "max-related-topics": "Maximum related topics to display (if supported by theme)"
+}
\ No newline at end of file
diff --git a/public/language/sq-AL/admin/settings/uploads.json b/public/language/sq-AL/admin/settings/uploads.json
new file mode 100644
index 0000000000..af99a3ae77
--- /dev/null
+++ b/public/language/sq-AL/admin/settings/uploads.json
@@ -0,0 +1,42 @@
+{
+ "posts": "Posts",
+ "private": "Make uploaded files private",
+ "strip-exif-data": "Strip EXIF Data",
+ "preserve-orphaned-uploads": "Keep uploaded files on disk after a post is purged",
+ "private-extensions": "File extensions to make private",
+ "private-uploads-extensions-help": "Enter comma-separated list of file extensions to make private here (e.g. pdf,xls,doc
). An empty list means all files are private.",
+ "resize-image-width-threshold": "Resize images if they are wider than specified width",
+ "resize-image-width-threshold-help": "(in pixels, default: 1520 pixels, set to 0 to disable)",
+ "resize-image-width": "Resize images down to specified width",
+ "resize-image-width-help": "(in pixels, default: 760 pixels, set to 0 to disable)",
+ "resize-image-quality": "Quality to use when resizing images",
+ "resize-image-quality-help": "Use a lower quality setting to reduce the file size of resized images.",
+ "max-file-size": "Maximum File Size (in KiB)",
+ "max-file-size-help": "(in kibibytes, default: 2048 KiB)",
+ "reject-image-width": "Maximum Image Width (in pixels)",
+ "reject-image-width-help": "Images wider than this value will be rejected.",
+ "reject-image-height": "Maximum Image Height (in pixels)",
+ "reject-image-height-help": "Images taller than this value will be rejected.",
+ "allow-topic-thumbnails": "Allow users to upload topic thumbnails",
+ "topic-thumb-size": "Topic Thumb Size",
+ "allowed-file-extensions": "Allowed File Extensions",
+ "allowed-file-extensions-help": "Enter comma-separated list of file extensions here (e.g. pdf,xls,doc
). An empty list means all extensions are allowed.",
+ "upload-limit-threshold": "Rate limit user uploads to:",
+ "upload-limit-threshold-per-minute": "Per %1 Minute",
+ "upload-limit-threshold-per-minutes": "Per %1 Minutes",
+ "profile-avatars": "Profile Avatars",
+ "allow-profile-image-uploads": "Allow users to upload profile images",
+ "convert-profile-image-png": "Convert profile image uploads to PNG",
+ "default-avatar": "Custom Default Avatar",
+ "upload": "Upload",
+ "profile-image-dimension": "Profile Image Dimension",
+ "profile-image-dimension-help": "(in pixels, default: 128 pixels)",
+ "max-profile-image-size": "Maximum Profile Image File Size",
+ "max-profile-image-size-help": "(in kibibytes, default: 256 KiB)",
+ "max-cover-image-size": "Maximum Cover Image File Size",
+ "max-cover-image-size-help": "(in kibibytes, default: 2,048 KiB)",
+ "keep-all-user-images": "Keep old versions of avatars and profile covers on the server",
+ "profile-covers": "Profile Covers",
+ "default-covers": "Default Cover Images",
+ "default-covers-help": "Add comma-separated default cover images for accounts that don't have an uploaded cover image"
+}
diff --git a/public/language/sq-AL/admin/settings/user.json b/public/language/sq-AL/admin/settings/user.json
new file mode 100644
index 0000000000..566cff02dc
--- /dev/null
+++ b/public/language/sq-AL/admin/settings/user.json
@@ -0,0 +1,83 @@
+{
+ "authentication": "Authentication",
+ "email-confirm-interval": "User may not resend a confirmation email until",
+ "email-confirm-email2": "minutes have elapsed",
+ "allow-login-with": "Allow login with",
+ "allow-login-with.username-email": "Username or Email",
+ "allow-login-with.username": "Username Only",
+ "account-settings": "Account Settings",
+ "gdpr_enabled": "Enable GDPR consent collection",
+ "gdpr_enabled_help": "When enabled, all new registrants will be required to explicitly give consent for data collection and usage under the General Data Protection Regulation (GDPR). Note: Enabling GDPR does not force pre-existing users to provide consent. To do so, you will need to install the GDPR plugin.",
+ "disable-username-changes": "Disable username changes",
+ "disable-email-changes": "Disable email changes",
+ "disable-password-changes": "Disable password changes",
+ "allow-account-deletion": "Allow account deletion",
+ "hide-fullname": "Hide fullname from users",
+ "hide-email": "Hide email from users",
+ "show-fullname-as-displayname": "Show user's full name as their display name if available",
+ "themes": "Themes",
+ "disable-user-skins": "Prevent users from choosing a custom skin",
+ "account-protection": "Account Protection",
+ "admin-relogin-duration": "Admin relogin duration (minutes)",
+ "admin-relogin-duration-help": "After a set amount of time accessing the admin section will require re-login, set to 0 to disable",
+ "login-attempts": "Login attempts per hour",
+ "login-attempts-help": "If login attempts to a user's account exceeds this threshold, that account will be locked for a pre-configured amount of time",
+ "lockout-duration": "Account Lockout Duration (minutes)",
+ "login-days": "Days to remember user login sessions",
+ "password-expiry-days": "Force password reset after a set number of days",
+ "session-time": "Session Time",
+ "session-time-days": "Days",
+ "session-time-seconds": "Seconds",
+ "session-time-help": "These values are used to govern how long a user stays logged in when they check "Remember Me" on login. Note that only one of these values will be used. If there is no seconds value we fall back to days. If there is no days value we default to 14 days.",
+ "online-cutoff": "Minutes after user is considered inactive",
+ "online-cutoff-help": "If user performs no actions for this duration, they are considered inactive and they do not receive realtime updates.",
+ "registration": "User Registration",
+ "registration-type": "Registration Type",
+ "registration-approval-type": "Registration Approval Type",
+ "registration-type.normal": "Normal",
+ "registration-type.admin-approval": "Admin Approval",
+ "registration-type.admin-approval-ip": "Admin Approval for IPs",
+ "registration-type.invite-only": "Invite Only",
+ "registration-type.admin-invite-only": "Admin Invite Only",
+ "registration-type.disabled": "No registration",
+ "registration-type.help": "Normal - Users can register from the /register page.