diff --git a/.tx/config b/.tx/config
index 6f403b6cf1..7f6c9331c0 100644
--- a/.tx/config
+++ b/.tx/config
@@ -19,8 +19,10 @@ trans.nl = public/language/nl/category.json
trans.pl = public/language/pl/category.json
trans.pt_BR = public/language/pt_BR/category.json
trans.ru = public/language/ru/category.json
+trans.sc = public/language/sc/category.json
trans.sk = public/language/sk/category.json
trans.sv = public/language/sv/category.json
+trans.th = public/language/th/category.json
trans.tr = public/language/tr/category.json
trans.zh_CN = public/language/zh_CN/category.json
trans.zh_TW = public/language/zh_TW/category.json
@@ -44,8 +46,10 @@ trans.nl = public/language/nl/login.json
trans.pl = public/language/pl/login.json
trans.pt_BR = public/language/pt_BR/login.json
trans.ru = public/language/ru/login.json
+trans.sc = public/language/sc/login.json
trans.sk = public/language/sk/login.json
trans.sv = public/language/sv/login.json
+trans.th = public/language/th/login.json
trans.tr = public/language/tr/login.json
trans.zh_CN = public/language/zh_CN/login.json
trans.zh_TW = public/language/zh_TW/login.json
@@ -68,8 +72,10 @@ trans.nl = public/language/nl/recent.json
trans.pl = public/language/pl/recent.json
trans.pt_BR = public/language/pt_BR/recent.json
trans.ru = public/language/ru/recent.json
+trans.sc = public/language/sc/recent.json
trans.sk = public/language/sk/recent.json
trans.sv = public/language/sv/recent.json
+trans.th = public/language/th/recent.json
trans.tr = public/language/tr/recent.json
trans.zh_CN = public/language/zh_CN/recent.json
trans.zh_TW = public/language/zh_TW/recent.json
@@ -92,8 +98,10 @@ trans.nl = public/language/nl/unread.json
trans.pl = public/language/pl/unread.json
trans.pt_BR = public/language/pt_BR/unread.json
trans.ru = public/language/ru/unread.json
+trans.sc = public/language/sc/unread.json
trans.sk = public/language/sk/unread.json
trans.sv = public/language/sv/unread.json
+trans.th = public/language/th/unread.json
trans.tr = public/language/tr/unread.json
trans.zh_CN = public/language/zh_CN/unread.json
trans.zh_TW = public/language/zh_TW/unread.json
@@ -116,8 +124,10 @@ trans.nl = public/language/nl/footer.json
trans.pl = public/language/pl/footer.json
trans.pt_BR = public/language/pt_BR/footer.json
trans.ru = public/language/ru/footer.json
+trans.sc = public/language/sc/footer.json
trans.sk = public/language/sk/footer.json
trans.sv = public/language/sv/footer.json
+trans.th = public/language/th/footer.json
trans.tr = public/language/tr/footer.json
trans.zh_CN = public/language/zh_CN/footer.json
trans.zh_TW = public/language/zh_TW/footer.json
@@ -140,8 +150,10 @@ trans.nl = public/language/nl/modules.json
trans.pl = public/language/pl/modules.json
trans.pt_BR = public/language/pt_BR/modules.json
trans.ru = public/language/ru/modules.json
+trans.sc = public/language/sc/modules.json
trans.sk = public/language/sk/modules.json
trans.sv = public/language/sv/modules.json
+trans.th = public/language/th/modules.json
trans.tr = public/language/tr/modules.json
trans.zh_CN = public/language/zh_CN/modules.json
trans.zh_TW = public/language/zh_TW/modules.json
@@ -164,8 +176,10 @@ trans.nl = public/language/nl/register.json
trans.pl = public/language/pl/register.json
trans.pt_BR = public/language/pt_BR/register.json
trans.ru = public/language/ru/register.json
+trans.sc = public/language/sc/register.json
trans.sk = public/language/sk/register.json
trans.sv = public/language/sv/register.json
+trans.th = public/language/th/register.json
trans.tr = public/language/tr/register.json
trans.zh_CN = public/language/zh_CN/register.json
trans.zh_TW = public/language/zh_TW/register.json
@@ -188,8 +202,10 @@ trans.nl = public/language/nl/user.json
trans.pl = public/language/pl/user.json
trans.pt_BR = public/language/pt_BR/user.json
trans.ru = public/language/ru/user.json
+trans.sc = public/language/sc/user.json
trans.sk = public/language/sk/user.json
trans.sv = public/language/sv/user.json
+trans.th = public/language/th/user.json
trans.tr = public/language/tr/user.json
trans.zh_CN = public/language/zh_CN/user.json
trans.zh_TW = public/language/zh_TW/user.json
@@ -212,8 +228,10 @@ trans.nl = public/language/nl/global.json
trans.pl = public/language/pl/global.json
trans.pt_BR = public/language/pt_BR/global.json
trans.ru = public/language/ru/global.json
+trans.sc = public/language/sc/global.json
trans.sk = public/language/sk/global.json
trans.sv = public/language/sv/global.json
+trans.th = public/language/th/global.json
trans.tr = public/language/tr/global.json
trans.zh_CN = public/language/zh_CN/global.json
trans.zh_TW = public/language/zh_TW/global.json
@@ -236,8 +254,10 @@ trans.nl = public/language/nl/notifications.json
trans.pl = public/language/pl/notifications.json
trans.pt_BR = public/language/pt_BR/notifications.json
trans.ru = public/language/ru/notifications.json
+trans.sc = public/language/sc/notifications.json
trans.sk = public/language/sk/notifications.json
trans.sv = public/language/sv/notifications.json
+trans.th = public/language/th/notifications.json
trans.tr = public/language/tr/notifications.json
trans.zh_CN = public/language/zh_CN/notifications.json
trans.zh_TW = public/language/zh_TW/notifications.json
@@ -260,8 +280,10 @@ trans.nl = public/language/nl/reset_password.json
trans.pl = public/language/pl/reset_password.json
trans.pt_BR = public/language/pt_BR/reset_password.json
trans.ru = public/language/ru/reset_password.json
+trans.sc = public/language/sc/reset_password.json
trans.sk = public/language/sk/reset_password.json
trans.sv = public/language/sv/reset_password.json
+trans.th = public/language/th/reset_password.json
trans.tr = public/language/tr/reset_password.json
trans.zh_CN = public/language/zh_CN/reset_password.json
trans.zh_TW = public/language/zh_TW/reset_password.json
@@ -284,8 +306,10 @@ trans.nl = public/language/nl/users.json
trans.pl = public/language/pl/users.json
trans.pt_BR = public/language/pt_BR/users.json
trans.ru = public/language/ru/users.json
+trans.sc = public/language/sc/users.json
trans.sk = public/language/sk/users.json
trans.sv = public/language/sv/users.json
+trans.th = public/language/th/users.json
trans.tr = public/language/tr/users.json
trans.zh_CN = public/language/zh_CN/users.json
trans.zh_TW = public/language/zh_TW/users.json
@@ -308,8 +332,10 @@ trans.nl = public/language/nl/language.json
trans.pl = public/language/pl/language.json
trans.pt_BR = public/language/pt_BR/language.json
trans.ru = public/language/ru/language.json
+trans.sc = public/language/sc/language.json
trans.sk = public/language/sk/language.json
trans.sv = public/language/sv/language.json
+trans.th = public/language/th/language.json
trans.tr = public/language/tr/language.json
trans.zh_CN = public/language/zh_CN/language.json
trans.zh_TW = public/language/zh_TW/language.json
@@ -332,8 +358,10 @@ trans.nl = public/language/nl/pages.json
trans.pl = public/language/pl/pages.json
trans.pt_BR = public/language/pt_BR/pages.json
trans.ru = public/language/ru/pages.json
+trans.sc = public/language/sc/pages.json
trans.sk = public/language/sk/pages.json
trans.sv = public/language/sv/pages.json
+trans.th = public/language/th/pages.json
trans.tr = public/language/tr/pages.json
trans.zh_CN = public/language/zh_CN/pages.json
trans.zh_TW = public/language/zh_TW/pages.json
@@ -356,8 +384,10 @@ trans.nl = public/language/nl/topic.json
trans.pl = public/language/pl/topic.json
trans.pt_BR = public/language/pt_BR/topic.json
trans.ru = public/language/ru/topic.json
+trans.sc = public/language/sc/topic.json
trans.sk = public/language/sk/topic.json
trans.sv = public/language/sv/topic.json
+trans.th = public/language/th/topic.json
trans.tr = public/language/tr/topic.json
trans.zh_CN = public/language/zh_CN/topic.json
trans.zh_TW = public/language/zh_TW/topic.json
diff --git a/public/language/sc/category.json b/public/language/sc/category.json
new file mode 100644
index 0000000000..cf563900bd
--- /dev/null
+++ b/public/language/sc/category.json
@@ -0,0 +1,11 @@
+{
+ "new_topic_button": "Arresonada Noa",
+ "no_topics": "Non bi sunt arresonadas in custa creze.
Pro ite non nde pones una?",
+ "posts": "arresonos",
+ "views": "bìsitas",
+ "posted": "imbiadu",
+ "browsing": "navighende",
+ "no_replies": "Perunu at rispostu",
+ "replied": "rispostu",
+ "last_edited_by": "ùrtimu acontzu dae"
+}
\ No newline at end of file
diff --git a/public/language/sc/footer.json b/public/language/sc/footer.json
new file mode 100644
index 0000000000..741c7ae19f
--- /dev/null
+++ b/public/language/sc/footer.json
@@ -0,0 +1,7 @@
+{
+ "stats.online": "In lìnia",
+ "stats.users": "Impitadores",
+ "stats.topics": "Arresonadas",
+ "stats.posts": "Arresonos",
+ "success": "andat bene"
+}
\ No newline at end of file
diff --git a/public/language/sc/global.json b/public/language/sc/global.json
new file mode 100644
index 0000000000..eb21d49c9c
--- /dev/null
+++ b/public/language/sc/global.json
@@ -0,0 +1,61 @@
+{
+ "home": "Domo",
+ "search": "Chirca",
+ "buttons.close": "Serra",
+ "403.title": "Intrada Blocada",
+ "403.message": "Paret chi ses incapitadu in una pàgina in ue tue non podes intrare. Forsis dias a dèpere provare a intrare?",
+ "404.title": "No Agatadu",
+ "404.message": "Paret chi ses imbruchinadu in una pàgina chi non s'agatat. Torra a sa domo.",
+ "500.title": "Faddina interna.",
+ "500.message": "Oops! Paret chi carchi cosa est andada male!",
+ "register": "Registra·ti",
+ "login": "Intra",
+ "please_log_in": "Pro praghere Intra",
+ "posting_restriction_info": "Sa publicatzione immoe est limitada isceti a is impitadores registrados, carca inoghe pro intrare.",
+ "welcome_back": "Bene Torradu",
+ "you_have_successfully_logged_in": "Ses intradu",
+ "logout": "Essi·nche",
+ "logout.title": "Immoe ses essidu.",
+ "logout.message": "Ses essidu dae NodeBB",
+ "save_changes": "Alloga Acontzos",
+ "close": "Serra",
+ "pagination": "Paginatzione",
+ "header.admin": "Amministradore",
+ "header.recent": "Ùrtimos",
+ "header.unread": "De lèghere",
+ "header.popular": "Populare",
+ "header.users": "Impitadores",
+ "header.chats": "Tzarras",
+ "header.notifications": "Notìficas",
+ "header.search": "Chirca",
+ "header.profile": "Perfilu",
+ "notifications.loading": "Carrighende Notìficas",
+ "chats.loading": "Carrighende Tzarras",
+ "motd.welcome": "Benebènnidu in NodeBB, sa prataforma de arresonos de su tempus benidore.",
+ "motd.get": "Iscàrriga NodeBB",
+ "motd.fork": "Partzi",
+ "motd.like": "Mi praghet",
+ "motd.follow": "Sighi",
+ "previouspage": "Pàgina a in Antis",
+ "nextpage": "Pàgina chi Sighit",
+ "alert.success": "Andat Bene",
+ "alert.error": "Faddina",
+ "alert.banned": "Blocadu",
+ "alert.banned.message": "Ses blocadu e as a èssere bogadu a foras!",
+ "alert.unfollow": "Immoe non ses prus sighende %1!",
+ "alert.follow": "Immoe ses sighende %1!",
+ "posts": "Arresonos",
+ "views": "Bìsitas",
+ "posted": "publicadu",
+ "in": "in",
+ "norecentposts": "No Recent Posts",
+ "norecenttopics": "No Recent Topics",
+ "recentposts": "Ùrtimos Arresonos",
+ "recentips": "Ùrtimos IP Intrados",
+ "online": "In lìnia",
+ "away": "A tesu",
+ "dnd": "Non istrobbes",
+ "invisible": "Invisìbile",
+ "offline": "Non in lìnia",
+ "privacy": "Privadesa"
+}
\ No newline at end of file
diff --git a/public/language/sc/language.json b/public/language/sc/language.json
new file mode 100644
index 0000000000..119262172f
--- /dev/null
+++ b/public/language/sc/language.json
@@ -0,0 +1,5 @@
+{
+ "name": "Sardu (Sardigna)",
+ "code": "sc",
+ "dir": "ltr"
+}
\ No newline at end of file
diff --git a/public/language/sc/login.json b/public/language/sc/login.json
new file mode 100644
index 0000000000..33ebfc7660
--- /dev/null
+++ b/public/language/sc/login.json
@@ -0,0 +1,10 @@
+{
+ "login": "Intra",
+ "username": "Nùmene de Impitadore",
+ "password": "Password",
+ "remember_me": "Regorda·mi?",
+ "forgot_password": "Password Iscarèssida?",
+ "alternative_logins": "Intradas Alternativas",
+ "failed_login_attempt": "Intrada isballiada, pro praghere torra a provare.",
+ "login_successful": "Ses intradu!"
+}
\ No newline at end of file
diff --git a/public/language/sc/modules.json b/public/language/sc/modules.json
new file mode 100644
index 0000000000..8fa1f4d9ab
--- /dev/null
+++ b/public/language/sc/modules.json
@@ -0,0 +1,6 @@
+{
+ "chat.chatting_with": "Chistiona cun ",
+ "chat.placeholder": "iscrie su messàgiu de tzarra inoghe, carca imbiu pro imbiare",
+ "chat.send": "Imbia",
+ "chat.no_active": "Non tenes tzarras ativas."
+}
\ No newline at end of file
diff --git a/public/language/sc/notifications.json b/public/language/sc/notifications.json
new file mode 100644
index 0000000000..12eb339bbd
--- /dev/null
+++ b/public/language/sc/notifications.json
@@ -0,0 +1,10 @@
+{
+ "title": "Notìficas",
+ "no_notifs": "Non tenes notìficas noas",
+ "see_all": "Càstia totus is Notìficas",
+ "back_to_home": "Torra a NodeBB",
+ "outgoing_link": "Acàpiu a Foras",
+ "outgoing_link_message": "Immoe ses essende",
+ "continue_to": "Sighi a",
+ "return_to": "Torra a"
+}
\ No newline at end of file
diff --git a/public/language/sc/pages.json b/public/language/sc/pages.json
new file mode 100644
index 0000000000..083212dd7e
--- /dev/null
+++ b/public/language/sc/pages.json
@@ -0,0 +1,14 @@
+{
+ "home": "Domo",
+ "unread": "Arresonadas de Lèghere",
+ "popular": "Arresonadas Famadas",
+ "recent": "Ùrtimas Arresonadas",
+ "users": "Impitadores Registrados",
+ "notifications": "Notìficas",
+ "user.edit": "Acontzende \"%1\"",
+ "user.following": "Gente chi %1 Sighit",
+ "user.followers": "Gente chi Sighit %1",
+ "user.posts": "Arresonos fatos dae %1",
+ "user.favourites": "Arresonos Preferidos de %1",
+ "user.settings": "Sèberos de Impitadore"
+}
\ No newline at end of file
diff --git a/public/language/sc/recent.json b/public/language/sc/recent.json
new file mode 100644
index 0000000000..25b88650c2
--- /dev/null
+++ b/public/language/sc/recent.json
@@ -0,0 +1,7 @@
+{
+ "title": "Ùrtimos",
+ "day": "Die",
+ "week": "Chida",
+ "month": "Mese",
+ "no_recent_topics": "Non bi sunt ùrtimas arresonadas."
+}
\ No newline at end of file
diff --git a/public/language/sc/register.json b/public/language/sc/register.json
new file mode 100644
index 0000000000..9d363000e0
--- /dev/null
+++ b/public/language/sc/register.json
@@ -0,0 +1,18 @@
+{
+ "register": "Registra·ti",
+ "help.email": "S'email tua est cuada pro su pùblicu in manera predefinida.",
+ "help.username_restrictions": "Unu nùmene de impitadore ùnicu intre %1 e %2 caràtere. Is àteros t'ant a pòdere mentovare cun @nùmeneimpitadore.",
+ "help.minimum_password_length": "Sa password depet èssere a su mancu de %1 caràteres.",
+ "email_address": "Indiritzu Email",
+ "email_address_placeholder": "Pone s'Indiritzu Email",
+ "username": "Nùmene de Impitadore",
+ "username_placeholder": "Pone su Nùmene de Impitadore",
+ "password": "Password",
+ "password_placeholder": "Pone sa Password",
+ "confirm_password": "Cunfirma Password",
+ "confirm_password_placeholder": "Cunfirma Password",
+ "register_now_button": "Registra·ti Immoe",
+ "alternative_registration": "Registratziones Alternativas",
+ "terms_of_use": "Tèrmines de Impreu",
+ "agree_to_terms_of_use": "So de acòrdiu cun is Tèrmines de Impreu"
+}
\ No newline at end of file
diff --git a/public/language/sc/reset_password.json b/public/language/sc/reset_password.json
new file mode 100644
index 0000000000..877f9c716e
--- /dev/null
+++ b/public/language/sc/reset_password.json
@@ -0,0 +1,14 @@
+{
+ "reset_password": "Torra a seberare sa Password",
+ "update_password": "Annoa Password",
+ "password_changed.title": "Password Mudada",
+ "password_changed.message": "
Password torrada a assentare, pro praghere torra a intrare.",
+ "wrong_reset_code.title": "Còdighe de Reset Non Bàlidu",
+ "wrong_reset_code.message": "Su còdighe pro torrare a assentare sa password chi amus retzidu est isballiadu. Pro praghere torra a provare, o pedi unu còdighe pro torrare a assentare sa password nou.",
+ "new_password": "Password Noa",
+ "repeat_password": "Cunfirma Password",
+ "enter_email": "Pro praghere pone s'indiritzu email tuo e t'amus a imbiare un'email cun is istrutziones pro torrare a assentare s'intrada tua.",
+ "enter_email_address": "Pone s'Indiritzu Email",
+ "password_reset_sent": "Còdighe pro Torrare a Assentare sa Password Imbiadu",
+ "invalid_email": "Email Non Bàlida / Email chi no esistit!"
+}
\ No newline at end of file
diff --git a/public/language/sc/topic.json b/public/language/sc/topic.json
new file mode 100644
index 0000000000..22b656f7cf
--- /dev/null
+++ b/public/language/sc/topic.json
@@ -0,0 +1,82 @@
+{
+ "topic": "Arresonada",
+ "topics": "Arresonadas",
+ "no_topics_found": "Peruna arresonada agatada!",
+ "no_posts_found": "Perunu arresonu agatadu!",
+ "profile": "Perfilu",
+ "posted_by": "Publicadu dae",
+ "chat": "Tzarra",
+ "notify_me": "Imbia·mi notìficas pro is rispostas noas a custa arresonada",
+ "quote": "Mèntova",
+ "reply": "Risponde",
+ "edit": "Acontza",
+ "delete": "Contzella",
+ "restore": "Torra",
+ "move": "Move",
+ "fork": "Partzi",
+ "banned": "blocadu",
+ "link": "Acàpiu",
+ "share": "Cumpartzi",
+ "tools": "Ainas",
+ "flag": "Signala",
+ "bookmark_instructions": "Carca inoghe pro torrare a s'ùrtimu logu o serra pro no aprovare.",
+ "flag_title": "Signala custu arresonu pro sa moderatzione",
+ "deleted_message": "Custa arresonada est istada cantzellada. Isceti is impitadores chi tenent is permissos pro manigiare is arresonadas dda podent bìdere.",
+ "following_topic.title": "Sighende Arresonada",
+ "following_topic.message": "As a retzire notìficas si calincunu pùblica in custa arresonada.",
+ "not_following_topic.title": "Arresonada Non Sighida",
+ "not_following_topic.message": "No as a retzire prus notìficas pro custa arresonada.",
+ "login_to_subscribe": "Pro praghere registra·ti o intra pro sutascrìere custa arresonada.",
+ "markAsUnreadForAll.success": "Arresonada marcada comente de lèghere pro totus.",
+ "watch": "Càstia",
+ "share_this_post": "Cumpartzi custu Arresonu",
+ "thread_tools.title": "Ainas de Arresonada",
+ "thread_tools.markAsUnreadForAll": "Signa comente De Lèghere",
+ "thread_tools.pin": "Pone in evidèntzia s'Arresonda",
+ "thread_tools.unpin": "Boga dae s'Evidèntzia s'Arresonasa",
+ "thread_tools.lock": "Bloca Arresonada",
+ "thread_tools.unlock": "Isbloca Arresonada",
+ "thread_tools.move": "Move Arresonada",
+ "thread_tools.fork": "Partzi Arresonada",
+ "thread_tools.delete": "Cantzella Arresonada",
+ "thread_tools.restore": "Torra a s'Arresonada Allogada",
+ "load_categories": "Carrighende Crezes",
+ "disabled_categories_note": "Is Crezes Disativadas sunt postas in colore de chìghine",
+ "confirm_move": "Move",
+ "confirm_fork": "Partzi",
+ "favourite": "Preferidu",
+ "favourites": "Preferidos",
+ "favourites.not_logged_in.title": "No Intradu",
+ "favourites.not_logged_in.message": "Pro praghere intra pro pònnere in is preferidos custu arresonu",
+ "favourites.has_no_favourites": "Non tenes perunu preferidu, pone intre is preferidos carchi arresonu pro ddu bìdere inoghe!",
+ "vote.not_logged_in.title": "Non ses Intradu",
+ "vote.not_logged_in.message": "Pro praghere intra pro votare",
+ "vote.cant_vote_self.title": "Votu Non Bàlidu",
+ "vote.cant_vote_self.message": "Non podes votare pro un'arresonu cosa tua",
+ "loading_more_posts": "Càrriga Prus Arresonos",
+ "move_topic": "Move Arresonada",
+ "move_post": "Move Arresonu",
+ "fork_topic": "Partzi Arresonada",
+ "topic_will_be_moved_to": "Custa arresonada at a èssere mòvida in sa creze",
+ "fork_topic_instruction": "Sèbera is arresonos chi boles partzire",
+ "fork_no_pids": "Perunu arresonu seberadu!",
+ "fork_success": "As partzidu s'arresonada!",
+ "reputation": "Nodidu",
+ "posts": "Arresonos",
+ "composer.title_placeholder": "Pone su tìtulu de s'arresonada inoghe...",
+ "composer.write": "Iscrie",
+ "composer.preview": "Prova a Bìdere",
+ "composer.help": "Agiudu",
+ "composer.discard": "Lassa a Pèrdere",
+ "composer.submit": "Imbia",
+ "composer.replying_to": "Rispondende a",
+ "composer.new_topic": "Arresonada Noa",
+ "composer.uploading": "carrighende...",
+ "composer.thumb_url_label": "Apodda unu URL cun un'immàgine pro s'arresonada",
+ "composer.thumb_title": "Annanghe un'immàgine pitica a custa arresonada",
+ "composer.thumb_url_placeholder": "http://example.com/thumb.png",
+ "composer.thumb_file_label": "O càrriga unu file",
+ "composer.thumb_remove": "Lìmpia is datos",
+ "composer.drag_and_drop_images": "Tràsina Immàgines Inoghe",
+ "composer.upload_instructions": "Càrriga immàgines trasinende·dda·las"
+}
\ No newline at end of file
diff --git a/public/language/sc/unread.json b/public/language/sc/unread.json
new file mode 100644
index 0000000000..6e0664abfc
--- /dev/null
+++ b/public/language/sc/unread.json
@@ -0,0 +1,6 @@
+{
+ "title": "De Lèghere",
+ "no_unread_topics": "Non bi sunt arresonadas de lèghere.",
+ "mark_all_read": "Signala comente Lèghidos",
+ "load_more": "Càrriga de Prus"
+}
\ No newline at end of file
diff --git a/public/language/sc/user.json b/public/language/sc/user.json
new file mode 100644
index 0000000000..03298a4bfe
--- /dev/null
+++ b/public/language/sc/user.json
@@ -0,0 +1,47 @@
+{
+ "banned": "Blocadu",
+ "offline": "Non in lìnia",
+ "username": "Nùmene de Impitadore",
+ "email": "Email",
+ "fullname": "Nùmene e Sambenadu",
+ "website": "Giassu web",
+ "location": "Logu",
+ "age": "Edade",
+ "joined": "intradu",
+ "lastonline": "Ùrtimu Collegamentu",
+ "profile": "Perfilu",
+ "profile_views": "Bìsitas a su perfilu",
+ "reputation": "Nodidos",
+ "posts": "Arresonos",
+ "favourites": "Preferidos",
+ "followers": "Sighidores",
+ "following": "Sighende",
+ "signature": "Firma",
+ "gravatar": "Gravatas",
+ "birthday": "Cumpleannu",
+ "chat": "Tzarra",
+ "follow": "Sighi",
+ "unfollow": "Non sighes prus",
+ "change_picture": "Muda Immàgine",
+ "edit": "Acontza",
+ "uploaded_picture": "Immàgine Carrigada",
+ "upload_new_picture": "Càrriga Immàgine Noa",
+ "current_password": "Password Presente",
+ "change_password": "Muda Password",
+ "confirm_password": "Cunfirma Password",
+ "password": "Password",
+ "upload_picture": "Càrriga immàgine",
+ "upload_a_picture": "Càrriga un'immàgine",
+ "image_spec": "Podes carrigare isceti files PNG, JPG o GIF",
+ "max": "màssimu.",
+ "settings": "Sèberos",
+ "show_email": "Ammustra s'Email Mia",
+ "has_no_follower": "Custu impitadore non tenet perunu sighidore :(",
+ "follows_no_one": "Custu impitadore no est sighende nissunu :(",
+ "has_no_posts": "Custu impitadore no at ancora publicadu nudda.",
+ "email_hidden": "Email Cuada",
+ "hidden": "cuadu",
+ "paginate_description": "Partzi is arresonadas e arresonos in pàginas a su postu de impreare su iscorrimentu infinidu.",
+ "topics_per_page": "Arresonadas pro Pàgina",
+ "posts_per_page": "Arresonos pro Pàgina"
+}
\ No newline at end of file
diff --git a/public/language/sc/users.json b/public/language/sc/users.json
new file mode 100644
index 0000000000..d562b3c539
--- /dev/null
+++ b/public/language/sc/users.json
@@ -0,0 +1,9 @@
+{
+ "latest_users": "Ùrtimos Impitadores",
+ "top_posters": "Prus Ativos",
+ "most_reputation": "Prus Famados",
+ "online": "In lìnia",
+ "search": "Chirca",
+ "enter_username": "Pone unu nùmene de impitadore de chircare",
+ "load_more": "Càrriga de prus"
+}
\ No newline at end of file
diff --git a/public/language/th/category.json b/public/language/th/category.json
new file mode 100644
index 0000000000..9c7cf6f837
--- /dev/null
+++ b/public/language/th/category.json
@@ -0,0 +1,11 @@
+{
+ "new_topic_button": "กระทู้",
+ "no_topics": "ยังไม่มีกระทู้ในหมวดนี้ ตั้งค่ารหัสผ่านสำเร็จ กรุณาเข้าสู่ระบบอีกครั้ง",
+ "wrong_reset_code.title": "รหัสรีเซ็ตไม่ถูกต้อง",
+ "wrong_reset_code.message": "รหัสรีเซ็ตที่ได้รับไม่ถูกต้อง กรุณาลองใหม่อีกครั้งหรือ ขอรหัสรีเซ็ตใหม่",
+ "new_password": "รหัสผ่านใหม่",
+ "repeat_password": "ยืนยันรหัสผ่าน",
+ "enter_email": "กรุณาใส่อีเมลของคุณ เราจะส่งอีเมลให้คุณพร้อมคำแนะนำเกี่ยวกับวิธีการรีเซ็ตบัญชีของคุณ",
+ "enter_email_address": "ใส่อีเมล์",
+ "password_reset_sent": "รหัสรีเซ็ตถูกส่งออกไปแล้ว",
+ "invalid_email": "อีเมล์ไม่ถูกต้อง / อีเมล์ไม่มีอยู่!"
+}
\ No newline at end of file
diff --git a/public/language/th/topic.json b/public/language/th/topic.json
new file mode 100644
index 0000000000..6f09dd6c1b
--- /dev/null
+++ b/public/language/th/topic.json
@@ -0,0 +1,82 @@
+{
+ "topic": "กระทู้",
+ "topics": "กระทู้",
+ "no_topics_found": "ไม่พบกระทู้",
+ "no_posts_found": "ไม่พบโพส",
+ "profile": "รายละเอียด",
+ "posted_by": "โพสต์โดย",
+ "chat": "แชท",
+ "notify_me": "แจ้งเตือนเมื่อการตอบใหม่ในกระทู้นี้",
+ "quote": "คำอ้างอิง",
+ "reply": "ตอบ",
+ "edit": "แก้ไข",
+ "delete": "ลบ",
+ "restore": "กู้",
+ "move": "ย้าย",
+ "fork": "แยก",
+ "banned": "เเบน",
+ "link": "ลิงค์",
+ "share": "แชร์",
+ "tools": "เครื่องมือ",
+ "flag": "ปักธง",
+ "bookmark_instructions": "คลิกที่นี่เพื่อกลับคืนสู่ฐานะสุดท้าย หรือ คลิกปิดเพื่อยกเลิก",
+ "flag_title": "ปักธงโพสต์นี้เพื่อดำเนินการ",
+ "deleted_message": "กระทู้นี้ได้ถูกลบไปแล้ว เฉพาะผู้ใช้ที่มีสิทธิ์จัดการสามารถดูได้",
+ "following_topic.title": "ติดตามกระทู้",
+ "following_topic.message": "คุณจะได้รับการแจ้งเตือนเมื่อมีคนโพสต์ในกระทู้นี้",
+ "not_following_topic.title": "ไม่ได้ติดตามกระทู้",
+ "not_following_topic.message": "คุณจะไม่รับการแจ้งเตือนจากกระทู้นี้",
+ "login_to_subscribe": "กรุณาลงทะเบียนหรือเข้าสู่ระบบเพื่อที่จะติดตามกระทู้นี้",
+ "markAsUnreadForAll.success": "ทำเครื่องหมายว่ายังไม่ได้อ่านทั้งหมด",
+ "watch": "ติดตาม",
+ "share_this_post": "แชร์โพสต์นี้",
+ "thread_tools.title": "เครื่องมือจัดการกระทู้",
+ "thread_tools.markAsUnreadForAll": "ทำหมายว่ายังไม่ได้อ่าน",
+ "thread_tools.pin": "ปักหมุดกระทู้",
+ "thread_tools.unpin": "เลิกปักหมุดกระทู้",
+ "thread_tools.lock": "ล็อคกระทู้",
+ "thread_tools.unlock": "ปลดล็อคกระทู้",
+ "thread_tools.move": "ย้ายกระทู้",
+ "thread_tools.fork": "แยกกระทู้",
+ "thread_tools.delete": "ลบกระทู้",
+ "thread_tools.restore": "กู้กระทู้",
+ "load_categories": "กำลังโหลดหมวดหมู่",
+ "disabled_categories_note": "หมวดหมู่ที่ปิดใช้งานจะเป็นสีเทา",
+ "confirm_move": "ย้าย",
+ "confirm_fork": "แยก",
+ "favourite": "ฮิต",
+ "favourites": "ฮิต",
+ "favourites.not_logged_in.title": "ไม่ได้เข้าสู่ระบบ",
+ "favourites.not_logged_in.message": "กรุณาเข้าสู่ระบบเพื่อชอบโพสต์นี้",
+ "favourites.has_no_favourites": "คุณไม่ได้มีโพสต์ที่ชอบ รายการโพสต์ที่ชอบที่จะเห็นได้ที่นี่",
+ "vote.not_logged_in.title": "ไม่ได้เข้าสู่ระบบ",
+ "vote.not_logged_in.message": "กรุณาเข้าสู่ระบบเพื่อโหวต",
+ "vote.cant_vote_self.title": "โหวตไม่ถูกต้อง",
+ "vote.cant_vote_self.message": "คุณไม่สามารถโหวตโพสต์ของคุณเอง",
+ "loading_more_posts": "โหลดโพสเพิ่มเติม",
+ "move_topic": "ย้ายกระทู้",
+ "move_post": "ย้ายโพส",
+ "fork_topic": "แยกกระทู้",
+ "topic_will_be_moved_to": "กระทู้นี้จะถูกย้ายไปที่หมวดหมู่",
+ "fork_topic_instruction": "คลิกที่โพสที่คุณต้องการที่จะแยก",
+ "fork_no_pids": "ไม่มีโพสต์ที่เลือก!",
+ "fork_success": "แยกกระทู้สำเร็จ",
+ "reputation": "ชื่อเสียง",
+ "posts": "กระทู้",
+ "composer.title_placeholder": "ป้อนชื่อกระทู้ของคุณที่นี่ ...",
+ "composer.write": "เขียน",
+ "composer.preview": "ตัวอย่าง",
+ "composer.help": "ต้องการความช่วยเหลือ",
+ "composer.discard": "ยกเลิก",
+ "composer.submit": "ส่ง",
+ "composer.replying_to": "ตอบกลับ",
+ "composer.new_topic": "กระทู้ใหม่",
+ "composer.uploading": "กำลังอัพโหลด ...",
+ "composer.thumb_url_label": "วาง URL ของภาพของกระทู้นี้",
+ "composer.thumb_title": "เพิ่มภาพให้กับกระทู้นี้",
+ "composer.thumb_url_placeholder": "http://example.com/thumb.png",
+ "composer.thumb_file_label": "หรืออัปโหลดไฟล์",
+ "composer.thumb_remove": "ล้างฟิลด์",
+ "composer.drag_and_drop_images": "ลากและวางภาพที่นี่",
+ "composer.upload_instructions": "อัปโหลดภาพโดยลากและวาง"
+}
\ No newline at end of file
diff --git a/public/language/th/unread.json b/public/language/th/unread.json
new file mode 100644
index 0000000000..f0d186b444
--- /dev/null
+++ b/public/language/th/unread.json
@@ -0,0 +1,6 @@
+{
+ "title": "ไม่ได้อ่าน",
+ "no_unread_topics": "ไม่มีกระทู้ที่ยังไม่ได้อ่านเป็น",
+ "mark_all_read": "มาร์คทั้งหมดเป็นอ่าน",
+ "load_more": "โหลดเพิ่มเติม"
+}
\ No newline at end of file
diff --git a/public/language/th/user.json b/public/language/th/user.json
new file mode 100644
index 0000000000..84fccdbcb4
--- /dev/null
+++ b/public/language/th/user.json
@@ -0,0 +1,47 @@
+{
+ "banned": "เเบน",
+ "offline": "ออฟไลน์",
+ "username": "ชื่อผู้ใช้",
+ "email": "อีเมล์",
+ "fullname": "ชื่อเต็ม",
+ "website": "เว็บไซต์",
+ "location": "สถานที่",
+ "age": "อายุ",
+ "joined": "เข้าร่วม",
+ "lastonline": "ออนไลน์ล่าสุด",
+ "profile": "รายละเอียด",
+ "profile_views": "ดูข้อมูลส่วนตัว",
+ "reputation": "ชื่อเสียง",
+ "posts": "โพสต์",
+ "favourites": "ชอบ",
+ "followers": "คนติดตาม",
+ "following": "ติดตาม",
+ "signature": "ลายเซ็น",
+ "gravatar": "Gravatar",
+ "birthday": "วันเกิด",
+ "chat": "แชท",
+ "follow": "ติดตาม",
+ "unfollow": "เลิกติดตาม",
+ "change_picture": "เปลี่ยนรูป",
+ "edit": "แก้ไข",
+ "uploaded_picture": "อัปโหลดรูป",
+ "upload_new_picture": "อัพโหลดรูปใหม่",
+ "current_password": "รหัสผ่านปัจจุบัน",
+ "change_password": "เปลี่ยนรหัสผ่าน",
+ "confirm_password": "ยืนยันรหัสผ่าน",
+ "password": "รหัสผ่าน",
+ "upload_picture": "อัปโหลดรูป",
+ "upload_a_picture": "อัปโหลดรูป",
+ "image_spec": "คุณสามารถอัปโหลด PNG, JPG หรือ GIF ไฟล์เท่านั้น",
+ "max": "สูงสุด",
+ "settings": "ตั้งค่า",
+ "show_email": "แสดงอีเมล์",
+ "has_no_follower": "ผู้ใช้รายนี้ไม่มีใครติดตาม :(",
+ "follows_no_one": "ผู้ใช้รายนี้ไม่ติดตามใคร :(",
+ "has_no_posts": "ผู้ใช้รายนี้ไม่ได้โพสต์อะไรเลย",
+ "email_hidden": "ซ่อนอีเมล์",
+ "hidden": "ซ่อน",
+ "paginate_description": "ให้เลขหน้ากระทู้และโพสต์แทนการใช้สกรอลล์ที่ไม่สิ้นสุด",
+ "topics_per_page": "จำนวนกระทู้ต่อหน้า",
+ "posts_per_page": "จำนวนโพสต์ต่อหน้า"
+}
\ No newline at end of file
diff --git a/public/language/th/users.json b/public/language/th/users.json
new file mode 100644
index 0000000000..d2f7be1042
--- /dev/null
+++ b/public/language/th/users.json
@@ -0,0 +1,9 @@
+{
+ "latest_users": "ผู้ใช้งานล่าสุด",
+ "top_posters": "ผู้ที่โพสต์มากที่สุด",
+ "most_reputation": "ผู้ที่มีชื่อเสียงมากที่สุด",
+ "online": "ออนไลน์",
+ "search": "ค้นหา",
+ "enter_username": "ใส่ชื่อผู้ใช้เพื่อค้นหา",
+ "load_more": "โหลดเพิ่มเติม"
+}
\ No newline at end of file
โพสต์กระทู้แรก?",
+ "posts": "กระทู้",
+ "views": "ดู",
+ "posted": "โพสต์แล้ว",
+ "browsing": "เรียกดู",
+ "no_replies": "ยังไม่มีใครตอบ",
+ "replied": "ตอบแล้ว",
+ "last_edited_by": "แก้ไขครั้งสุดท้ายโดย"
+}
\ No newline at end of file
diff --git a/public/language/th/footer.json b/public/language/th/footer.json
new file mode 100644
index 0000000000..22fd13fcc5
--- /dev/null
+++ b/public/language/th/footer.json
@@ -0,0 +1,7 @@
+{
+ "stats.online": "ออนไลน์",
+ "stats.users": "ผู้ใช้",
+ "stats.topics": "กระทู้",
+ "stats.posts": "กระทู้",
+ "success": "สำเร็จ"
+}
\ No newline at end of file
diff --git a/public/language/th/global.json b/public/language/th/global.json
new file mode 100644
index 0000000000..75c80f2b95
--- /dev/null
+++ b/public/language/th/global.json
@@ -0,0 +1,61 @@
+{
+ "home": "หน้าแรก",
+ "search": "ค้นหา",
+ "buttons.close": "ปิด",
+ "403.title": "คุณถูกปฏิเสธการเข้าใช้",
+ "403.message": "ดูเหมือนว่าคุณจะสะดุดเข้ากับหน้าเว็บที่คุณไม่ได้มีสิทธิการเข้าถึง เข้าสู่ระบบ a>?",
+ "404.title": "ไม่พบ",
+ "404.message": "ดูเหมือนว่าคุณจะสะดุดเข้ากับหน้าเว็บที่ไม่มีอยู่ กลับไปที่หน้าแรก a>",
+ "500.title": "มีข้อผิดพลาดภายในระบบ",
+ "500.message": "อุ่ย! มีสิ่งที่ไม่ถูกต้องเกิดขึ้น!",
+ "register": "ลงทะเบียน",
+ "login": "เข้าสู่ระบบ",
+ "please_log_in": "กรุณาเข้าสู่ระบบ",
+ "posting_restriction_info": "คุณต้องต้องเป็นสมาชิกเพื่อทำการโพสต์ คลิกที่นี่เพื่อเข้าสู่ระบบ",
+ "welcome_back": "ยินดีต้อนรับ",
+ "you_have_successfully_logged_in": "คุณได้เข้าสู่ระบบแล้ว",
+ "logout": "ออกจากระบบ",
+ "logout.title": "คุณได้ออกจากระบบแล้ว",
+ "logout.message": "คุณได้ออกจากระบบ NodeBB แล้ว",
+ "save_changes": "บันทึกการเปลี่ยนแปลง",
+ "close": "ปิด",
+ "pagination": "ให้เลขหน้า",
+ "header.admin": "ผู้ดูแลระบบ",
+ "header.recent": "ล่าสุด",
+ "header.unread": "ไม่ได้อ่าน",
+ "header.popular": "ฮิต",
+ "header.users": "ผู้ใช้",
+ "header.chats": "สนทนา",
+ "header.notifications": "แจ้งเตือน",
+ "header.search": "ค้นหา",
+ "header.profile": "รายละเอียด",
+ "notifications.loading": "กำลังโหลดข้อแจ้งเตือน",
+ "chats.loading": "กำลังโหลดหัวข้อสนทนา",
+ "motd.welcome": "ยินดีต้อนรับสู่ NodeBB แพลตฟอร์มการสนทนาแห่งอนาคต",
+ "motd.get": "ใช้ NodeBB\n",
+ "motd.fork": "แยก",
+ "motd.like": "ชอบ",
+ "motd.follow": "ติดตาม",
+ "previouspage": "หน้าก่อนหน้า",
+ "nextpage": "หน้าถัดไป",
+ "alert.success": "สำเร็จ",
+ "alert.error": "ผิดพลาด",
+ "alert.banned": "เเบน",
+ "alert.banned.message": "คุณถูกเเบน คุณจะได้รับการดำเนินการให้ออกจากระบบ",
+ "alert.unfollow": "คุณได้ยกเลิกติดตาม %1 !\n",
+ "alert.follow": "คุณกำลังติดตาม %1 !",
+ "posts": "กระทู้",
+ "views": "ดู",
+ "posted": "โพสต์แล้ว",
+ "in": "ใน",
+ "norecentposts": "ไม่มีกระทู้ล่าสุด",
+ "norecenttopics": "ไม่มีกระทู้ล่าสุด",
+ "recentposts": "กระทู้ล่าสุด",
+ "recentips": "IP ที่ใช้เข้าสู่ระบบล่าสุด",
+ "online": "ออนไลน์",
+ "away": "ไม่อยู่",
+ "dnd": "อย่ารบกวน",
+ "invisible": "ไม่ปรากฏตัว",
+ "offline": "ออฟไลน์",
+ "privacy": "ความเป็นส่วนตัว"
+}
\ No newline at end of file
diff --git a/public/language/th/language.json b/public/language/th/language.json
new file mode 100644
index 0000000000..60f5f2303c
--- /dev/null
+++ b/public/language/th/language.json
@@ -0,0 +1,5 @@
+{
+ "name": "ภาษาอังกฤษ (สหราชอาณาจักร / แคนาดา)",
+ "code": "th",
+ "dir": "ltr"
+}
\ No newline at end of file
diff --git a/public/language/th/login.json b/public/language/th/login.json
new file mode 100644
index 0000000000..e6db507935
--- /dev/null
+++ b/public/language/th/login.json
@@ -0,0 +1,10 @@
+{
+ "login": "เข้าสู่ระบบ",
+ "username": "ชื่อผู้ใช้",
+ "password": "รหัสผ่าน",
+ "remember_me": "จำไว้ในระบบ?",
+ "forgot_password": "ลืมรหัสผ่าน?",
+ "alternative_logins": "เข้าสู่ระบบโดยทางอื่น",
+ "failed_login_attempt": "เข้าสู่ระบบล้มเหลว โปรดลองอีกครั้ง",
+ "login_successful": "คุณเข้าสู่ระบบเรียบร้อยแล้ว"
+}
\ No newline at end of file
diff --git a/public/language/th/modules.json b/public/language/th/modules.json
new file mode 100644
index 0000000000..53b228b63d
--- /dev/null
+++ b/public/language/th/modules.json
@@ -0,0 +1,6 @@
+{
+ "chat.chatting_with": "แชทกับ ",
+ "chat.placeholder": "พิมพ์ข้อความการแชทที่นี่ กด Enter เพื่อส่ง",
+ "chat.send": "ส่ง",
+ "chat.no_active": "คุณไม่มีแชทที่คุยอยู่"
+}
\ No newline at end of file
diff --git a/public/language/th/notifications.json b/public/language/th/notifications.json
new file mode 100644
index 0000000000..2eb7fb225b
--- /dev/null
+++ b/public/language/th/notifications.json
@@ -0,0 +1,10 @@
+{
+ "title": "แจ้งเตือน",
+ "no_notifs": "คุณไม่มีข้อแจ้งเตือนใหม่",
+ "see_all": "ดูข้อแจ้งเตือนทั้งหมด",
+ "back_to_home": "กลับไปที่ NodeBB",
+ "outgoing_link": "ลิงค์ออก",
+ "outgoing_link_message": "ตอนนี้คุณจะออกจาก",
+ "continue_to": "ดำเนินการต่อไป",
+ "return_to": "กลับไปที่"
+}
\ No newline at end of file
diff --git a/public/language/th/pages.json b/public/language/th/pages.json
new file mode 100644
index 0000000000..e3645a6738
--- /dev/null
+++ b/public/language/th/pages.json
@@ -0,0 +1,14 @@
+{
+ "home": "หน้าแรก",
+ "unread": "กระทู้ที่ไม่ได้อ่าน",
+ "popular": "กระทู้ยอดฮิต",
+ "recent": "กระทู้ล่าสุด",
+ "users": "ผู้ใช้ที่ลงทะเบียน",
+ "notifications": "แจ้งเตือน",
+ "user.edit": "แก้ไข \"%1\"",
+ "user.following": "ผู้ใช้ที่ %1 ติดตาม",
+ "user.followers": "ผู้ใช้ที่ติดตาม %1",
+ "user.posts": "กระทู้โดย %1",
+ "user.favourites": "กระทู้ที่ %1 ชอบ",
+ "user.settings": "ตั้งค่าผู้ใช้"
+}
\ No newline at end of file
diff --git a/public/language/th/recent.json b/public/language/th/recent.json
new file mode 100644
index 0000000000..971dc01bbf
--- /dev/null
+++ b/public/language/th/recent.json
@@ -0,0 +1,7 @@
+{
+ "title": "ล่าสุด",
+ "day": "วัน",
+ "week": "สัปดาห์",
+ "month": "เดือน",
+ "no_recent_topics": "ไม่มีกระทู้ล่าสุด"
+}
\ No newline at end of file
diff --git a/public/language/th/register.json b/public/language/th/register.json
new file mode 100644
index 0000000000..5a02573eee
--- /dev/null
+++ b/public/language/th/register.json
@@ -0,0 +1,18 @@
+{
+ "register": "ลงทะเบียน",
+ "help.email": "ผู้ใช้อื่น ๆ จะไม่สามารถมองเห็นอีเมลของคุณโดยดีฟอลต์",
+ "help.username_restrictions": "ชื่อผู้ใช้ที่ไม่ซ้ำกับผู้อื่น จะต้องมีความยาวระหว่าง% 1% และ %2 ตัวอักษร ผู้ใช้อื่นๆ สามารถพูดถึงคุณโดย @ชื่อผู้ใช้ span>",
+ "help.minimum_password_length": "ความยาวรหัสผ่านของคุณต้องมีอย่างน้อย %1 ตัวอักษร",
+ "email_address": "อีเมล์",
+ "email_address_placeholder": "ใส่อีเมล์",
+ "username": "ชื่อผู้ใช้",
+ "username_placeholder": "ใส่ชื่อผู้ใช้",
+ "password": "รหัสผ่าน",
+ "password_placeholder": "ใส่รหัสผ่าน",
+ "confirm_password": "ยืนยันรหัสผ่าน",
+ "confirm_password_placeholder": "ยืนยันรหัสผ่าน",
+ "register_now_button": "ลงทะเบียน",
+ "alternative_registration": "เข้าสู่ระบบโดยทางอื่น",
+ "terms_of_use": "เงื่อนไขการใช้งาน",
+ "agree_to_terms_of_use": "ยอมรับข้อตกลงในการใช้งาน"
+}
\ No newline at end of file
diff --git a/public/language/th/reset_password.json b/public/language/th/reset_password.json
new file mode 100644
index 0000000000..2b12834604
--- /dev/null
+++ b/public/language/th/reset_password.json
@@ -0,0 +1,14 @@
+{
+ "reset_password": "รีเซ็ตรหัสผ่าน",
+ "update_password": "ปรับปรุงรหัสผ่าน",
+ "password_changed.title": "รหัสผ่านได้เปลี่ยนแปลงแล้ว",
+ "password_changed.message": "