Inserisci il tuo username per confermare che vuoi eliminare questo account.",
- "delete_this_account_confirm": "Are you sure you want to delete this account? This action is irreversible and you will not be able to recover any data
",
+ "delete_this_account_confirm": "Sei sicuro di voler cancellare questo account? Questa azione è irreversibile e non potrai recuperare nessun dato
",
"fullname": "Nome e Cognome",
"website": "Sito Internet",
"location": "Località",
@@ -25,7 +25,7 @@
"watched": "Osservati",
"followers": "Da chi è seguito",
"following": "Chi segue",
- "aboutme": "About me",
+ "aboutme": "Su di me",
"signature": "Firma",
"gravatar": "Gravatar",
"birthday": "Data di nascita",
@@ -68,21 +68,21 @@
"settings-require-reload": "Alcuni cambiamenti di impostazioni richiedono un ricaricamento. Clicca qui per ricaricare la pagina.",
"has_no_follower": "Questo utente non è seguito da nessuno :(",
"follows_no_one": "Questo utente non segue nessuno :(",
- "has_no_posts": "This user hasn't posted anything yet.",
- "has_no_topics": "This user hasn't posted any topics yet.",
- "has_no_watched_topics": "This user hasn't watched any topics yet.",
+ "has_no_posts": "Questo utente non ha ancora scritto niente.",
+ "has_no_topics": "Questo utente non ha ancora avviato discussioni.",
+ "has_no_watched_topics": "Questo utente non sta osservando discussioni.",
"email_hidden": "Email Nascosta",
"hidden": "nascosta",
- "paginate_description": "Paginate topics and posts instead of using infinite scroll",
+ "paginate_description": "Non utilizzare lo scroll infinito per discussioni e messaggi",
"topics_per_page": "Discussioni per Pagina",
"posts_per_page": "Post per Pagina",
- "notification_sounds": "Play a sound when you receive a notification",
+ "notification_sounds": "Riproduci un suono quando si riceve una notifica",
"browsing": "Impostazioni di Navigazione",
- "open_links_in_new_tab": "Open outgoing links in new tab",
+ "open_links_in_new_tab": "Apri i link web in una nuova pagina",
"enable_topic_searching": "Abilita la ricerca negli argomenti",
- "topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen",
- "follow_topics_you_reply_to": "Follow topics that you reply to",
- "follow_topics_you_create": "Follow topics you create",
+ "topic_search_help": "Se abilitata, la ricerca negli argomenti ignorerà il comportamento predefinito del browser per consentirti di cercare all'interno delle discussioni, anziché soltanto nel contenuto visibile a schermo",
+ "follow_topics_you_reply_to": "Segui le discussioni a cui hai risposto",
+ "follow_topics_you_create": "Segui le discussioni che hai iniziato",
"grouptitle": "Seleziona il titolo del gruppo che vorresti vedere",
"no-group-title": "Nessun titolo al gruppo"
}
\ No newline at end of file
diff --git a/public/language/it/users.json b/public/language/it/users.json
index d9a9e68427..5fc544d8ac 100644
--- a/public/language/it/users.json
+++ b/public/language/it/users.json
@@ -9,13 +9,13 @@
"filter-by": "Filtra per",
"online-only": "Solo online",
"picture-only": "Solo con foto",
- "invite": "Invite",
- "invitation-email-sent": "An invitation email has been sent to %1",
- "user_list": "User List",
- "recent_topics": "Recent Topics",
- "popular_topics": "Popular Topics",
- "unread_topics": "Unread Topics",
- "categories": "Categories",
- "tags": "Tags",
- "map": "Map"
+ "invite": "Invita",
+ "invitation-email-sent": "Una mail di invito è stata inviata a %1",
+ "user_list": "Lista utenti",
+ "recent_topics": "Discussioni Recenti",
+ "popular_topics": "Discussioni Popolari",
+ "unread_topics": "Discussioni non lette",
+ "categories": "Categorie",
+ "tags": "Tag",
+ "map": "Mappa"
}
\ No newline at end of file
diff --git a/public/language/lt/category.json b/public/language/lt/category.json
index 3fc832a8e4..324084f60e 100644
--- a/public/language/lt/category.json
+++ b/public/language/lt/category.json
@@ -5,8 +5,8 @@
"browsing": "naršo",
"no_replies": "Niekas dar neatsakė",
"share_this_category": "Pasidalinti šią kategoriją",
- "watch": "Watch",
+ "watch": "Stebėti",
"ignore": "Nepaisyti",
- "watch.message": "You are now watching updates from this category",
- "ignore.message": "You are now ignoring updates from this category"
+ "watch.message": "Jūs dabar stebite atnaujinimus iš šios kategorijos",
+ "ignore.message": "Jūs dabar ignoruojate atnaujinimus iš šios kategorijos"
}
\ No newline at end of file
diff --git a/public/language/lt/global.json b/public/language/lt/global.json
index 541becf696..f320a7c376 100644
--- a/public/language/lt/global.json
+++ b/public/language/lt/global.json
@@ -3,10 +3,10 @@
"search": "Ieškoti",
"buttons.close": "Uždaryti",
"403.title": "Prieiga negalima",
- "403.message": "You seem to have stumbled upon a page that you do not have access to.",
- "403.login": "Perhaps you should try logging in?",
+ "403.message": "Matosi užklupai į ta puslapį kur neturi tam tikrų teisių jį peržiūrėti",
+ "403.login": "Tikriausiai tu turėtum pabandyt prisijungt?",
"404.title": "Nerasta",
- "404.message": "You seem to have stumbled upon a page that does not exist. Return to the home page.",
+ "404.message": "Pasirodo sėdi puslapyje kurio net nėra. Grįžk į namų puslapį.",
"500.title": "Vidinė klaida.",
"500.message": "Oops! Atrodo, kad kažkas nutiko!",
"register": "Registruotis",
@@ -22,7 +22,7 @@
"pagination.out_of": "%1 iš %2",
"pagination.enter_index": "Įrašykite indeksą",
"header.admin": "Administratorius",
- "header.categories": "Categories",
+ "header.categories": "Kategorijos",
"header.recent": "Naujausi",
"header.unread": "Neskaityti",
"header.tags": "Žymos",
@@ -51,7 +51,7 @@
"views": "Peržiūros",
"reputation": "Reputacija",
"read_more": "skaityti plačiau",
- "more": "More",
+ "more": "Daugiau",
"posted_ago_by_guest": "parašyta %2 nuo svečio",
"posted_ago_by": "parašyta %1 nuo %2",
"posted_ago": "parašyta %1",
diff --git a/public/language/lt/modules.json b/public/language/lt/modules.json
index 1ad666d77e..17e2994996 100644
--- a/public/language/lt/modules.json
+++ b/public/language/lt/modules.json
@@ -15,12 +15,12 @@
"chat.seven_days": "7 dienos",
"chat.thirty_days": "30 dienų",
"chat.three_months": "3 mėnesiai",
- "composer.compose": "Compose",
- "composer.show_preview": "Show Preview",
- "composer.hide_preview": "Hide Preview",
+ "composer.compose": "Sukomponuoti",
+ "composer.show_preview": "Rodyti pavyzdį",
+ "composer.hide_preview": "Slėpti pavyzdį",
"composer.user_said_in": "%1 parašė į %2:",
"composer.user_said": "%1 parašė:",
"composer.discard": "Ar tikrai norite sunaikinti šį pranešimą?",
- "composer.submit_and_lock": "Submit and Lock",
- "composer.toggle_dropdown": "Toggle Dropdown"
+ "composer.submit_and_lock": "Pateikti ir užrakinti",
+ "composer.toggle_dropdown": "Perjungti Nukritimą"
}
\ No newline at end of file
diff --git a/public/language/lt/notifications.json b/public/language/lt/notifications.json
index 11589e9fc5..9da122b4e0 100644
--- a/public/language/lt/notifications.json
+++ b/public/language/lt/notifications.json
@@ -5,22 +5,22 @@
"mark_all_read": "Žymėti visus perspėjimus kaip skaitytus",
"back_to_home": "Atgal į %1",
"outgoing_link": "Išeinanti nuoroda",
- "outgoing_link_message": "You are now leaving %1.",
- "continue_to": "Continue to %1",
+ "outgoing_link_message": "Jūs dabar paliekate %1",
+ "continue_to": "Tęsti į %1",
"return_to": "Grįžti į %1",
"new_notification": "Naujas pranešimas",
"you_have_unread_notifications": "Jūs turite neperskaitytų pranešimų.",
"new_message_from": "Nauja žinutė nuo %1",
- "upvoted_your_post_in": "%1 has upvoted your post in %2.",
- "moved_your_post": "%1 has moved your post.",
- "moved_your_topic": "%1 has moved your topic.",
- "favourited_your_post_in": "%1 has favourited your post in %2.",
- "user_flagged_post_in": "%1 flagged a post in %2",
+ "upvoted_your_post_in": "%1 užbalsavo už jūsų pranešima čia %2.",
+ "moved_your_post": "%1 perkėlė jūsų pranešimą",
+ "moved_your_topic": "%1 perkėlė jūsų temą",
+ "favourited_your_post_in": "%1 patinka jūsų pranešimas čia %2",
+ "user_flagged_post_in": "%1pagrįso nuomone čia %2",
"user_posted_to": "%1 parašė atsaką %2",
"user_posted_topic": "%1 paskelbė naują temą: %2",
"user_mentioned_you_in": "%1 paminėjo Jus %2",
- "user_started_following_you": "%1 started following you.",
- "new_register": "%1 sent a registration request.",
+ "user_started_following_you": "%1 pradėjo sekti tave",
+ "new_register": "%1 atsiuntė registracijos prašymą",
"email-confirmed": "El. paštas patvirtintas",
"email-confirmed-message": "Dėkojame už el. pašto patvirtinimą. Jūsų paskyra pilnai aktyvuota.",
"email-confirm-error-message": "Įvyko klaida mėginant patvirtinti Jūsų el. pašto adresą. Galbūt kodas yra neteisingas, arba nebegalioajantis.",
diff --git a/public/language/lt/register.json b/public/language/lt/register.json
index a4c931e7d7..52cf32608c 100644
--- a/public/language/lt/register.json
+++ b/public/language/lt/register.json
@@ -15,5 +15,5 @@
"alternative_registration": "Alternatyvūs registracijos būdai",
"terms_of_use": "Naudojimo sąlygos",
"agree_to_terms_of_use": "Aš sutinku su vartojimo sąlygomis",
- "registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator."
+ "registration-added-to-queue": "Jūsų registracijos prašymas buvo pridėtas į laukiančiųjų sąrašą. Jūs gausite el.paštu laišką kada administratorius patvirtins jus"
}
\ No newline at end of file
diff --git a/public/language/lt/reset_password.json b/public/language/lt/reset_password.json
index 870d8563d0..6c2b1a11cf 100644
--- a/public/language/lt/reset_password.json
+++ b/public/language/lt/reset_password.json
@@ -13,5 +13,5 @@
"invalid_email": "Klaidingas arba neegzistuojantis el. pašto adresas!",
"password_too_short": "Įvestas slaptažodis yra per trumpas, prašome pasirinkti kitą slaptažodį.",
"passwords_do_not_match": "Du slaptažodžiai, kuriuos įvedėte, nesutampa.",
- "password_expired": "Your password has expired, please choose a new password"
+ "password_expired": "Jūsų slaptažodžio laikas baigėsi, pasirinkite nauja slaptažodį"
}
\ No newline at end of file
diff --git a/public/language/lt/unread.json b/public/language/lt/unread.json
index 56db7f7d15..37c42dc40d 100644
--- a/public/language/lt/unread.json
+++ b/public/language/lt/unread.json
@@ -5,6 +5,6 @@
"mark_as_read": "Pažymėti kaip perskaitytus",
"selected": "Pasirinkti",
"all": "Visi",
- "all_categories": "All categories",
+ "all_categories": "Visos kategorijos",
"topics_marked_as_read.success": "Temos pažymėtos kaip perskaitytos."
}
\ No newline at end of file
diff --git a/public/language/lt/user.json b/public/language/lt/user.json
index 70f6a75bc2..b4bae70ee4 100644
--- a/public/language/lt/user.json
+++ b/public/language/lt/user.json
@@ -6,12 +6,12 @@
"postcount": "Įrašų kiekis",
"email": "El. paštas",
"confirm_email": "Patvirtinti el. paštą",
- "ban_account": "Ban Account",
- "ban_account_confirm": "Do you really want to ban this user?",
- "unban_account": "Unban Account",
+ "ban_account": "Užblokuoti Paskyrą",
+ "ban_account_confirm": "Jūs tikrai norite užblokuoti šį vartotoją?",
+ "unban_account": "Atblokuoti Paskyrą",
"delete_account": "Ištrinti paskyrą",
"delete_account_confirm": "Ar tikrai norite ištrinti savo paskyrą? Šis veiksmas yra negrįžtamas, ir jūs negalėsite susigrąžinti jokių duomenų strong>
Įveskite savo vardą, kad patvirtintumėte, jog norite panaikinti šią paskyrą.",
- "delete_this_account_confirm": "Are you sure you want to delete this account? This action is irreversible and you will not be able to recover any data
",
+ "delete_this_account_confirm": "Ar jūs tikrai norite ištrint šią paskyrą? Šis veiksmas nebesugražinamas ir jūs nebegalėsite atgauti jokių duomenų
",
"fullname": "Vardas ir pavardė",
"website": "Tinklalapis",
"location": "Vieta",
@@ -22,17 +22,17 @@
"profile_views": "Profilio peržiūros",
"reputation": "Reputacija",
"favourites": "Mėgstamiausi",
- "watched": "Watched",
+ "watched": "Peržiūrėjo",
"followers": "Sekėjai",
"following": "Seka",
- "aboutme": "About me",
+ "aboutme": "Apie mane",
"signature": "Parašas",
"gravatar": "Gravatar",
"birthday": "Gimimo diena",
"chat": "Susirašinėti",
"follow": "Sekti",
"unfollow": "Nesekti",
- "more": "More",
+ "more": "Daugiau",
"profile_update_success": "Profilis sėkmingai atnaujintas!",
"change_picture": "Pakeisti paveikslėlį",
"edit": "Redaguoti",
@@ -65,24 +65,24 @@
"digest_monthly": "Kas mėnesį",
"send_chat_notifications": "Jeigu gaunama nauja pokalbių žinutė ir aš neprisijungęs, siųsti el. laišką",
"send_post_notifications": "Atsiųsti el. laišką kai parašomi atsakymai į mano prenumeruojamas temas",
- "settings-require-reload": "Some setting changes require a reload. Click here to reload the page.",
+ "settings-require-reload": "Kai kurie nustatymų pakeitimai reikalauja perkrovimo. Spauskite čia kad perkrauti puslapį",
"has_no_follower": "Šis vartotojas neturi jokių sekėjų :(",
"follows_no_one": "Šis vartotojas nieko neseka :(",
- "has_no_posts": "This user hasn't posted anything yet.",
- "has_no_topics": "This user hasn't posted any topics yet.",
- "has_no_watched_topics": "This user hasn't watched any topics yet.",
+ "has_no_posts": "Šis vartotojas pakolkas neparašė jokių pranešimų",
+ "has_no_topics": "Šis vartotojas pakolkas nesukūrė jokių temų",
+ "has_no_watched_topics": "Šis vartotojas pakolkas nestebėjo jokių temų",
"email_hidden": "El. paštas paslėptas",
"hidden": "paslėptas",
- "paginate_description": "Paginate topics and posts instead of using infinite scroll",
+ "paginate_description": "Puslapiavimas temų ir pranešimų, vietoj kad naudoti judėjimą su pelytė į viršų ir į apačia",
"topics_per_page": "Temų puslapyje",
"posts_per_page": "Pranešimų puslapyje",
- "notification_sounds": "Play a sound when you receive a notification",
+ "notification_sounds": "Paleisti garsą kai jūs gaunate pranešimą",
"browsing": "Naršymo nustatymai",
- "open_links_in_new_tab": "Open outgoing links in new tab",
- "enable_topic_searching": "Enable In-Topic Searching",
- "topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen",
- "follow_topics_you_reply_to": "Follow topics that you reply to",
- "follow_topics_you_create": "Follow topics you create",
- "grouptitle": "Select the group title you would like to display",
- "no-group-title": "No group title"
+ "open_links_in_new_tab": "Atidaryti išeinančias nuorodas naujam skirtuke",
+ "enable_topic_searching": "Įjungti Temų Ieškojimą ",
+ "topic_search_help": "Jeigu įjungtas, temų ieškojimas, nepaisys naršyklės puslapio ieškojimo, ir pradės ieškoti tik toje temoje kuri bus rodoma ekrane",
+ "follow_topics_you_reply_to": "Sekti tas temas kur atrašai tu",
+ "follow_topics_you_create": "Sekti tas temas kurias sukuri tu",
+ "grouptitle": "Pasirinkite grupės pavadinimą kurį norėtumėte kad atvaizduotu",
+ "no-group-title": "Nėra grupės pavadinimo"
}
\ No newline at end of file
diff --git a/public/language/lt/users.json b/public/language/lt/users.json
index ddfb31c12b..a04cdd5093 100644
--- a/public/language/lt/users.json
+++ b/public/language/lt/users.json
@@ -7,15 +7,15 @@
"load_more": "Įkelti daugiau",
"users-found-search-took": "Rasta %1 vartotojas(-ai)! Paieška užtruko %2 sekundes.",
"filter-by": "Filtruoti pagal",
- "online-only": "Online only",
+ "online-only": "Tik prisijunge",
"picture-only": "Tik paveikslėlis",
- "invite": "Invite",
- "invitation-email-sent": "An invitation email has been sent to %1",
- "user_list": "User List",
- "recent_topics": "Recent Topics",
- "popular_topics": "Popular Topics",
- "unread_topics": "Unread Topics",
- "categories": "Categories",
- "tags": "Tags",
- "map": "Map"
+ "invite": "Pakviesti",
+ "invitation-email-sent": "Pakvietimas el.paštu buvo išsiųstas į %1!",
+ "user_list": "Vartotojų sąrašas",
+ "recent_topics": "Paskutinės temos",
+ "popular_topics": "Populiarios temos",
+ "unread_topics": "Neperskaitytos temos",
+ "categories": "Kategorijos",
+ "tags": "Žymos",
+ "map": "Žemėlapis"
}
\ No newline at end of file
diff --git a/public/language/ms/global.json b/public/language/ms/global.json
index f35004ec2a..c15415dc99 100644
--- a/public/language/ms/global.json
+++ b/public/language/ms/global.json
@@ -19,13 +19,13 @@
"save_changes": "Simpan perubahan",
"close": "Tutup",
"pagination": "Mukasurat",
- "pagination.out_of": "%1 out of %2",
+ "pagination.out_of": "%1 daripada %2",
"pagination.enter_index": "Masukkan indeks",
"header.admin": "Pentadbir",
- "header.categories": "Categories",
+ "header.categories": "Kategori",
"header.recent": "Terkini",
"header.unread": "Belum dibaca",
- "header.tags": "Tags",
+ "header.tags": "Tag",
"header.popular": "Popular",
"header.users": "Pengguna",
"header.groups": "Kumpulan",
diff --git a/public/language/ms/notifications.json b/public/language/ms/notifications.json
index 2da026aa39..d020f54afa 100644
--- a/public/language/ms/notifications.json
+++ b/public/language/ms/notifications.json
@@ -20,7 +20,7 @@
"user_posted_topic": "%1 membuka topik baru : %2",
"user_mentioned_you_in": "%1 sebut anda di %2",
"user_started_following_you": "%1 mula mengikut anda.",
- "new_register": "%1 sent a registration request.",
+ "new_register": "%1 menghantar jemputan pendaftaran.",
"email-confirmed": "EMel Disahkan",
"email-confirmed-message": "Terima kasih kerana mengesahkan emel anda. Akaun anda telah diaktifkan sepenuhnya.",
"email-confirm-error-message": "Berlaku masalah semasa mengesahkan emel anda. Mungkin kod tidak sah atau tamat tempoh.",
diff --git a/public/language/sv/category.json b/public/language/sv/category.json
index d82abe3a24..3fdd64e037 100644
--- a/public/language/sv/category.json
+++ b/public/language/sv/category.json
@@ -5,8 +5,8 @@
"browsing": "läser",
"no_replies": "Ingen har svarat",
"share_this_category": "Dela den här kategorin",
- "watch": "Watch",
+ "watch": "Bevaka",
"ignore": "Ignorera",
- "watch.message": "You are now watching updates from this category",
- "ignore.message": "You are now ignoring updates from this category"
+ "watch.message": "Du bevakar nu uppdateringar ifrån denna kategori",
+ "ignore.message": "Du ignorerar nu uppdateringar ifrån denna kategori"
}
\ No newline at end of file
diff --git a/public/language/sv/global.json b/public/language/sv/global.json
index 647cbec5d0..b7ad673b45 100644
--- a/public/language/sv/global.json
+++ b/public/language/sv/global.json
@@ -3,10 +3,10 @@
"search": "Sök",
"buttons.close": "Stäng",
"403.title": "Tillgång Nekad",
- "403.message": "You seem to have stumbled upon a page that you do not have access to.",
- "403.login": "Perhaps you should try logging in?",
+ "403.message": "Du verkar ha ramlat in på en sida du ej har tillgång till.",
+ "403.login": "Du kanske bör försöka logga in?",
"404.title": "Sidan saknas",
- "404.message": "You seem to have stumbled upon a page that does not exist. Return to the home page.",
+ "404.message": "Du verkar ha ramlat in på en sida som inte finns. Återgå till första sidan.",
"500.title": "Internt fel.",
"500.message": "Hoppsan! Verkar som att något gått snett!",
"register": "Registrera",
@@ -22,13 +22,13 @@
"pagination.out_of": "%1 av %2",
"pagination.enter_index": "Skriv in index ",
"header.admin": "Admin",
- "header.categories": "Categories",
+ "header.categories": "Kategorier",
"header.recent": "Senaste",
"header.unread": "Olästa",
"header.tags": "Märkningar",
"header.popular": "Populära",
"header.users": "Användare",
- "header.groups": "Groups",
+ "header.groups": "Grupper",
"header.chats": "Chattar",
"header.notifications": "Notiser",
"header.search": "Sök",
@@ -51,7 +51,7 @@
"views": "Visningar",
"reputation": "Rykte",
"read_more": "läs mer",
- "more": "More",
+ "more": "Mer",
"posted_ago_by_guest": "inskickad %1 av anonym",
"posted_ago_by": "inskickad %1 av %2",
"posted_ago": "inskickad %1",
@@ -77,7 +77,7 @@
"updated.title": "Forum uppdaterades",
"updated.message": "Det här forumet har nu uppdaterats till senaste versionen. Klicka här för att ladda om sidan.",
"privacy": "Integritet",
- "follow": "Follow",
- "unfollow": "Unfollow",
+ "follow": "Följ",
+ "unfollow": "Sluta följ",
"delete_all": "Ta bort Alla"
}
\ No newline at end of file
diff --git a/public/language/sv/login.json b/public/language/sv/login.json
index 363da51e9b..1b3cf37221 100644
--- a/public/language/sv/login.json
+++ b/public/language/sv/login.json
@@ -1,7 +1,7 @@
{
"username-email": "Användarnamn eller epostadress",
"username": "Användarnamn",
- "email": "Email",
+ "email": "Epostadress",
"remember_me": "Kom ihåg mig?",
"forgot_password": "Glömt lösenord?",
"alternative_logins": "Alternativa inloggningssätt",
diff --git a/public/language/sv/modules.json b/public/language/sv/modules.json
index 008af93bc0..a370feb0b1 100644
--- a/public/language/sv/modules.json
+++ b/public/language/sv/modules.json
@@ -15,12 +15,12 @@
"chat.seven_days": "7 Dagar",
"chat.thirty_days": "30 Dagar",
"chat.three_months": "3 Månader",
- "composer.compose": "Compose",
- "composer.show_preview": "Show Preview",
- "composer.hide_preview": "Hide Preview",
+ "composer.compose": "Komponera",
+ "composer.show_preview": "Visa förhandsgranskning",
+ "composer.hide_preview": "Dölj förhandsgranskning",
"composer.user_said_in": "%1 sa i %2:",
"composer.user_said": "%1 sa:",
"composer.discard": "Är du säker på att du vill förkasta det här inlägget?",
- "composer.submit_and_lock": "Submit and Lock",
- "composer.toggle_dropdown": "Toggle Dropdown"
+ "composer.submit_and_lock": "Skicka och lås",
+ "composer.toggle_dropdown": "Visa/Dölj dropdown"
}
\ No newline at end of file
diff --git a/public/language/sv/notifications.json b/public/language/sv/notifications.json
index c95db1b8ee..424b6f4e42 100644
--- a/public/language/sv/notifications.json
+++ b/public/language/sv/notifications.json
@@ -2,7 +2,7 @@
"title": "Notiser",
"no_notifs": "Du har inga nya notiser",
"see_all": "Visa alla notiser",
- "mark_all_read": "Mark all notifications read",
+ "mark_all_read": "Markera alla notiser som lästa",
"back_to_home": "Tillbaka till %1",
"outgoing_link": "Utgående länk",
"outgoing_link_message": "Du lämnar nu %1. ",
@@ -20,7 +20,7 @@
"user_posted_topic": "%1 har skapat ett nytt ämne: %2",
"user_mentioned_you_in": "%1 nämnde dig i %2",
"user_started_following_you": "%1 började följa dig.",
- "new_register": "%1 sent a registration request.",
+ "new_register": "%1 skickade en registreringsförfrågan.",
"email-confirmed": "Epost bekräftad",
"email-confirmed-message": "Tack för att du bekräftat din epostadress. Ditt konto är nu fullt ut aktiverat.",
"email-confirm-error-message": "Det uppstod ett fel med att bekräfta din epostadress. Kanske var koden ogiltig eller har gått ut.",
diff --git a/public/language/sv/recent.json b/public/language/sv/recent.json
index 28a0d6f599..46d7531d3c 100644
--- a/public/language/sv/recent.json
+++ b/public/language/sv/recent.json
@@ -6,14 +6,14 @@
"year": "År",
"alltime": "Alltid",
"no_recent_topics": "Det finns inga olästa ämnen.",
- "no_popular_topics": "There are no popular topics.",
- "there-is-a-new-topic": "There is a new topic.",
- "there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.",
- "there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.",
- "there-are-new-topics": "There are %1 new topics.",
- "there-are-new-topics-and-a-new-post": "There are %1 new topics and a new post.",
- "there-are-new-topics-and-new-posts": "There are %1 new topics and %2 new posts.",
- "there-is-a-new-post": "There is a new post.",
- "there-are-new-posts": "There are %1 new posts.",
- "click-here-to-reload": "Click here to reload."
+ "no_popular_topics": "Det finns inga populära ämnen",
+ "there-is-a-new-topic": "Det finns ett nytt ämne",
+ "there-is-a-new-topic-and-a-new-post": "Det finns ett nytt ämne och ett nytt inlägg.",
+ "there-is-a-new-topic-and-new-posts": "Det finns ett nytt ämne och %1 nya inlägg.",
+ "there-are-new-topics": "Det finns %1 nya ämnen.",
+ "there-are-new-topics-and-a-new-post": "Det finns %1 nya ämnen och ett nytt inlägg..",
+ "there-are-new-topics-and-new-posts": "Det finns %1 nya ämnen och %2 nya inlägg.",
+ "there-is-a-new-post": "Det finns ett nytt inlägg.",
+ "there-are-new-posts": "Det finns %1 nya inlägg.",
+ "click-here-to-reload": "Klicka här för att ladda om."
}
\ No newline at end of file
diff --git a/public/language/sv/register.json b/public/language/sv/register.json
index 750db5cc62..6f1aa3764b 100644
--- a/public/language/sv/register.json
+++ b/public/language/sv/register.json
@@ -15,5 +15,5 @@
"alternative_registration": "Alternativ registrering",
"terms_of_use": "Användarvillkor",
"agree_to_terms_of_use": "Jag godkänner användarvillkoren",
- "registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator."
+ "registration-added-to-queue": "Din registrering har lagts till i kön. Du kommer att få ett mail när den accepteras av en administratör."
}
\ No newline at end of file
diff --git a/public/language/sv/reset_password.json b/public/language/sv/reset_password.json
index 17c4447925..9f79207d43 100644
--- a/public/language/sv/reset_password.json
+++ b/public/language/sv/reset_password.json
@@ -11,7 +11,7 @@
"enter_email_address": "Skriv in epostadress",
"password_reset_sent": "Lösenordsåterställning skickad",
"invalid_email": "Felaktig epost / Epost finns inte!",
- "password_too_short": "The password entered is too short, please pick a different password.",
- "passwords_do_not_match": "The two passwords you've entered do not match.",
- "password_expired": "Your password has expired, please choose a new password"
+ "password_too_short": "Lösenordet är för kort, var god välj ett annat lösenord.",
+ "passwords_do_not_match": "De två lösenorden du har fyllt i matchar ej varandra.",
+ "password_expired": "Ditt lösenord har gått ut, var god välj ett nytt lösenord."
}
\ No newline at end of file
diff --git a/public/language/sv/unread.json b/public/language/sv/unread.json
index b6a20d21ca..0ed0a80ae7 100644
--- a/public/language/sv/unread.json
+++ b/public/language/sv/unread.json
@@ -5,6 +5,6 @@
"mark_as_read": "Markerad som läst",
"selected": "Vald",
"all": "Alla",
- "all_categories": "All categories",
+ "all_categories": "Alla kategorier",
"topics_marked_as_read.success": "Ämnet markerat som läst."
}
\ No newline at end of file
diff --git a/public/language/sv/user.json b/public/language/sv/user.json
index c76476de52..6ccc8a3760 100644
--- a/public/language/sv/user.json
+++ b/public/language/sv/user.json
@@ -6,12 +6,12 @@
"postcount": "Antal inlägg",
"email": "Epost",
"confirm_email": "Bekräfta epostadress ",
- "ban_account": "Ban Account",
- "ban_account_confirm": "Do you really want to ban this user?",
- "unban_account": "Unban Account",
+ "ban_account": "Bannlys konto",
+ "ban_account_confirm": "Vill du verkligen bannlysa den här användaren?",
+ "unban_account": "Ta bort bannlysning",
"delete_account": "Ta bort ämne",
"delete_account_confirm": "Är du säker på att du vill radera ditt konto? Denna åtgärd går inte att ångra och du kommer inte kunna återställa ditt konto
Skriv in ditt användarnamn för att bekräfta att du vill radera ditt konto.",
- "delete_this_account_confirm": "Are you sure you want to delete this account? This action is irreversible and you will not be able to recover any data
",
+ "delete_this_account_confirm": "Är du säker på att du vill ta bort detta konto? Detta går ej att ångra - data går förlorad för alltid
",
"fullname": "Hela namnet",
"website": "Webbsida",
"location": "Plats",
@@ -68,9 +68,9 @@
"settings-require-reload": "Vissa inställningar som ändrades kräver att sidan laddas om. Klicka här för att ladda om sidan.",
"has_no_follower": "Denna användare har inga följare :(",
"follows_no_one": "Denna användare följer ingen :(",
- "has_no_posts": "This user hasn't posted anything yet.",
- "has_no_topics": "This user hasn't posted any topics yet.",
- "has_no_watched_topics": "This user hasn't watched any topics yet.",
+ "has_no_posts": "Användaren har inte skrivit några inlägg ännu",
+ "has_no_topics": "Användaren har inte skrivit några ämnen ännu",
+ "has_no_watched_topics": "Användaren har inte bevakat några ämnen ännu",
"email_hidden": "Epost dold",
"hidden": "dold",
"paginate_description": "Gör så att ämnen och inlägg visas som sidor istället för oändlig skroll",
diff --git a/public/language/sv/users.json b/public/language/sv/users.json
index 1e364986af..5acd1b0f84 100644
--- a/public/language/sv/users.json
+++ b/public/language/sv/users.json
@@ -5,17 +5,17 @@
"search": "Sök",
"enter_username": "Ange ett användarnamn för att söka",
"load_more": "Ladda fler",
- "users-found-search-took": "%1 user(s) found! Search took %2 seconds.",
- "filter-by": "Filter By",
- "online-only": "Online only",
- "picture-only": "Picture only",
- "invite": "Invite",
- "invitation-email-sent": "An invitation email has been sent to %1",
- "user_list": "User List",
- "recent_topics": "Recent Topics",
- "popular_topics": "Popular Topics",
- "unread_topics": "Unread Topics",
- "categories": "Categories",
- "tags": "Tags",
- "map": "Map"
+ "users-found-search-took": "%1 användare hittades! Sökningen tog %2 sekunder.",
+ "filter-by": "Filtrera på",
+ "online-only": "Endast online",
+ "picture-only": "Endast bild",
+ "invite": "Bjud in",
+ "invitation-email-sent": "En inbjudan har skickats till %1",
+ "user_list": "Användarlista",
+ "recent_topics": "Senaste ämnen",
+ "popular_topics": "Populära ämnen",
+ "unread_topics": "Olästa ämnen",
+ "categories": "Kategorier",
+ "tags": "Märkord",
+ "map": "Karta"
}
\ No newline at end of file
diff --git a/public/language/tr/global.json b/public/language/tr/global.json
index 7e63e5e3bd..979e9715c5 100644
--- a/public/language/tr/global.json
+++ b/public/language/tr/global.json
@@ -22,7 +22,7 @@
"pagination.out_of": "%1 - %2",
"pagination.enter_index": "İndex gir",
"header.admin": "Yönetim",
- "header.categories": "Categories",
+ "header.categories": "Kategoriler",
"header.recent": "Yeni",
"header.unread": "Okunmamış",
"header.tags": "Etiketler",
@@ -51,7 +51,7 @@
"views": "Görüntülemeler",
"reputation": "Saygınlık",
"read_more": "daha fazla oku",
- "more": "More",
+ "more": "Daha Fazla",
"posted_ago_by_guest": "Ziyaretçi tarafından %1 yayımlandı",
"posted_ago_by": "%2 tarafından %1 yayımlandı",
"posted_ago": "%1 yayımlandı",
diff --git a/public/language/tr/notifications.json b/public/language/tr/notifications.json
index 948a1dfeca..d498a13dbe 100644
--- a/public/language/tr/notifications.json
+++ b/public/language/tr/notifications.json
@@ -20,7 +20,7 @@
"user_posted_topic": "%1 yeni bir konu yarattı: %2",
"user_mentioned_you_in": "%1%2 başlığında sizden bahsetti.",
"user_started_following_you": "%1 sizi takip etmeye başladı.",
- "new_register": "%1 sent a registration request.",
+ "new_register": "%1 kayıt olma isteği gönderdi.",
"email-confirmed": "E-posta onaylandı",
"email-confirmed-message": "E-postanızı onaylandığınız için teşekkürler. Hesabınız tamamen aktive edildi.",
"email-confirm-error-message": "E-posta adresinizi onaylarken bir hata oluştu. Kodunuz geçersiz ya da eski olabilir.",
diff --git a/public/language/tr/register.json b/public/language/tr/register.json
index cd4d6c67c9..c46c27ad32 100644
--- a/public/language/tr/register.json
+++ b/public/language/tr/register.json
@@ -15,5 +15,5 @@
"alternative_registration": "Alternatif Kayıt",
"terms_of_use": "Kullanım Şartları",
"agree_to_terms_of_use": "Kullanım Şartlarını kabul ediyorum",
- "registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator."
+ "registration-added-to-queue": "Kayıt olma isteğiniz kabul listesine eklenmiştir. Yönetici tarafından kabul edildiğinizde mail alacaksınız."
}
\ No newline at end of file
diff --git a/public/language/tr/unread.json b/public/language/tr/unread.json
index 95268cf85c..49b8995dc5 100644
--- a/public/language/tr/unread.json
+++ b/public/language/tr/unread.json
@@ -5,6 +5,6 @@
"mark_as_read": "Okundu Olarak İşaretle",
"selected": "Seçili",
"all": "Hepsi",
- "all_categories": "All categories",
+ "all_categories": "Tüm kategoriler",
"topics_marked_as_read.success": "Başlıklar okundu olarak işaretlendi!"
}
\ No newline at end of file
diff --git a/public/language/tr/user.json b/public/language/tr/user.json
index 2739622bee..ac16ae1970 100644
--- a/public/language/tr/user.json
+++ b/public/language/tr/user.json
@@ -11,7 +11,7 @@
"unban_account": "Hesabı Kullanıma Aç",
"delete_account": "Hesabı Sil",
"delete_account_confirm": "Hesabınızı silmek istediğinize emin misiniz? Bu işlem geri çevrilemez ve tüm verileriniz sistemden silinecek.
Eğer hesabınızı silmek istiyorsanız lütfen kullanıcı isminizi girerek işlemi onaylayın.",
- "delete_this_account_confirm": "Are you sure you want to delete this account? This action is irreversible and you will not be able to recover any data
",
+ "delete_this_account_confirm": "Bu hesabı silmek istediğinizden emin misiniz? Bu işlem geri döndürülemez ve hiç bir veriyi kurtaramazsınız
Shyiramo izina ryawe kugirango wemeze ko koko ushaka gusenya iyi konte.",
+ "delete_this_account_confirm": "Wiringiye neza ko ushaka gusiba iyi konte? Ntabwo uri bubashe kwisubira kandi ntabwo urabasha gusubirana ibyo wari ufiteho numara kuyisiba
",
+ "fullname": "Izina Ryuzuye",
+ "website": "Urubuga",
+ "location": "Ahantu",
+ "age": "Imyaka",
+ "joined": "Yaje",
+ "lastonline": "Aheruka ku Murongo",
+ "profile": "Ishusho",
+ "profile_views": "Ishusho Yarebwe",
+ "reputation": "Amanota",
+ "favourites": "Ibitoneshwa",
+ "watched": "Ibikurikiranwa",
+ "followers": "Abamukurikira",
+ "following": "Akurikira",
+ "aboutme": "Inshamake y'Ubuzima",
+ "signature": "Intero",
+ "gravatar": "Gravatar",
+ "birthday": "Itariki y'Amavuko",
+ "chat": "Mu Gikari",
+ "follow": "Kurikira",
+ "unfollow": "Ntukurikire",
+ "more": "Ibindi",
+ "profile_update_success": "Ishusho yashyizwe ku gihe nta ngorane!",
+ "change_picture": "Hindura Ifoto",
+ "edit": "Hinduraho",
+ "uploaded_picture": "Ifoto Yapakiwe",
+ "upload_new_picture": "Pakira Ifoto Nshya",
+ "upload_new_picture_from_url": "Pakira Ifoto Nshya Ukoresheje URL",
+ "current_password": "Ijambobanga Risanzweho",
+ "change_password": "Hindura Ijambobanga",
+ "change_password_error": "Ijambobanga Ritari Ryo!",
+ "change_password_error_wrong_current": "Ijambobanga ryawe watanze nk'irisanzweho ntabwo ari ryo!",
+ "change_password_error_length": "Ijambobanga watanze ni rigufi cyane!",
+ "change_password_error_match": "Ijambobanga ugomba kuryandukura mu buryo bumwe inshuro ebyiri!",
+ "change_password_error_privileges": "Nta burenganzira ufite bwo guhindura iri jambobanga. ",
+ "change_password_success": "Ijambobanga ryawe ryavuguruwe!",
+ "confirm_password": "Emeza Ijambobanga",
+ "password": "Ijambobanga",
+ "username_taken_workaround": "Izina ushaka kujya ukoresha twasanze ryarafashwe. Ntugire impungenge kuko twakuboneye iryo byenda kumera kimwe. Uzaba uzwi ku izina rya %1",
+ "upload_picture": "Gushyiraho ifoto",
+ "upload_a_picture": "Shyiraho ifoto",
+ "image_spec": "Wemerewe gushyiraho ifoto iri muri foruma ya PNG, JPG, cyangwa GIF ",
+ "settings": "Itunganya",
+ "show_email": "Hagaragazwe Email Yanjye",
+ "show_fullname": "Hagaragazwe Izina Ryuzuye Ryanjye",
+ "restrict_chats": "Emerera ubutumwa buciye mu gikari abantu ukurikira gusa",
+ "digest_label": "Iyandikishe ku Ngingo z'Ingenzi",
+ "digest_description": "Iyandikishe ku makuru aciye kuri email ajyanye n'ibivugirwa aha (amatangazo mashya n'ibiganiro) biciye muri gahunda yagenwe",
+ "digest_off": "Birafunze",
+ "digest_daily": "Buri Munsi",
+ "digest_weekly": "Buri Cyumweru",
+ "digest_monthly": "Buri Kwezi",
+ "send_chat_notifications": "Njye nohererezwa email igihe hari ubutumwa bwo mu gikari banyoherereje ntari ku murongo",
+ "send_post_notifications": "Njye nohererezwa email mu gihe hari abanditse ku biganiro niyandikishijeho",
+ "settings-require-reload": "Hari igihe ibyo watunganyije bitagaragara iyo utongeye ngo upakire paji uriho. Kanda hano upakire iyi paji bundibushya. ",
+ "has_no_follower": "Uyu muntu ntabwo afite abamukurikira :(",
+ "follows_no_one": "Uyu muntu ntabwo akurikira umuntu numwe :(",
+ "has_no_posts": "Uyu muntu nta kintu arashyiraho. ",
+ "has_no_topics": "Uyu muntu nta kiganiro aratangiza na kimwe. ",
+ "has_no_watched_topics": "Uyu muntu ntabwo arakurikira ikiganiro na kimwe.",
+ "email_hidden": "Email Yahishwe",
+ "hidden": "byahishwe",
+ "paginate_description": "Gabanya ibiganiro n'ibyashyizweho mu ma paji aho kugirango umuntu ajye amanuka ubudahagarara ",
+ "topics_per_page": "Ibiganiro kuri Buri Paji",
+ "posts_per_page": "Ibyashyizweho kuri Buri Paji",
+ "notification_sounds": "Hajye humvikana ijwi rikumenyesha ko haje itangazo rishya",
+ "browsing": "Gutunganya Uburyo Usoma",
+ "open_links_in_new_tab": "Fungurira imirongo ijya hanze mu idirishya rishya",
+ "enable_topic_searching": "Emerera Ugushakira mu Kiganiro",
+ "topic_search_help": "Nibyemerwa, ugushakira mu kiganiro bizajya biba ari byo bikorwa maze bitume umuntu abasha gushakira mu kiganiro hose aho gushakira kuri paji igaragarira amaso, imbere yawe gusa",
+ "follow_topics_you_reply_to": "Kurikira ibiganiro ushyiraho ibisubizo",
+ "follow_topics_you_create": "Kurikira ibiganiro uba watangije",
+ "grouptitle": "Hitamo umutwe w'itsinda ushaka ko uzajya ugaragara",
+ "no-group-title": "Nta mutwe w'itsinda"
+}
\ No newline at end of file
diff --git a/public/language/rw/users.json b/public/language/rw/users.json
new file mode 100644
index 0000000000..944183afcb
--- /dev/null
+++ b/public/language/rw/users.json
@@ -0,0 +1,21 @@
+{
+ "latest_users": "Abantu Bashya",
+ "top_posters": "Abashyizeho Byinshi",
+ "most_reputation": "Abafite Amanota Menshi",
+ "search": "Shaka",
+ "enter_username": "Shyiramo izina ryo gushaka",
+ "load_more": "Zana Ibindi",
+ "users-found-search-took": "Habonetse abantu (umuntu) %1! Byatwaye amasegonda %2 gusa.",
+ "filter-by": "Yungurura Ukurikije",
+ "online-only": "Abari ku murongo gusa",
+ "picture-only": "Ifoto gusa",
+ "invite": "Tumira",
+ "invitation-email-sent": "Ubutumire bwa email bwohererejwe %1",
+ "user_list": "Urutonde rw'Abantu",
+ "recent_topics": "Ibiganiro Biheruka",
+ "popular_topics": "Ibiganiro Bikunzwe",
+ "unread_topics": "Ibiganiro Bitarasomwa",
+ "categories": "Ibyiciro",
+ "tags": "Ibimenyetso",
+ "map": "Ikarita"
+}
\ No newline at end of file
From 7160e157deea311790ebe8f7bd4d487222d34b89 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Wed, 12 Aug 2015 10:17:38 -0400
Subject: [PATCH 054/284] added missing language.json file for Kinyarwanda
---
public/language/rw/language.json | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 public/language/rw/language.json
diff --git a/public/language/rw/language.json b/public/language/rw/language.json
new file mode 100644
index 0000000000..fb851f2e06
--- /dev/null
+++ b/public/language/rw/language.json
@@ -0,0 +1,5 @@
+{
+ "name": "Kinyarwanda",
+ "code": "rw",
+ "dir": "ltr"
+}
\ No newline at end of file
From 937875b0be66a82db249910008f27663318c40e5 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Wed, 12 Aug 2015 11:00:09 -0400
Subject: [PATCH 055/284] updated mentions minver
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 5740bc3cea..f655cf9ec6 100644
--- a/package.json
+++ b/package.json
@@ -44,7 +44,7 @@
"nodebb-plugin-dbsearch": "^0.2.12",
"nodebb-plugin-emoji-extended": "^0.4.8",
"nodebb-plugin-markdown": "^4.0.0",
- "nodebb-plugin-mentions": "^0.11.7",
+ "nodebb-plugin-mentions": "1.0.0",
"nodebb-plugin-soundpack-default": "^0.1.1",
"nodebb-plugin-spam-be-gone": "^0.4.0",
"nodebb-rewards-essentials": "^0.0.1",
From 0d789261a92c485de154c060bed5df9bc5560dcc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?=
Date: Wed, 12 Aug 2015 14:49:26 -0400
Subject: [PATCH 056/284] filter falsy check valid
---
src/database/mongo/main.js | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/database/mongo/main.js b/src/database/mongo/main.js
index 9d8fae3b65..4c18fbc634 100644
--- a/src/database/mongo/main.js
+++ b/src/database/mongo/main.js
@@ -36,17 +36,19 @@ module.exports = function(db, module) {
}
if (Array.isArray(data.cid) && data.cid.length) {
+ data.cid = data.cid.filter(Boolean);
if (data.cid.length > 1) {
searchQuery.cid = {$in: data.cid.map(String)};
- } else {
+ } else if (data.cid[0]) {
searchQuery.cid = data.cid[0].toString();
}
}
if (Array.isArray(data.uid) && data.uid.length) {
+ data.uid = data.uid.filter(Boolean);
if (data.uid.length > 1) {
searchQuery.uid = {$in: data.uid.map(String)};
- } else {
+ } else if (data.uid[0]) {
searchQuery.uid = data.uid[0].toString();
}
}
From fd87bedc900ada6dd5f0df10e9022443904b7362 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?=
Date: Wed, 12 Aug 2015 14:54:49 -0400
Subject: [PATCH 057/284] fix indent
---
src/database/mongo/main.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/database/mongo/main.js b/src/database/mongo/main.js
index 4c18fbc634..045bc2c5bc 100644
--- a/src/database/mongo/main.js
+++ b/src/database/mongo/main.js
@@ -37,7 +37,7 @@ module.exports = function(db, module) {
if (Array.isArray(data.cid) && data.cid.length) {
data.cid = data.cid.filter(Boolean);
- if (data.cid.length > 1) {
+ if (data.cid.length > 1) {
searchQuery.cid = {$in: data.cid.map(String)};
} else if (data.cid[0]) {
searchQuery.cid = data.cid[0].toString();
From 235a981dd10ba443776e088ee5de457eb35b829e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?=
Date: Wed, 12 Aug 2015 16:14:48 -0400
Subject: [PATCH 058/284] added mongodb memory usage
---
src/database/mongo.js | 13 +++++++++++--
src/views/admin/advanced/database.tpl | 4 ++++
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/src/database/mongo.js b/src/database/mongo.js
index 389a85bf7d..49f2da5edd 100644
--- a/src/database/mongo.js
+++ b/src/database/mongo.js
@@ -177,16 +177,25 @@
};
module.info = function(db, callback) {
- db.stats({scale:1024}, function(err, stats) {
- if(err) {
+ async.parallel({
+ serverStats: function(next) {
+ db.command({'serverStatus': 1}, next);
+ },
+ stats: function(next) {
+ db.stats({scale:1024}, next);
+ }
+ }, function(err, results) {
+ if (err) {
return callback(err);
}
+ var stats = results.stats;
stats.avgObjSize = (stats.avgObjSize / 1024).toFixed(2);
stats.dataSize = (stats.dataSize / 1024).toFixed(2);
stats.storageSize = (stats.storageSize / 1024).toFixed(2);
stats.fileSize = (stats.fileSize / 1024).toFixed(2);
stats.indexSize = (stats.indexSize / 1024).toFixed(2);
+ stats.mem = results.serverStats.mem;
stats.raw = JSON.stringify(stats, null, 4);
stats.mongo = true;
diff --git a/src/views/admin/advanced/database.tpl b/src/views/admin/advanced/database.tpl
index 0390e7a681..b868b322a9 100644
--- a/src/views/admin/advanced/database.tpl
+++ b/src/views/admin/advanced/database.tpl
@@ -13,6 +13,10 @@
Storage Size{mongo.storageSize} mb Index Size{mongo.indexSize} mb File Size{mongo.fileSize} mb
+
+ Resident Memory{mongo.mem.resident} mb
+ Virtual Memory{mongo.mem.virtual} mb
+ Mapped Memory{mongo.mem.mapped} mb
From aeb15ed7ee6fa3233cc62cf206dc6cdf407eb18e Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Thu, 13 Aug 2015 12:20:53 -0400
Subject: [PATCH 059/284] moved getMonthlyPageViews to analytics
---
src/analytics.js | 19 +++++++++++++++++++
src/socket.io/admin.js | 20 +-------------------
2 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/src/analytics.js b/src/analytics.js
index 49254954bc..8ac91877c3 100644
--- a/src/analytics.js
+++ b/src/analytics.js
@@ -66,4 +66,23 @@ var cronJob = require('cron').CronJob,
Analytics.getUnwrittenPageviews = function() {
return pageViews;
};
+
+ Analytics.getMonthlyPageViews = function(callback) {
+ var thisMonth = new Date();
+ var lastMonth = new Date();
+ thisMonth.setMonth(thisMonth.getMonth(), 1);
+ thisMonth.setHours(0, 0, 0, 0);
+ lastMonth.setMonth(thisMonth.getMonth() - 1, 1);
+ lastMonth.setHours(0, 0, 0, 0);
+
+ var values = [thisMonth.getTime(), lastMonth.getTime()];
+
+ db.sortedSetScores('analytics:pageviews:month', values, function(err, scores) {
+ if (err) {
+ return callback(err);
+ }
+ callback(null, {thisMonth: scores[0] || 0, lastMonth: scores[1] || 0});
+ });
+ };
+
}(exports));
\ No newline at end of file
diff --git a/src/socket.io/admin.js b/src/socket.io/admin.js
index a9d75b3f89..00fea0c730 100644
--- a/src/socket.io/admin.js
+++ b/src/socket.io/admin.js
@@ -233,7 +233,7 @@ SocketAdmin.analytics.get = function(socket, data, callback) {
getHourlyStatsForSet('analytics:pageviews', data.amount, next);
},
monthlyPageViews: function(next) {
- getMonthlyPageViews(next);
+ analytics.getMonthlyPageViews(next);
}
}, function(err, data) {
data.pastDay = data.pageviews.reduce(function(a, b) {return parseInt(a, 10) + parseInt(b, 10);});
@@ -286,24 +286,6 @@ function getHourlyStatsForSet(set, hours, callback) {
});
}
-function getMonthlyPageViews(callback) {
- var thisMonth = new Date();
- var lastMonth = new Date();
- thisMonth.setMonth(thisMonth.getMonth(), 1);
- thisMonth.setHours(0, 0, 0, 0);
- lastMonth.setMonth(thisMonth.getMonth() - 1, 1);
- lastMonth.setHours(0, 0, 0, 0);
-
- var values = [thisMonth.getTime(), lastMonth.getTime()];
-
- db.sortedSetScores('analytics:pageviews:month', values, function(err, scores) {
- if (err) {
- return callback(err);
- }
- callback(null, {thisMonth: scores[0] || 0, lastMonth: scores[1] || 0});
- });
-}
-
SocketAdmin.getMoreEvents = function(socket, next, callback) {
var start = parseInt(next, 10);
if (start < 0) {
From 46bcd66297cac9c8cfc0ef74be51fe9776a88360 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Thu, 13 Aug 2015 12:33:24 -0400
Subject: [PATCH 060/284] filter system plugins from list
---
src/plugins.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/plugins.js b/src/plugins.js
index c9a686d8f8..d2a726096b 100644
--- a/src/plugins.js
+++ b/src/plugins.js
@@ -216,6 +216,10 @@ var fs = require('fs'),
return callback(err);
}
+ installedPlugins = installedPlugins.filter(function(plugin) {
+ return plugin && !plugin.system;
+ });
+
async.each(installedPlugins, function(plugin, next) {
// If it errored out because a package.json or plugin.json couldn't be read, no need to do this stuff
if (plugin.error) {
From aab765195996a0a48ae2fb1bc0bdd048f9a38e16 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Thu, 13 Aug 2015 12:47:59 -0400
Subject: [PATCH 061/284] add default plugins
---
src/install.js | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/install.js b/src/install.js
index 48e42d5295..17fd45ef30 100644
--- a/src/install.js
+++ b/src/install.js
@@ -486,6 +486,15 @@ function enableDefaultPlugins(next) {
'nodebb-plugin-soundpack-default',
'nodebb-plugin-emoji-extended'
];
+
+ if (Array.isArray(nconf.get('defaultPlugins'))) {
+ defaultEnabled = defaultEnabled.concat(nconf.get('defaultPlugins'));
+ }
+
+ defaultEnabled = defaultEnabled.filter(function(plugin, index, array) {
+ return array.indexOf(plugin) === -1;
+ });
+
var db = require('./database');
var order = defaultEnabled.map(function(plugin, index) {
return index;
From d986fc7cb6fb7607376c46a5223bb87540d833a9 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Thu, 13 Aug 2015 12:49:15 -0400
Subject: [PATCH 062/284] fix indent
---
src/install.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/install.js b/src/install.js
index 17fd45ef30..b1b9cadb78 100644
--- a/src/install.js
+++ b/src/install.js
@@ -495,7 +495,7 @@ function enableDefaultPlugins(next) {
return array.indexOf(plugin) === -1;
});
- var db = require('./database');
+ var db = require('./database');
var order = defaultEnabled.map(function(plugin, index) {
return index;
});
From dfd840b001dd5bccaddcb112583bd9132f82a2cc Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Thu, 13 Aug 2015 14:23:09 -0400
Subject: [PATCH 063/284] Fix defaultPlugins logic to parse the incoming value
---
src/install.js | 29 ++++++++++++++++++-----------
1 file changed, 18 insertions(+), 11 deletions(-)
diff --git a/src/install.js b/src/install.js
index b1b9cadb78..fb100280c7 100644
--- a/src/install.js
+++ b/src/install.js
@@ -478,17 +478,24 @@ function enableDefaultPlugins(next) {
process.stdout.write('Enabling default plugins\n');
var defaultEnabled = [
- 'nodebb-plugin-composer-default',
- 'nodebb-plugin-markdown',
- 'nodebb-plugin-mentions',
- 'nodebb-widget-essentials',
- 'nodebb-rewards-essentials',
- 'nodebb-plugin-soundpack-default',
- 'nodebb-plugin-emoji-extended'
- ];
-
- if (Array.isArray(nconf.get('defaultPlugins'))) {
- defaultEnabled = defaultEnabled.concat(nconf.get('defaultPlugins'));
+ 'nodebb-plugin-composer-default',
+ 'nodebb-plugin-markdown',
+ 'nodebb-plugin-mentions',
+ 'nodebb-widget-essentials',
+ 'nodebb-rewards-essentials',
+ 'nodebb-plugin-soundpack-default',
+ 'nodebb-plugin-emoji-extended'
+ ],
+ customDefaults = nconf.get('defaultPlugins');
+
+ if (customDefaults && customDefaults.length) {
+ try {
+ customDefaults = JSON.parse(customDefaults);
+ defaultEnabled = defaultEnabled.concat(customDefaults);
+ } catch (e) {
+ // Invalid value received
+ winston.warn('[install/enableDefaultPlugins] Invalid defaultPlugins value received. Ignoring.');
+ }
}
defaultEnabled = defaultEnabled.filter(function(plugin, index, array) {
From 6e630b3cfd08b507da3d532779df09e517a9f5c3 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Thu, 13 Aug 2015 15:30:24 -0400
Subject: [PATCH 064/284] closes #3434, thanks to @psychobunny
---
public/src/modules/translator.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/src/modules/translator.js b/public/src/modules/translator.js
index 8d37c1f004..1b09a14119 100644
--- a/public/src/modules/translator.js
+++ b/public/src/modules/translator.js
@@ -9,7 +9,7 @@
var languages = {},
regexes = {
- match: /\[\[\w+:[\s\S]+?\]\]/g,
+ match: /\[\[\w+:[^\]]+?\]\]/g,
split: /[,][\s]*/,
replace: /\]+$/
};
From 8333a5dcd998a769d01c69ef8511221086eba924 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Thu, 13 Aug 2015 16:03:15 -0400
Subject: [PATCH 065/284] fix filter
---
src/install.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/install.js b/src/install.js
index fb100280c7..caafcbfacc 100644
--- a/src/install.js
+++ b/src/install.js
@@ -499,7 +499,7 @@ function enableDefaultPlugins(next) {
}
defaultEnabled = defaultEnabled.filter(function(plugin, index, array) {
- return array.indexOf(plugin) === -1;
+ return array.indexOf(plugin) === index;
});
var db = require('./database');
From c3304b5cd8c381124a78818fc9b99231f391b1c8 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Fri, 14 Aug 2015 10:32:51 -0400
Subject: [PATCH 066/284] Update dependency minimum versions, and removed ^ for
stability purposes
---
package.json | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/package.json b/package.json
index f655cf9ec6..4f84892919 100644
--- a/package.json
+++ b/package.json
@@ -40,18 +40,18 @@
"mmmagic": "^0.3.13",
"morgan": "^1.3.2",
"nconf": "~0.7.1",
- "nodebb-plugin-composer-default": "^1.0.7",
- "nodebb-plugin-dbsearch": "^0.2.12",
- "nodebb-plugin-emoji-extended": "^0.4.8",
- "nodebb-plugin-markdown": "^4.0.0",
+ "nodebb-plugin-composer-default": "1.0.9",
+ "nodebb-plugin-dbsearch": "0.2.15",
+ "nodebb-plugin-emoji-extended": "0.4.9",
+ "nodebb-plugin-markdown": "4.0.2",
"nodebb-plugin-mentions": "1.0.0",
- "nodebb-plugin-soundpack-default": "^0.1.1",
- "nodebb-plugin-spam-be-gone": "^0.4.0",
- "nodebb-rewards-essentials": "^0.0.1",
- "nodebb-theme-lavender": "^1.0.48",
- "nodebb-theme-persona": "^2.0.1",
- "nodebb-theme-vanilla": "^3.0.1",
- "nodebb-widget-essentials": "^1.0.2",
+ "nodebb-plugin-soundpack-default": "0.1.2",
+ "nodebb-plugin-spam-be-gone": "0.4.1",
+ "nodebb-rewards-essentials": "0.0.2",
+ "nodebb-theme-lavender": "1.0.49",
+ "nodebb-theme-persona": "2.0.7",
+ "nodebb-theme-vanilla": "3.0.1",
+ "nodebb-widget-essentials": "1.0.4",
"npm": "^2.1.4",
"passport": "^0.2.1",
"passport-local": "1.0.0",
From 5e3e1f878145c5749c35ee711166ef1fbd0a207c Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Fri, 14 Aug 2015 15:14:20 -0400
Subject: [PATCH 067/284] #3430
---
public/src/admin/admin.js | 5 ++---
public/src/ajaxify.js | 4 ++--
public/src/app.js | 2 +-
public/src/modules/settings.js | 7 +------
public/src/modules/sounds.js | 8 ++++----
public/src/modules/translator.js | 4 +++-
public/src/variables.js | 8 ++++----
7 files changed, 17 insertions(+), 21 deletions(-)
diff --git a/public/src/admin/admin.js b/public/src/admin/admin.js
index bc6d81d747..22d5319708 100644
--- a/public/src/admin/admin.js
+++ b/public/src/admin/admin.js
@@ -74,7 +74,6 @@
});
Mousetrap.bind('ctrl+shift+a R', function() {
- console.log('[admin] Restarting NodeBB...');
socket.emit('admin.restart');
});
@@ -196,9 +195,9 @@
if (checked) {
checkbox.after('');
- }
+ }
else {
- checkbox.after('');
+ checkbox.after('');
}
checkbox.attr('data-toggle-added', true);
diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js
index 35c692c550..622bc0afde 100644
--- a/public/src/ajaxify.js
+++ b/public/src/ajaxify.js
@@ -253,8 +253,6 @@ $(document).ready(function() {
};
function ajaxifyAnchors() {
- templates.registerLoader(ajaxify.loadTemplate);
-
function hrefEmpty(href) {
return href === undefined || href === '' || href === 'javascript:;';
}
@@ -298,6 +296,8 @@ $(document).ready(function() {
});
}
+ templates.registerLoader(ajaxify.loadTemplate);
+
if (window.history && window.history.pushState) {
// Progressive Enhancement, ajaxify available only to modern browsers
ajaxifyAnchors();
diff --git a/public/src/app.js b/public/src/app.js
index 63e6e2399e..858200e02d 100644
--- a/public/src/app.js
+++ b/public/src/app.js
@@ -92,7 +92,7 @@ app.cacheBuster = null;
switch(url_parts[0]) {
case 'user':
- room = 'user/' + ajaxify.data.theirid;
+ room = 'user/' + ajaxify.data ? ajaxify.data.theirid : 0;
break;
case 'topic':
room = 'topic_' + url_parts[1];
diff --git a/public/src/modules/settings.js b/public/src/modules/settings.js
index d541b35e84..0092f4ca46 100644
--- a/public/src/modules/settings.js
+++ b/public/src/modules/settings.js
@@ -294,7 +294,6 @@ define('settings', function () {
message: "NodeBB failed to save the settings.",
timeout: 5000
});
- console.log('[settings] Unable to set settings for hash: ', hash);
} else {
app.alert({
title: 'Settings Saved',
@@ -387,7 +386,6 @@ define('settings', function () {
hash: hash
}, function (err, values) {
if (err) {
- console.log('[settings] Unable to load settings for hash: ', hash);
if (typeof callback === 'function') {
callback(err);
}
@@ -455,10 +453,9 @@ define('settings', function () {
hash: hash
}, function (err, values) {
if (err) {
- console.log('[settings] Unable to load settings for hash: ', hash);
return callback(err);
}
-
+
// Parse all values. If they are json, return json
for(var key in values) {
if (values.hasOwnProperty(key)) {
@@ -508,8 +505,6 @@ define('settings', function () {
});
}
});
- } else {
- console.log('[settings] Form not found.');
}
}
};
diff --git a/public/src/modules/sounds.js b/public/src/modules/sounds.js
index fa0eade2b5..3314500ce5 100644
--- a/public/src/modules/sounds.js
+++ b/public/src/modules/sounds.js
@@ -1,5 +1,5 @@
"use strict";
-/* global define, socket, config */
+/* global app, define, socket, config */
define('sounds', ['buzz'], function(buzz) {
var Sounds = {};
@@ -17,7 +17,7 @@ define('sounds', ['buzz'], function(buzz) {
function loadFiles() {
socket.emit('modules.sounds.getSounds', function(err, sounds) {
if (err) {
- return console.log('[sounds] Could not initialise!');
+ return app.alertError('[sounds] Could not initialise!');
}
files = sounds;
@@ -27,7 +27,7 @@ define('sounds', ['buzz'], function(buzz) {
function loadMapping() {
socket.emit('modules.sounds.getMapping', function(err, mapping) {
if (err) {
- return console.log('[sounds] Could not load sound mapping!');
+ return app.alertError('[sounds] Could not load sound mapping!');
}
eventSoundMapping = mapping;
});
@@ -65,7 +65,7 @@ define('sounds', ['buzz'], function(buzz) {
if (loadedSounds[fileName]) {
loadedSounds[fileName].play();
} else {
- console.log('[sounds] Not found:', fileName);
+ app.alertError('[sounds] Not found: ' + fileName);
}
}
diff --git a/public/src/modules/translator.js b/public/src/modules/translator.js
index 1b09a14119..46bb79e812 100644
--- a/public/src/modules/translator.js
+++ b/public/src/modules/translator.js
@@ -302,7 +302,9 @@
// Expose a global `translator` object for backwards compatibility
window.translator = {
translate: function() {
- console.warn('[translator] Global invocation of the translator is now deprecated, please `require` the module instead.');
+ if (typeof console !== 'undefined' && console.warn) {
+ console.warn('[translator] Global invocation of the translator is now deprecated, please `require` the module instead.');
+ }
_translator.translate.apply(_translator, arguments);
}
}
diff --git a/public/src/variables.js b/public/src/variables.js
index 16ad223073..c11b2d8c0d 100644
--- a/public/src/variables.js
+++ b/public/src/variables.js
@@ -7,14 +7,14 @@
ajaxify.variables = {};
ajaxify.variables.set = function(key, value) {
- if (console && console.warn) {
- console.warn('[deprecated] variables.set is deprecated, please use ajaxify.data, key=' + key);
- }
+ if (typeof console !== 'undefined' && console.warn) {
+ console.warn('[deprecated] variables.set is deprecated, please use ajaxify.data, key=' + key);
+ }
parsedVariables[key] = value;
};
ajaxify.variables.get = function(key) {
- if (console && console.warn) {
+ if (typeof console !== 'undefined' && console.warn) {
console.warn('[deprecated] variables.get is deprecated, please use ajaxify.data, key=' + key);
}
return parsedVariables[key];
From c70267bd239f426428771833a6fe8fe9bd392b3a Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Fri, 14 Aug 2015 15:15:46 -0400
Subject: [PATCH 068/284] fix indent
---
public/src/variables.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/public/src/variables.js b/public/src/variables.js
index c11b2d8c0d..1a4b4e244c 100644
--- a/public/src/variables.js
+++ b/public/src/variables.js
@@ -8,8 +8,8 @@
ajaxify.variables.set = function(key, value) {
if (typeof console !== 'undefined' && console.warn) {
- console.warn('[deprecated] variables.set is deprecated, please use ajaxify.data, key=' + key);
- }
+ console.warn('[deprecated] variables.set is deprecated, please use ajaxify.data, key=' + key);
+ }
parsedVariables[key] = value;
};
From 08fb30378a2f19a336b640e03ce54469f2113e93 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 17 Aug 2015 11:31:31 -0400
Subject: [PATCH 069/284] Closes #3302
- Fixes issue where the served path for the favicon was incorrect (included relative path when one was not needed)
- Also fixes issue where favicons were just plain not served for subfolder installations
- Fixed unsemantic HTML in ACP/General regarding Site Logo and Favicon fieldsets
---
src/controllers/admin/uploads.js | 2 +-
src/middleware/index.js | 2 +-
src/views/admin/settings/general.tpl | 37 ++++++++++++++++++----------
3 files changed, 26 insertions(+), 15 deletions(-)
diff --git a/src/controllers/admin/uploads.js b/src/controllers/admin/uploads.js
index 88509df0a0..8cdf5f81f3 100644
--- a/src/controllers/admin/uploads.js
+++ b/src/controllers/admin/uploads.js
@@ -38,7 +38,7 @@ uploadsController.uploadFavicon = function(req, res, next) {
return next(err);
}
- res.json([{name: uploadedFile.name, url: nconf.get('relative_path') + image.url}]);
+ res.json([{name: uploadedFile.name, url: image.url}]);
});
}
};
diff --git a/src/middleware/index.js b/src/middleware/index.js
index c7358ca5ac..51f7b10d05 100644
--- a/src/middleware/index.js
+++ b/src/middleware/index.js
@@ -22,7 +22,7 @@ var middleware = {};
function setupFavicon(app) {
var faviconPath = path.join(__dirname, '../../', 'public', meta.config['brand:favicon'] ? meta.config['brand:favicon'] : 'favicon.ico');
if (fs.existsSync(faviconPath)) {
- app.use(favicon(faviconPath));
+ app.use(nconf.get('relative_path'), favicon(faviconPath));
}
}
diff --git a/src/views/admin/settings/general.tpl b/src/views/admin/settings/general.tpl
index ae63b28cbf..9b3c0e73f2 100644
--- a/src/views/admin/settings/general.tpl
+++ b/src/views/admin/settings/general.tpl
@@ -31,25 +31,36 @@
Site Logo
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
+
From fb34df627bca6ba628d4838041c13a3ab3e8af42 Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Mon, 17 Aug 2015 12:19:02 -0400
Subject: [PATCH 073/284] upping themes #3429
---
package.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index ec50021f80..06f5c8cff0 100644
--- a/package.json
+++ b/package.json
@@ -49,8 +49,8 @@
"nodebb-plugin-spam-be-gone": "0.4.1",
"nodebb-rewards-essentials": "0.0.2",
"nodebb-theme-lavender": "1.0.49",
- "nodebb-theme-persona": "2.0.8",
- "nodebb-theme-vanilla": "3.0.2",
+ "nodebb-theme-persona": "2.0.9",
+ "nodebb-theme-vanilla": "3.0.3",
"nodebb-widget-essentials": "1.0.4",
"npm": "^2.1.4",
"passport": "^0.2.1",
From 2da3761c599877485dbf0dca9801207f9b472dd0 Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Mon, 17 Aug 2015 12:23:31 -0400
Subject: [PATCH 074/284] closes #3446
---
package.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index 06f5c8cff0..0971f51208 100644
--- a/package.json
+++ b/package.json
@@ -49,8 +49,8 @@
"nodebb-plugin-spam-be-gone": "0.4.1",
"nodebb-rewards-essentials": "0.0.2",
"nodebb-theme-lavender": "1.0.49",
- "nodebb-theme-persona": "2.0.9",
- "nodebb-theme-vanilla": "3.0.3",
+ "nodebb-theme-persona": "2.0.10",
+ "nodebb-theme-vanilla": "3.0.4",
"nodebb-widget-essentials": "1.0.4",
"npm": "^2.1.4",
"passport": "^0.2.1",
From 5299e1fdc65a486b2c2304a1bd1590acd87bd3bf Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Mon, 17 Aug 2015 12:28:16 -0400
Subject: [PATCH 075/284] closes #3322
---
public/src/app.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/public/src/app.js b/public/src/app.js
index 858200e02d..48bb938610 100644
--- a/public/src/app.js
+++ b/public/src/app.js
@@ -241,7 +241,9 @@ app.cacheBuster = null;
app.processPage = function () {
highlightNavigationLink();
- $('.timeago').timeago();
+ $('.timeago').timeago().each(function() {
+ $(this).attr('title', (new Date($(this).attr('title'))).toString());
+ });
utils.makeNumbersHumanReadable($('.human-readable-number'));
From f9b104192b943c882330afd0a99163baf702e610 Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Mon, 17 Aug 2015 12:29:36 -0400
Subject: [PATCH 076/284] fixing deprecated global translator call
---
public/src/app.js | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/public/src/app.js b/public/src/app.js
index 48bb938610..606277f467 100644
--- a/public/src/app.js
+++ b/public/src/app.js
@@ -469,11 +469,13 @@ app.cacheBuster = null;
return;
}
- translator.translate('[[global:' + status + ']]', function(translated) {
- el.removeClass('online offline dnd away')
- .addClass(status)
- .attr('title', translated)
- .attr('data-original-title', translated);
+ require(['translator'], function(translator) {
+ translator.translate('[[global:' + status + ']]', function(translated) {
+ el.removeClass('online offline dnd away')
+ .addClass(status)
+ .attr('title', translated)
+ .attr('data-original-title', translated);
+ });
});
};
From 64ab43b7fc34e7eb527916fc3579617294f311ba Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 17 Aug 2015 12:08:13 -0400
Subject: [PATCH 077/284] fixed language name for Greek
---
public/language/el/language.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/public/language/el/language.json b/public/language/el/language.json
index 9e32448715..5ed4fbe754 100644
--- a/public/language/el/language.json
+++ b/public/language/el/language.json
@@ -1,5 +1,5 @@
{
- "name": "Ελληνικά (Ελλάδα/Κύπρος)",
+ "name": "Greek",
"code": "el",
"dir": "ltr"
-}
\ No newline at end of file
+}
From 3d9415b65eda1ce3616baf93620aeedff32cc81b Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 17 Aug 2015 12:38:28 -0400
Subject: [PATCH 078/284] Fixes #3442
---
public/src/modules/translator.js | 125 +++++-----
.../vendor/jquery/timeago/jquery.timeago.js | 221 ++++++++++++++++++
.../jquery/timeago/jquery.timeago.min.js | 16 --
.../timeago/locales/jquery.timeago.et.js | 22 +-
.../timeago/locales/jquery.timeago.fa.js | 2 +-
.../timeago/locales/jquery.timeago.he.js | 14 +-
.../timeago/locales/jquery.timeago.ko.js | 21 +-
.../timeago/locales/jquery.timeago.mk.js | 2 +-
.../timeago/locales/jquery.timeago.nl.js | 4 +-
.../timeago/locales/jquery.timeago.ro.js | 4 +-
.../timeago/locales/jquery.timeago.rs.js | 2 +-
.../timeago/locales/jquery.timeago.sl.js | 32 ++-
.../timeago/locales/jquery.timeago.tr.js | 4 +-
.../timeago/locales/jquery.timeago.uz.js | 10 +-
.../timeago/locales/jquery.timeago.zh-CN.js | 24 +-
.../timeago/locales/jquery.timeago.zh-TW.js | 22 +-
src/meta/js.js | 2 +-
17 files changed, 360 insertions(+), 167 deletions(-)
create mode 100644 public/vendor/jquery/timeago/jquery.timeago.js
delete mode 100644 public/vendor/jquery/timeago/jquery.timeago.min.js
diff --git a/public/src/modules/translator.js b/public/src/modules/translator.js
index 46bb79e812..90784747c9 100644
--- a/public/src/modules/translator.js
+++ b/public/src/modules/translator.js
@@ -44,81 +44,72 @@
};
translator.prepareDOM = function() {
- // Load the appropriate timeago locale file
- if (config.userLang !== 'en_GB' && config.userLang !== 'en_US') {
- // Correct NodeBB language codes to timeago codes, if necessary
- var languageCode;
- switch(config.userLang) {
- case 'cs':
- languageCode = 'cz';
- break;
-
- case 'fa_IR':
- languageCode = 'fa';
- break;
-
- case 'pt_BR':
- languageCode = 'pt-br';
- break;
-
- case 'nb':
- languageCode = 'no';
- break;
-
- case 'zh_TW':
- languageCode = 'zh-TW';
- break;
-
- case 'zh_CN':
- languageCode = 'zh-CN';
- break;
-
- default:
- languageCode = config.userLang;
- break;
- }
+ // Load the appropriate timeago locale file, and correct NodeBB language codes to timeago codes, if necessary
+ var languageCode;
+ switch(config.userLang) {
+ case 'cs':
+ languageCode = 'cz';
+ break;
+
+ case 'fa_IR':
+ languageCode = 'fa';
+ break;
+
+ case 'pt_BR':
+ languageCode = 'pt-br';
+ break;
+
+ case 'nb':
+ languageCode = 'no';
+ break;
+
+ case 'zh_TW':
+ languageCode = 'zh-TW';
+ break;
+
+ case 'zh_CN':
+ languageCode = 'zh-CN';
+ break;
+
+ default:
+ languageCode = config.userLang;
+ break;
+ }
+
+ $.getScript(RELATIVE_PATH + '/vendor/jquery/timeago/locales/jquery.timeago.' + languageCode + '.js').success(function() {
+ $('.timeago').timeago();
+ translator.timeagoShort = $.extend({}, jQuery.timeago.settings.strings);
- $.getScript(RELATIVE_PATH + '/vendor/jquery/timeago/locales/jquery.timeago.' + languageCode + '.js').success(function() {
- $('.timeago').timeago();
+ // Retrieve the shorthand timeago values as well
+ $.getScript(RELATIVE_PATH + '/vendor/jquery/timeago/locales/jquery.timeago.' + languageCode + '-short.js').success(function() {
+ // Switch back to long-form
+ translator.toggleTimeagoShorthand();
}).fail(function() {
+ $.getScript(RELATIVE_PATH + '/vendor/jquery/timeago/locales/jquery.timeago.en-short.js').success(function() {
+ // Switch back to long-form
+ translator.toggleTimeagoShorthand();
+ });
+ });
+ }).fail(function() {
+ $.getScript(RELATIVE_PATH + '/vendor/jquery/timeago/locales/jquery.timeago.en-short.js').success(function() {
+ // Switch back to long-form
+ translator.toggleTimeagoShorthand();
$.getScript(RELATIVE_PATH + '/vendor/jquery/timeago/locales/jquery.timeago.en.js');
});
+ });
- // Add directional code if necessary
- translator.translate('[[language:dir]]', function(value) {
- if (value) {
- $('html').css('direction', value).attr('data-dir', value);
- }
- });
- }
+ // Add directional code if necessary
+ translator.translate('[[language:dir]]', function(value) {
+ if (value) {
+ $('html').css('direction', value).attr('data-dir', value);
+ }
+ });
};
translator.toggleTimeagoShorthand = function() {
- if (!translator.timeagoStrings) {
- translator.timeagoStrings = $.extend({}, jQuery.timeago.settings.strings);
- jQuery.timeago.settings.strings = {
- prefixAgo: null,
- prefixFromNow: null,
- suffixAgo: "",
- suffixFromNow: "",
- seconds: "1m",
- minute: "1m",
- minutes: "%dm",
- hour: "1h",
- hours: "%dh",
- day: "1d",
- days: "%dd",
- month: "1mo",
- months: "%dmo",
- year: "1yr",
- years: "%dyr",
- wordSeparator: " ",
- numbers: []
- };
- } else {
- jQuery.timeago.settings.strings = $.extend({}, translator.timeagoStrings);
- delete translator.timeagoStrings;
- }
+ var tmp = $.extend({}, jQuery.timeago.settings.strings);
+ jQuery.timeago.settings.strings = $.extend({}, translator.timeagoShort);
+ translator.timeagoShort = $.extend({}, tmp);
};
translator.translate = function (text, language, callback) {
diff --git a/public/vendor/jquery/timeago/jquery.timeago.js b/public/vendor/jquery/timeago/jquery.timeago.js
new file mode 100644
index 0000000000..15805a6193
--- /dev/null
+++ b/public/vendor/jquery/timeago/jquery.timeago.js
@@ -0,0 +1,221 @@
+/**
+ * Timeago is a jQuery plugin that makes it easy to support automatically
+ * updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago").
+ *
+ * @name timeago
+ * @version 1.4.1
+ * @requires jQuery v1.2.3+
+ * @author Ryan McGeary
+ * @license MIT License - http://www.opensource.org/licenses/mit-license.php
+ *
+ * For usage and examples, visit:
+ * http://timeago.yarp.com/
+ *
+ * Copyright (c) 2008-2015, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org)
+ */
+
+(function (factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module.
+ define(['jquery'], factory);
+ } else {
+ // Browser globals
+ factory(jQuery);
+ }
+}(function ($) {
+ $.timeago = function(timestamp) {
+ if (timestamp instanceof Date) {
+ return inWords(timestamp);
+ } else if (typeof timestamp === "string") {
+ return inWords($.timeago.parse(timestamp));
+ } else if (typeof timestamp === "number") {
+ return inWords(new Date(timestamp));
+ } else {
+ return inWords($.timeago.datetime(timestamp));
+ }
+ };
+ var $t = $.timeago;
+
+ $.extend($.timeago, {
+ settings: {
+ refreshMillis: 60000,
+ allowPast: true,
+ allowFuture: false,
+ localeTitle: false,
+ cutoff: 0,
+ strings: {
+ prefixAgo: null,
+ prefixFromNow: null,
+ suffixAgo: "ago",
+ suffixFromNow: "from now",
+ inPast: 'any moment now',
+ seconds: "less than a minute",
+ minute: "about a minute",
+ minutes: "%d minutes",
+ hour: "about an hour",
+ hours: "about %d hours",
+ day: "a day",
+ days: "%d days",
+ month: "about a month",
+ months: "%d months",
+ year: "about a year",
+ years: "%d years",
+ wordSeparator: " ",
+ numbers: []
+ }
+ },
+
+ inWords: function(distanceMillis) {
+ if(!this.settings.allowPast && ! this.settings.allowFuture) {
+ throw 'timeago allowPast and allowFuture settings can not both be set to false.';
+ }
+
+ var $l = this.settings.strings;
+ var prefix = $l.prefixAgo;
+ var suffix = $l.suffixAgo;
+ if (this.settings.allowFuture) {
+ if (distanceMillis < 0) {
+ prefix = $l.prefixFromNow;
+ suffix = $l.suffixFromNow;
+ }
+ }
+
+ if(!this.settings.allowPast && distanceMillis >= 0) {
+ return this.settings.strings.inPast;
+ }
+
+ var seconds = Math.abs(distanceMillis) / 1000;
+ var minutes = seconds / 60;
+ var hours = minutes / 60;
+ var days = hours / 24;
+ var years = days / 365;
+
+ function substitute(stringOrFunction, number) {
+ var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction;
+ var value = ($l.numbers && $l.numbers[number]) || number;
+ return string.replace(/%d/i, value);
+ }
+
+ var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) ||
+ seconds < 90 && substitute($l.minute, 1) ||
+ minutes < 45 && substitute($l.minutes, Math.round(minutes)) ||
+ minutes < 90 && substitute($l.hour, 1) ||
+ hours < 24 && substitute($l.hours, Math.round(hours)) ||
+ hours < 42 && substitute($l.day, 1) ||
+ days < 30 && substitute($l.days, Math.round(days)) ||
+ days < 45 && substitute($l.month, 1) ||
+ days < 365 && substitute($l.months, Math.round(days / 30)) ||
+ years < 1.5 && substitute($l.year, 1) ||
+ substitute($l.years, Math.round(years));
+
+ var separator = $l.wordSeparator || "";
+ if ($l.wordSeparator === undefined) { separator = " "; }
+ return $.trim([prefix, words, suffix].join(separator));
+ },
+
+ parse: function(iso8601) {
+ var s = $.trim(iso8601);
+ s = s.replace(/\.\d+/,""); // remove milliseconds
+ s = s.replace(/-/,"/").replace(/-/,"/");
+ s = s.replace(/T/," ").replace(/Z/," UTC");
+ s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
+ s = s.replace(/([\+\-]\d\d)$/," $100"); // +09 -> +0900
+ return new Date(s);
+ },
+ datetime: function(elem) {
+ var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title");
+ return $t.parse(iso8601);
+ },
+ isTime: function(elem) {
+ // jQuery's `is()` doesn't play well with HTML5 in IE
+ return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time");
+ }
+ });
+
+ // functions that can be called via $(el).timeago('action')
+ // init is default when no action is given
+ // functions are called with context of a single element
+ var functions = {
+ init: function(){
+ var refresh_el = $.proxy(refresh, this);
+ refresh_el();
+ var $s = $t.settings;
+ if ($s.refreshMillis > 0) {
+ this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis);
+ }
+ },
+ update: function(time){
+ var parsedTime = $t.parse(time);
+ $(this).data('timeago', { datetime: parsedTime });
+ if($t.settings.localeTitle) $(this).attr("title", parsedTime.toLocaleString());
+ refresh.apply(this);
+ },
+ updateFromDOM: function(){
+ $(this).data('timeago', { datetime: $t.parse( $t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title") ) });
+ refresh.apply(this);
+ },
+ dispose: function () {
+ if (this._timeagoInterval) {
+ window.clearInterval(this._timeagoInterval);
+ this._timeagoInterval = null;
+ }
+ }
+ };
+
+ $.fn.timeago = function(action, options) {
+ var fn = action ? functions[action] : functions.init;
+ if(!fn){
+ throw new Error("Unknown function name '"+ action +"' for timeago");
+ }
+ // each over objects here and call the requested function
+ this.each(function(){
+ fn.call(this, options);
+ });
+ return this;
+ };
+
+ function refresh() {
+ //check if it's still visible
+ if(!$.contains(document.documentElement,this)){
+ //stop if it has been removed
+ $(this).timeago("dispose");
+ return this;
+ }
+
+ var data = prepareData(this);
+ var $s = $t.settings;
+
+ if (!isNaN(data.datetime)) {
+ if ( $s.cutoff == 0 || Math.abs(distance(data.datetime)) < $s.cutoff) {
+ $(this).text(inWords(data.datetime));
+ }
+ }
+ return this;
+ }
+
+ function prepareData(element) {
+ element = $(element);
+ if (!element.data("timeago")) {
+ element.data("timeago", { datetime: $t.datetime(element) });
+ var text = $.trim(element.text());
+ if ($t.settings.localeTitle) {
+ element.attr("title", element.data('timeago').datetime.toLocaleString());
+ } else if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) {
+ element.attr("title", text);
+ }
+ }
+ return element.data("timeago");
+ }
+
+ function inWords(date) {
+ return $t.inWords(distance(date));
+ }
+
+ function distance(date) {
+ return (new Date().getTime() - date.getTime());
+ }
+
+ // fix for IE6 suckage
+ document.createElement("abbr");
+ document.createElement("time");
+}));
diff --git a/public/vendor/jquery/timeago/jquery.timeago.min.js b/public/vendor/jquery/timeago/jquery.timeago.min.js
deleted file mode 100644
index a3567b0148..0000000000
--- a/public/vendor/jquery/timeago/jquery.timeago.min.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * Timeago is a jQuery plugin that makes it easy to support automatically
- * updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago").
- *
- * @name timeago
- * @version 1.3.1
- * @requires jQuery v1.2.3+
- * @author Ryan McGeary
- * @license MIT License - http://www.opensource.org/licenses/mit-license.php
- *
- * For usage and examples, visit:
- * http://timeago.yarp.com/
- *
- * Copyright (c) 2008-2013, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org)
- */
-!function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else{factory(jQuery)}}(function($){$.timeago=function(timestamp){if(timestamp instanceof Date){return inWords(timestamp)}else if(typeof timestamp==="string"){return inWords($.timeago.parse(timestamp))}else if(typeof timestamp==="number"){return inWords(new Date(timestamp))}else{return inWords($.timeago.datetime(timestamp))}};var $t=$.timeago;$.extend($.timeago,{settings:{refreshMillis:6e4,allowFuture:false,localeTitle:false,cutoff:0,strings:{prefixAgo:null,prefixFromNow:null,suffixAgo:"ago",suffixFromNow:"from now",seconds:"less than a minute",minute:"about a minute",minutes:"%d minutes",hour:"about an hour",hours:"about %d hours",day:"a day",days:"%d days",month:"about a month",months:"%d months",year:"about a year",years:"%d years",wordSeparator:" ",numbers:[]}},inWords:function(distanceMillis){var $l=this.settings.strings;var prefix=$l.prefixAgo;var suffix=$l.suffixAgo;if(this.settings.allowFuture){if(distanceMillis<0){prefix=$l.prefixFromNow;suffix=$l.suffixFromNow}}var seconds=Math.abs(distanceMillis)/1e3;var minutes=seconds/60;var hours=minutes/60;var days=hours/24;var years=days/365;function substitute(stringOrFunction,number){var string=$.isFunction(stringOrFunction)?stringOrFunction(number,distanceMillis):stringOrFunction;var value=$l.numbers&&$l.numbers[number]||number;return string.replace(/%d/i,value)}var words=seconds<45&&substitute($l.seconds,Math.round(seconds))||seconds<90&&substitute($l.minute,1)||minutes<45&&substitute($l.minutes,Math.round(minutes))||minutes<90&&substitute($l.hour,1)||hours<24&&substitute($l.hours,Math.round(hours))||hours<42&&substitute($l.day,1)||days<30&&substitute($l.days,Math.round(days))||days<45&&substitute($l.month,1)||days<365&&substitute($l.months,Math.round(days/30))||years<1.5&&substitute($l.year,1)||substitute($l.years,Math.round(years));var separator=$l.wordSeparator||"";if($l.wordSeparator===undefined){separator=" "}return $.trim([prefix,words,suffix].join(separator))},parse:function(iso8601){var s=$.trim(iso8601);s=s.replace(/\.\d+/,"");s=s.replace(/-/,"/").replace(/-/,"/");s=s.replace(/T/," ").replace(/Z/," UTC");s=s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2");s=s.replace(/([\+\-]\d\d)$/," $100");return new Date(s)},datetime:function(elem){var iso8601=$t.isTime(elem)?$(elem).attr("datetime"):$(elem).attr("title");return $t.parse(iso8601)},isTime:function(elem){return $(elem).get(0).tagName.toLowerCase()==="time"}});var functions={init:function(){var refresh_el=$.proxy(refresh,this);refresh_el();var $s=$t.settings;if($s.refreshMillis>0){this._timeagoInterval=setInterval(refresh_el,$s.refreshMillis)}},update:function(time){var parsedTime=$t.parse(time);$(this).data("timeago",{datetime:parsedTime});if($t.settings.localeTitle)$(this).attr("title",parsedTime.toLocaleString());refresh.apply(this)},updateFromDOM:function(){$(this).data("timeago",{datetime:$t.parse($t.isTime(this)?$(this).attr("datetime"):$(this).attr("title"))});refresh.apply(this)},dispose:function(){if(this._timeagoInterval){window.clearInterval(this._timeagoInterval);this._timeagoInterval=null}}};$.fn.timeago=function(action,options){var fn=action?functions[action]:functions.init;if(!fn){throw new Error("Unknown function name '"+action+"' for timeago")}this.each(function(){fn.call(this,options)});return this};function refresh(){var data=prepareData(this);var $s=$t.settings;if(!isNaN(data.datetime)){if($s.cutoff==0||distance(data.datetime)<$s.cutoff){$(this).text(inWords(data.datetime))}}return this}function prepareData(element){element=$(element);if(!element.data("timeago")){element.data("timeago",{datetime:$t.datetime(element)});var text=$.trim(element.text());if($t.settings.localeTitle){element.attr("title",element.data("timeago").datetime.toLocaleString())}else if(text.length>0&&!($t.isTime(element)&&element.attr("title"))){element.attr("title",text)}}return element.data("timeago")}function inWords(date){return $t.inWords(distance(date))}function distance(date){return(new Date).getTime()-date.getTime()}document.createElement("abbr");document.createElement("time")});
\ No newline at end of file
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.et.js b/public/vendor/jquery/timeago/locales/jquery.timeago.et.js
index 7d17eb5c61..ca19648b40 100644
--- a/public/vendor/jquery/timeago/locales/jquery.timeago.et.js
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.et.js
@@ -4,15 +4,15 @@ jQuery.timeago.settings.strings = {
prefixFromNow: null,
suffixAgo: "tagasi",
suffixFromNow: "pärast",
- seconds: function(n, d) { return d < 0 ? "vähem kui minuti aja" : "vähem kui minut aega" },
- minute: function(n, d) { return d < 0 ? "umbes minuti aja" : "umbes minut aega" },
- minutes: function(n, d) { return d < 0 ? "%d minuti" : "%d minutit" },
- hour: function(n, d) { return d < 0 ? "umbes tunni aja" : "umbes tund aega" },
- hours: function(n, d) { return d < 0 ? "%d tunni" : "%d tundi" },
- day: function(n, d) { return d < 0 ? "umbes päeva" : "umbes päev" },
- days: function(n, d) { return d < 0 ? "%d päeva" : "%d päeva" },
- month: function(n, d) { return d < 0 ? "umbes kuu aja" : "umbes kuu aega" },
- months: function(n, d) { return d < 0 ? "%d kuu" : "%d kuud" },
- year: function(n, d) { return d < 0 ? "umbes aasta aja" : "umbes aasta aega" },
- years: function(n, d) { return d < 0 ? "%d aasta" : "%d aastat" }
+ seconds: function(n, d) { return d < 0 ? "vähem kui minuti aja" : "vähem kui minut aega"; },
+ minute: function(n, d) { return d < 0 ? "umbes minuti aja" : "umbes minut aega"; },
+ minutes: function(n, d) { return d < 0 ? "%d minuti" : "%d minutit"; },
+ hour: function(n, d) { return d < 0 ? "umbes tunni aja" : "umbes tund aega"; },
+ hours: function(n, d) { return d < 0 ? "%d tunni" : "%d tundi"; },
+ day: function(n, d) { return d < 0 ? "umbes päeva" : "umbes päev"; },
+ days: function(n, d) { return d < 0 ? "%d päeva" : "%d päeva"; },
+ month: function(n, d) { return d < 0 ? "umbes kuu aja" : "umbes kuu aega"; },
+ months: function(n, d) { return d < 0 ? "%d kuu" : "%d kuud"; },
+ year: function(n, d) { return d < 0 ? "umbes aasta aja" : "umbes aasta aega"; },
+ years: function(n, d) { return d < 0 ? "%d aasta" : "%d aastat"; }
};
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.fa.js b/public/vendor/jquery/timeago/locales/jquery.timeago.fa.js
index 2bfbf53ccd..36bdb449f3 100644
--- a/public/vendor/jquery/timeago/locales/jquery.timeago.fa.js
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.fa.js
@@ -1,4 +1,4 @@
-
+
// Persian
// Use DIR attribute for RTL text in Persian Language for ABBR tag .
// By MB.seifollahi@gmail.com
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.he.js b/public/vendor/jquery/timeago/locales/jquery.timeago.he.js
index 9d5b6c6b00..b9d89e1f24 100644
--- a/public/vendor/jquery/timeago/locales/jquery.timeago.he.js
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.he.js
@@ -1,18 +1,16 @@
// Hebrew
jQuery.timeago.settings.strings = {
prefixAgo: "לפני",
- prefixFromNow: "מעכשיו",
- suffixAgo: "",
- suffixFromNow: "",
+ prefixFromNow: "עוד",
seconds: "פחות מדקה",
minute: "דקה",
minutes: "%d דקות",
hour: "שעה",
- hours: "%d שעות",
+ hours: function(number){return (number==2) ? "שעתיים" : "%d שעות";},
day: "יום",
- days: "%d ימים",
+ days: function(number){return (number==2) ? "יומיים" : "%d ימים";},
month: "חודש",
- months: "%d חודשים",
+ months: function(number){return (number==2) ? "חודשיים" : "%d חודשים";},
year: "שנה",
- years: "%d שנים"
-};
\ No newline at end of file
+ years: function(number){return (number==2) ? "שנתיים" : "%d שנים";}
+};
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.ko.js b/public/vendor/jquery/timeago/locales/jquery.timeago.ko.js
index a192b97bf6..95f4f94b31 100644
--- a/public/vendor/jquery/timeago/locales/jquery.timeago.ko.js
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.ko.js
@@ -1,17 +1,20 @@
// Korean
jQuery.timeago.settings.strings = {
+ prefixAgo: null,
+ prefixFromNow: null,
suffixAgo: "전",
suffixFromNow: "후",
- seconds: "1분 이내",
- minute: "1분",
+ seconds: "1분",
+ minute: "약 1분",
minutes: "%d분",
- hour: "1시간",
- hours: "%d시간",
+ hour: "약 1시간",
+ hours: "약 %d시간",
day: "하루",
days: "%d일",
- month: "한 달",
- months: "%d달",
- year: "1년",
+ month: "약 1개월",
+ months: "%d개월",
+ year: "약 1년",
years: "%d년",
- wordSeparator: " "
-};
\ No newline at end of file
+ wordSeparator: " ",
+ numbers: []
+};
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.mk.js b/public/vendor/jquery/timeago/locales/jquery.timeago.mk.js
index 9afdd46268..8d60a30c88 100644
--- a/public/vendor/jquery/timeago/locales/jquery.timeago.mk.js
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.mk.js
@@ -16,5 +16,5 @@
months: "%d месеци",
year: "%d година",
years: "%d години"
- }
+ };
})();
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.nl.js b/public/vendor/jquery/timeago/locales/jquery.timeago.nl.js
index cd68438cca..74d3dc867f 100644
--- a/public/vendor/jquery/timeago/locales/jquery.timeago.nl.js
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.nl.js
@@ -1,9 +1,9 @@
// Dutch
jQuery.timeago.settings.strings = {
prefixAgo: null,
- prefixFromNow: "",
+ prefixFromNow: "over",
suffixAgo: "geleden",
- suffixFromNow: "van nu",
+ suffixFromNow: null,
seconds: "minder dan een minuut",
minute: "ongeveer een minuut",
minutes: "%d minuten",
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.ro.js b/public/vendor/jquery/timeago/locales/jquery.timeago.ro.js
index 883b548950..2cee429902 100644
--- a/public/vendor/jquery/timeago/locales/jquery.timeago.ro.js
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.ro.js
@@ -1,5 +1,5 @@
// Romanian
-$.timeago.settings.strings = {
+jQuery.timeago.settings.strings = {
prefixAgo: "acum",
prefixFromNow: "in timp de",
suffixAgo: "",
@@ -15,4 +15,4 @@ $.timeago.settings.strings = {
months: "%d luni",
year: "un an",
years: "%d ani"
-};
\ No newline at end of file
+};
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.rs.js b/public/vendor/jquery/timeago/locales/jquery.timeago.rs.js
index 1fc16135e6..0809c9101d 100644
--- a/public/vendor/jquery/timeago/locales/jquery.timeago.rs.js
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.rs.js
@@ -39,7 +39,7 @@
months: function (value) {
return numpf(value, "%d mesec", "%d meseca", "%d meseci");
},
- year: "pre godinu dana",
+ year: "godinu dana",
years: function (value) {
return numpf(value, "%d godinu", "%d godine", "%d godina");
},
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.sl.js b/public/vendor/jquery/timeago/locales/jquery.timeago.sl.js
index e546c0d502..57d4f6020c 100644
--- a/public/vendor/jquery/timeago/locales/jquery.timeago.sl.js
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.sl.js
@@ -1,42 +1,38 @@
// Slovenian with support for dual
(function () {
var numpf;
- numpf = function (n, d, m) {
- if (n == 2) {
- return d;
- } else {
- return m;
- }
+ numpf = function (n, a) {
+ return a[n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0];
};
jQuery.timeago.settings.strings = {
- prefixAgo: "pred",
+ prefixAgo: null,
prefixFromNow: "čez",
- suffixAgo: null,
+ suffixAgo: "nazaj",
suffixFromNow: null,
second: "sekundo",
seconds: function (value) {
- return numpf(value, "%d sekundama", "%d sekundami");
+ return numpf(value, ["%d sekund", "%d sekundo", "%d sekundi", "%d sekunde"]);
},
minute: "minuto",
minutes: function (value) {
- return numpf(value, "%d minutama", "%d minutami");
+ return numpf(value, ["%d minut", "%d minuto", "%d minuti", "%d minute"]);
},
- hour: "uro",
+ hour: "eno uro",
hours: function (value) {
- return numpf(value, "%d urama", "%d urami");
+ return numpf(value, ["%d ur", "%d uro", "%d uri", "%d ure"]);
},
- day: "dnevom",
+ day: "en dan",
days: function (value) {
- return numpf(value, "%d dnevi", "%d dnevi");
+ return numpf(value, ["%d dni", "%d dan", "%d dneva", "%d dni"]);
},
- month: "enim mescem",
+ month: "en mesec",
months: function (value) {
- return numpf(value, "%d mesecema", "%d meseci");
+ return numpf(value, ["%d mescov", "%d mesec", "%d mesca", "%d mesce"]);
},
- year: "enim letom",
+ year: "eno leto",
years: function (value) {
- return numpf(value, "%d letoma", "%d leti");
+ return numpf(value, ["%d let", "%d leto", "%d leti", "%d leta"]);
},
wordSeparator: " "
};
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.tr.js b/public/vendor/jquery/timeago/locales/jquery.timeago.tr.js
index f3e3a67c84..160190d026 100644
--- a/public/vendor/jquery/timeago/locales/jquery.timeago.tr.js
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.tr.js
@@ -1,5 +1,5 @@
// Turkish
-jQuery.extend($.timeago.settings.strings, {
+jQuery.timeago.settings.strings = {
suffixAgo: 'önce',
suffixFromNow: null,
seconds: '1 dakikadan',
@@ -13,4 +13,4 @@ jQuery.extend($.timeago.settings.strings, {
months: '%d ay',
year: '1 yıl',
years: '%d yıl'
-});
\ No newline at end of file
+};
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.uz.js b/public/vendor/jquery/timeago/locales/jquery.timeago.uz.js
index 380f18dc04..d6a0a7fd20 100755
--- a/public/vendor/jquery/timeago/locales/jquery.timeago.uz.js
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.uz.js
@@ -6,14 +6,14 @@ jQuery.timeago.settings.strings = {
suffixFromNow: null,
seconds: "bir necha soniya",
minute: "1 daqiqa",
- minutes: function(value) { return "%d daqiqa" },
+ minutes: function(value) { return "%d daqiqa"; },
hour: "1 soat",
- hours: function(value) { return "%d soat" },
+ hours: function(value) { return "%d soat"; },
day: "1 kun",
- days: function(value) { return "%d kun" },
+ days: function(value) { return "%d kun"; },
month: "1 oy",
- months: function(value) { return "%d oy" },
+ months: function(value) { return "%d oy"; },
year: "1 yil",
- years: function(value) { return "%d yil" },
+ years: function(value) { return "%d yil"; },
wordSeparator: " "
};
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.zh-CN.js b/public/vendor/jquery/timeago/locales/jquery.timeago.zh-CN.js
index f39417ef29..f7b979798a 100644
--- a/public/vendor/jquery/timeago/locales/jquery.timeago.zh-CN.js
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.zh-CN.js
@@ -4,17 +4,17 @@ jQuery.timeago.settings.strings = {
prefixFromNow: "从现在开始",
suffixAgo: "之前",
suffixFromNow: null,
- seconds: "不到 1 分钟",
- minute: "大约 1 分钟",
- minutes: "%d 分钟",
- hour: "大约 1 小时",
- hours: "大约 %d 小时",
- day: "1 天",
- days: "%d 天",
- month: "大约 1 个月",
- months: "%d 月",
- year: "大约 1 年",
- years: "%d 年",
+ seconds: "不到1分钟",
+ minute: "大约1分钟",
+ minutes: "%d分钟",
+ hour: "大约1小时",
+ hours: "大约%d小时",
+ day: "1天",
+ days: "%d天",
+ month: "大约1个月",
+ months: "%d月",
+ year: "大约1年",
+ years: "%d年",
numbers: [],
wordSeparator: ""
-};
\ No newline at end of file
+};
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.zh-TW.js b/public/vendor/jquery/timeago/locales/jquery.timeago.zh-TW.js
index c6f8a1b1e6..52633900f3 100644
--- a/public/vendor/jquery/timeago/locales/jquery.timeago.zh-TW.js
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.zh-TW.js
@@ -4,17 +4,17 @@ jQuery.timeago.settings.strings = {
prefixFromNow: "從現在開始",
suffixAgo: "之前",
suffixFromNow: null,
- seconds: "不到 1 分鐘",
- minute: "大約 1 分鐘",
- minutes: "%d 分鐘",
- hour: "大約 1 小時",
- hours: "%d 小時",
- day: "大約 1 天",
- days: "%d 天",
- month: "大約 1 個月",
- months: "%d 個月",
- year: "大約 1 年",
- years: "%d 年",
+ seconds: "不到1分鐘",
+ minute: "大約1分鐘",
+ minutes: "%d分鐘",
+ hour: "大約1小時",
+ hours: "%d小時",
+ day: "大約1天",
+ days: "%d天",
+ month: "大約1個月",
+ months: "%d個月",
+ year: "大約1年",
+ years: "%d年",
numbers: [],
wordSeparator: ""
};
diff --git a/src/meta/js.js b/src/meta/js.js
index 020611e7ce..a022497136 100644
--- a/src/meta/js.js
+++ b/src/meta/js.js
@@ -23,7 +23,7 @@ module.exports = function(Meta) {
base: [
'public/vendor/jquery/js/jquery.js',
'./node_modules/socket.io-client/socket.io.js',
- 'public/vendor/jquery/timeago/jquery.timeago.min.js',
+ 'public/vendor/jquery/timeago/jquery.timeago.js',
'public/vendor/jquery/js/jquery.form.min.js',
'public/vendor/visibility/visibility.min.js',
'public/vendor/bootstrap/js/bootstrap.min.js',
From 6db33f5641f3f305984e1508f0bba3dbeb201d54 Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Mon, 17 Aug 2015 12:51:54 -0400
Subject: [PATCH 079/284] unused vars
---
minifier.js | 2 --
1 file changed, 2 deletions(-)
diff --git a/minifier.js b/minifier.js
index bca79e68f1..3ca6155ee3 100644
--- a/minifier.js
+++ b/minifier.js
@@ -4,9 +4,7 @@ var uglifyjs = require('uglify-js'),
less = require('less'),
async = require('async'),
fs = require('fs'),
- path = require('path'),
crypto = require('crypto'),
- utils = require('./public/src/utils'),
Minifier = {
js: {}
From f4dd0c14aeebd70cf33f55c663ded67bad5383ac Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Mon, 17 Aug 2015 13:19:20 -0400
Subject: [PATCH 080/284] update title for new posts as well
---
public/src/client/topic/posts.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/public/src/client/topic/posts.js b/public/src/client/topic/posts.js
index 6532ae648c..4ad5d3ad60 100644
--- a/public/src/client/topic/posts.js
+++ b/public/src/client/topic/posts.js
@@ -255,7 +255,9 @@ define('forum/topic/posts', [
app.replaceSelfLinks(posts.find('a'));
utils.addCommasToNumbers(posts.find('.formatted-number'));
utils.makeNumbersHumanReadable(posts.find('.human-readable-number'));
- posts.find('.timeago').timeago();
+ posts.find('.timeago').timeago().each(function() {
+ $(this).attr('title', (new Date($(this).attr('title'))).toString());
+ });
posts.find('[component="post/content"] img:not(.emoji)').each(function() {
var $this = $(this);
if (!$this.parent().is('a')) {
From 275769a8017db98c1d032b53717542f571b7163a Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Mon, 17 Aug 2015 14:53:37 -0400
Subject: [PATCH 081/284] closes #3435
---
app.js | 1 +
src/middleware/index.js | 4 ++++
2 files changed, 5 insertions(+)
diff --git a/app.js b/app.js
index 81fa124f88..ca272c66ec 100644
--- a/app.js
+++ b/app.js
@@ -118,6 +118,7 @@ function start() {
var urlObject = url.parse(nconf.get('url'));
var relativePath = urlObject.pathname !== '/' ? urlObject.pathname : '';
nconf.set('base_url', urlObject.protocol + '//' + urlObject.host);
+ nconf.set('secure', urlObject.protocol === 'https');
nconf.set('use_port', !!urlObject.port);
nconf.set('relative_path', relativePath);
nconf.set('port', urlObject.port || nconf.get('port') || nconf.get('PORT') || 4567);
diff --git a/src/middleware/index.js b/src/middleware/index.js
index 51f7b10d05..fedb8b55cb 100644
--- a/src/middleware/index.js
+++ b/src/middleware/index.js
@@ -57,6 +57,10 @@ module.exports = function(app) {
cookie.domain = meta.config.cookieDomain;
}
+ if (nconf.get('secure')) {
+ cookie.secure = true;
+ }
+
app.use(session({
store: db.sessionStore,
secret: nconf.get('secret'),
From c919a2817a5190fb517401e059f6f1cd62fc5359 Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Mon, 17 Aug 2015 15:18:07 -0400
Subject: [PATCH 082/284] tjs 0.2.28
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 0971f51208..0bb5a2f2d8 100644
--- a/package.json
+++ b/package.json
@@ -67,7 +67,7 @@
"socket.io-redis": "^0.1.3",
"socketio-wildcard": "~0.1.1",
"string": "^3.0.0",
- "templates.js": "^0.2.6",
+ "templates.js": "0.2.8",
"touch": "0.0.3",
"uglify-js": "^2.4.23",
"underscore": "~1.8.3",
From a9035f166b0f2972c4abcc76d2cdf6f9997e30b0 Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Mon, 17 Aug 2015 15:28:04 -0400
Subject: [PATCH 083/284] fix endsWith error
---
minifier.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/minifier.js b/minifier.js
index 3ca6155ee3..7289843b2f 100644
--- a/minifier.js
+++ b/minifier.js
@@ -5,7 +5,8 @@ var uglifyjs = require('uglify-js'),
async = require('async'),
fs = require('fs'),
crypto = require('crypto'),
-
+ utils = require('./public/src/utils'),
+
Minifier = {
js: {}
};
From 0150e0e063d21562d3a2bdb78daf5884375402dc Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Mon, 17 Aug 2015 15:55:09 -0400
Subject: [PATCH 084/284] closes #3069
---
public/language/en_GB/user.json | 4 +-
src/controllers/accounts.js | 76 +++++++++++++++++++++++++++++++++
src/middleware/middleware.js | 5 +++
src/user/settings.js | 2 +
4 files changed, 86 insertions(+), 1 deletion(-)
diff --git a/public/language/en_GB/user.json b/public/language/en_GB/user.json
index 50d5dbf6c0..b11db877cb 100644
--- a/public/language/en_GB/user.json
+++ b/public/language/en_GB/user.json
@@ -97,5 +97,7 @@
"follow_topics_you_create": "Follow topics you create",
"grouptitle": "Select the group title you would like to display",
- "no-group-title": "No group title"
+ "no-group-title": "No group title",
+
+ "select-skin": "Select a Skin"
}
diff --git a/src/controllers/accounts.js b/src/controllers/accounts.js
index 1049f06269..fc49f31e1b 100644
--- a/src/controllers/accounts.js
+++ b/src/controllers/accounts.js
@@ -424,6 +424,82 @@ accountsController.accountSettings = function(req, res, next) {
{value: 'month', name: '[[user:digest_monthly]]', selected: 'month' === userData.settings.dailyDigestFreq}
];
+
+ userData.bootswatchSkinOptions = [
+ {
+ "name": "Default",
+ "value": "default"
+ },
+ {
+ "name": "Cerulean",
+ "value": "cerulean"
+ },
+ {
+ "name": "Cosmo",
+ "value": "cosmo"
+ },
+ {
+ "name": "Cyborg",
+ "value": "cyborg"
+ },
+ {
+ "name": "Darkly",
+ "value": "darkly"
+ },
+ {
+ "name": "Flatly",
+ "value": "flatly"
+ },
+ {
+ "name": "Journal",
+ "value": "journal"
+ },
+ {
+ "name": "Lumen",
+ "value": "lumen"
+ },
+ {
+ "name": "Paper",
+ "value": "paper"
+ },
+ {
+ "name": "Readable",
+ "value": "readable"
+ },
+ {
+ "name": "Sandstone",
+ "value": "sandstone"
+ },
+ {
+ "name": "Simplex",
+ "value": "simplex"
+ },
+ {
+ "name": "Slate",
+ "value": "slate"
+ },
+ {
+ "name": "Spacelab",
+ "value": "spacelab"
+ },
+ {
+ "name": "Superhero",
+ "value": "superhero"
+ },
+ {
+ "name": "United",
+ "value": "united"
+ },
+ {
+ "name": "Yeti",
+ "value": "yeti"
+ }
+ ];
+
+ userData.bootswatchSkinOptions.forEach(function(skin) {
+ skin.selected = skin.value === userData.settings.bootswatchSkin;
+ });
+
userData.userGroups.forEach(function(group) {
group.selected = group.name === userData.settings.groupTitle;
});
diff --git a/src/middleware/middleware.js b/src/middleware/middleware.js
index 930431f3c2..6bab0678e6 100644
--- a/src/middleware/middleware.js
+++ b/src/middleware/middleware.js
@@ -243,6 +243,11 @@ middleware.renderHeader = function(req, res, callback) {
if (err) {
return next(err);
}
+
+ if (settings.bootswatchSkin && settings.bootswatchSkin !== 'default') {
+ templateValues.bootswatchCSS = '//maxcdn.bootstrapcdn.com/bootswatch/latest/' + settings.bootswatchSkin + '/bootstrap.min.css';
+ }
+
meta.title.build(req.url.slice(1), settings.userLang, next);
});
} else {
diff --git a/src/user/settings.js b/src/user/settings.js
index ec493457aa..5af9f567c1 100644
--- a/src/user/settings.js
+++ b/src/user/settings.js
@@ -75,6 +75,7 @@ module.exports = function(User) {
settings.sendPostNotifications = parseInt(settings.sendPostNotifications, 10) === 1;
settings.restrictChat = parseInt(settings.restrictChat, 10) === 1;
settings.topicSearchEnabled = parseInt(settings.topicSearchEnabled, 10) === 1;
+ settings.bootswatchSkin = settings.bootswatchSkin || 'default';
callback(null, settings);
});
@@ -107,6 +108,7 @@ module.exports = function(User) {
sendPostNotifications: data.sendPostNotifications,
restrictChat: data.restrictChat,
topicSearchEnabled: data.topicSearchEnabled,
+ bootswatchSkin: data.bootswatchSkin,
groupTitle: data.groupTitle
}, next);
},
From 9f97e8fa0c806976550853c5743471592b0ea8ad Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Mon, 17 Aug 2015 15:57:04 -0400
Subject: [PATCH 085/284] #3069
---
package.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index 0bb5a2f2d8..663cfe2999 100644
--- a/package.json
+++ b/package.json
@@ -49,8 +49,8 @@
"nodebb-plugin-spam-be-gone": "0.4.1",
"nodebb-rewards-essentials": "0.0.2",
"nodebb-theme-lavender": "1.0.49",
- "nodebb-theme-persona": "2.0.10",
- "nodebb-theme-vanilla": "3.0.4",
+ "nodebb-theme-persona": "2.0.11",
+ "nodebb-theme-vanilla": "3.0.5",
"nodebb-widget-essentials": "1.0.4",
"npm": "^2.1.4",
"passport": "^0.2.1",
From 5b1571ad1ecf5bd4f2e4020fe917b04070ba9d5b Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Mon, 17 Aug 2015 16:11:26 -0400
Subject: [PATCH 086/284] don't need to refresh to preview updated skin #3069
---
public/src/client/account/settings.js | 7 +++++++
src/controllers/api.js | 1 +
2 files changed, 8 insertions(+)
diff --git a/public/src/client/account/settings.js b/public/src/client/account/settings.js
index 434072a0b0..23afc2f5c0 100644
--- a/public/src/client/account/settings.js
+++ b/public/src/client/account/settings.js
@@ -61,6 +61,13 @@ define('forum/account/settings', ['forum/account/header'], function(header) {
return false;
});
+
+ $('#bootswatchSkin').on('change', function() {
+ var css = $('#bootswatchCSS'),
+ val = $(this).val() === 'default' ? config['theme:src'] : 'http://maxcdn.bootstrapcdn.com/bootswatch/latest/' + $(this).val() + '/bootstrap.min.css';
+
+ css.attr('href', val);
+ });
};
return AccountSettings;
diff --git a/src/controllers/api.js b/src/controllers/api.js
index c09a96490d..cc51bfce52 100644
--- a/src/controllers/api.js
+++ b/src/controllers/api.js
@@ -63,6 +63,7 @@ apiController.getConfig = function(req, res, next) {
config.postsPerPage = meta.config.postsPerPage || 20;
config.maximumFileSize = meta.config.maximumFileSize;
config['theme:id'] = meta.config['theme:id'];
+ config['theme:src'] = meta.config['theme:src'];
config.defaultLang = meta.config.defaultLang || 'en_GB';
config.userLang = req.query.lang || config.defaultLang;
config.environment = process.env.NODE_ENV;
From 370a7ae2fbc82a86d743562a5eac8f77a76e15aa Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Mon, 17 Aug 2015 16:15:36 -0400
Subject: [PATCH 087/284] instant update for skin preview -- themes
---
package.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index 663cfe2999..81b69798ce 100644
--- a/package.json
+++ b/package.json
@@ -49,8 +49,8 @@
"nodebb-plugin-spam-be-gone": "0.4.1",
"nodebb-rewards-essentials": "0.0.2",
"nodebb-theme-lavender": "1.0.49",
- "nodebb-theme-persona": "2.0.11",
- "nodebb-theme-vanilla": "3.0.5",
+ "nodebb-theme-persona": "2.0.12",
+ "nodebb-theme-vanilla": "3.0.6",
"nodebb-widget-essentials": "1.0.4",
"npm": "^2.1.4",
"passport": "^0.2.1",
From 3d962822c68c7fe4d757afb25217059d500335ce Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Mon, 17 Aug 2015 16:26:35 -0400
Subject: [PATCH 088/284] #3322 properly, @barisusakli so no need to copy pasta
everywhere timeago is used
---
public/src/app.js | 6 +++---
public/src/client/topic/posts.js | 4 +---
public/src/utils.js | 9 +++++++++
3 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/public/src/app.js b/public/src/app.js
index 606277f467..5bcbb8201d 100644
--- a/public/src/app.js
+++ b/public/src/app.js
@@ -241,9 +241,9 @@ app.cacheBuster = null;
app.processPage = function () {
highlightNavigationLink();
- $('.timeago').timeago().each(function() {
- $(this).attr('title', (new Date($(this).attr('title'))).toString());
- });
+ utils.overrideTimeago();
+
+ $('.timeago').timeago();
utils.makeNumbersHumanReadable($('.human-readable-number'));
diff --git a/public/src/client/topic/posts.js b/public/src/client/topic/posts.js
index 4ad5d3ad60..6532ae648c 100644
--- a/public/src/client/topic/posts.js
+++ b/public/src/client/topic/posts.js
@@ -255,9 +255,7 @@ define('forum/topic/posts', [
app.replaceSelfLinks(posts.find('a'));
utils.addCommasToNumbers(posts.find('.formatted-number'));
utils.makeNumbersHumanReadable(posts.find('.human-readable-number'));
- posts.find('.timeago').timeago().each(function() {
- $(this).attr('title', (new Date($(this).attr('title'))).toString());
- });
+ posts.find('.timeago').timeago();
posts.find('[component="post/content"] img:not(.emoji)').each(function() {
var $this = $(this);
if (!$this.parent().is('a')) {
diff --git a/public/src/utils.js b/public/src/utils.js
index 930e03501f..66ee10f6cf 100644
--- a/public/src/utils.js
+++ b/public/src/utils.js
@@ -203,6 +203,15 @@
return text.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
},
+ overrideTimeago: function() {
+ var timeagoFn = $.fn.timeago;
+ $.fn.timeago = function() {
+ timeagoFn.apply(this, arguments).each(function() {
+ $(this).attr('title', (new Date($(this).attr('title'))).toString());
+ });
+ };
+ },
+
toISOString: function(timestamp) {
if (!timestamp || !Date.prototype.toISOString) {
return '';
From fe5f1b8c1d0d7c912091156e04214790a393e353 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Mon, 17 Aug 2015 16:38:05 -0400
Subject: [PATCH 089/284] moved recent popular
---
src/controllers/categories.js | 58 -----------------------------------
src/controllers/index.js | 2 ++
src/controllers/popular.js | 51 ++++++++++++++++++++++++++++++
src/controllers/recent.js | 34 ++++++++++++++++++++
src/controllers/unread.js | 3 +-
src/routes/index.js | 6 ++--
6 files changed, 91 insertions(+), 63 deletions(-)
create mode 100644 src/controllers/popular.js
create mode 100644 src/controllers/recent.js
diff --git a/src/controllers/categories.js b/src/controllers/categories.js
index 34e1bc1f0b..bbffcf1a86 100644
--- a/src/controllers/categories.js
+++ b/src/controllers/categories.js
@@ -9,70 +9,12 @@ var categoriesController = {},
privileges = require('../privileges'),
user = require('../user'),
categories = require('../categories'),
- topics = require('../topics'),
meta = require('../meta'),
plugins = require('../plugins'),
pagination = require('../pagination'),
helpers = require('./helpers'),
utils = require('../../public/src/utils');
-categoriesController.recent = function(req, res, next) {
- var stop = (parseInt(meta.config.topicsPerList, 10) || 20) - 1;
- topics.getTopicsFromSet('topics:recent', req.uid, 0, stop, function(err, data) {
- if (err) {
- return next(err);
- }
-
- data['feeds:disableRSS'] = parseInt(meta.config['feeds:disableRSS'], 10) === 1;
- data.rssFeedUrl = nconf.get('relative_path') + '/recent.rss';
- data.breadcrumbs = helpers.buildBreadcrumbs([{text: '[[recent:title]]'}]);
-
- plugins.fireHook('filter:recent.build', {req: req, res: res, templateData: data}, function(err, data) {
- if (err) {
- return next(err);
- }
- res.render('recent', data.templateData);
- });
- });
-};
-
-var anonCache = {}, lastUpdateTime = 0;
-
-categoriesController.popular = function(req, res, next) {
- var terms = {
- daily: 'day',
- weekly: 'week',
- monthly: 'month',
- alltime: 'alltime'
- };
- var term = terms[req.params.term] || 'day';
-
- if (!req.uid) {
- if (anonCache[term] && (Date.now() - lastUpdateTime) < 60 * 60 * 1000) {
- return res.render('popular', anonCache[term]);
- }
- }
-
- topics.getPopular(term, req.uid, meta.config.topicsPerList, function(err, topics) {
- if (err) {
- return next(err);
- }
-
- var data = {
- topics: topics,
- 'feeds:disableRSS': parseInt(meta.config['feeds:disableRSS'], 10) === 1,
- rssFeedUrl: nconf.get('relative_path') + '/popular/' + (req.params.term || 'daily') + '.rss',
- breadcrumbs: helpers.buildBreadcrumbs([{text: '[[global:header.popular]]'}])
- };
-
- if (!req.uid) {
- anonCache[term] = data;
- lastUpdateTime = Date.now();
- }
-
- res.render('popular', data);
- });
-};
categoriesController.list = function(req, res, next) {
async.parallel({
diff --git a/src/controllers/index.js b/src/controllers/index.js
index f08d696765..70854a548a 100644
--- a/src/controllers/index.js
+++ b/src/controllers/index.js
@@ -19,6 +19,8 @@ var Controllers = {
topics: require('./topics'),
categories: require('./categories'),
unread: require('./unread'),
+ recent: require('./recent'),
+ popular: require('./popular'),
tags: require('./tags'),
search: require('./search'),
users: require('./users'),
diff --git a/src/controllers/popular.js b/src/controllers/popular.js
new file mode 100644
index 0000000000..6f1b025bc1
--- /dev/null
+++ b/src/controllers/popular.js
@@ -0,0 +1,51 @@
+
+'use strict';
+
+var nconf = require('nconf'),
+ topics = require('../topics'),
+ meta = require('../meta'),
+ helpers = require('./helpers');
+
+var popularController = {};
+
+var anonCache = {}, lastUpdateTime = 0;
+
+var terms = {
+ daily: 'day',
+ weekly: 'week',
+ monthly: 'month',
+ alltime: 'alltime'
+};
+
+popularController.get = function(req, res, next) {
+
+ var term = terms[req.params.term] || 'day';
+
+ if (!req.uid) {
+ if (anonCache[term] && (Date.now() - lastUpdateTime) < 60 * 60 * 1000) {
+ return res.render('popular', anonCache[term]);
+ }
+ }
+
+ topics.getPopular(term, req.uid, meta.config.topicsPerList, function(err, topics) {
+ if (err) {
+ return next(err);
+ }
+
+ var data = {
+ topics: topics,
+ 'feeds:disableRSS': parseInt(meta.config['feeds:disableRSS'], 10) === 1,
+ rssFeedUrl: nconf.get('relative_path') + '/popular/' + (req.params.term || 'daily') + '.rss',
+ breadcrumbs: helpers.buildBreadcrumbs([{text: '[[global:header.popular]]'}])
+ };
+
+ if (!req.uid) {
+ anonCache[term] = data;
+ lastUpdateTime = Date.now();
+ }
+
+ res.render('popular', data);
+ });
+};
+
+module.exports = popularController;
\ No newline at end of file
diff --git a/src/controllers/recent.js b/src/controllers/recent.js
new file mode 100644
index 0000000000..99b65bab88
--- /dev/null
+++ b/src/controllers/recent.js
@@ -0,0 +1,34 @@
+
+'use strict';
+
+var nconf = require('nconf'),
+ topics = require('../topics'),
+ meta = require('../meta'),
+ helpers = require('./helpers'),
+ plugins = require('../plugins');
+
+var recentController = {};
+
+recentController.get = function(req, res, next) {
+
+ var stop = (parseInt(meta.config.topicsPerList, 10) || 20) - 1;
+
+ topics.getTopicsFromSet('topics:recent', req.uid, 0, stop, function(err, data) {
+ if (err) {
+ return next(err);
+ }
+
+ data['feeds:disableRSS'] = parseInt(meta.config['feeds:disableRSS'], 10) === 1;
+ data.rssFeedUrl = nconf.get('relative_path') + '/recent.rss';
+ data.breadcrumbs = helpers.buildBreadcrumbs([{text: '[[recent:title]]'}]);
+
+ plugins.fireHook('filter:recent.build', {req: req, res: res, templateData: data}, function(err, data) {
+ if (err) {
+ return next(err);
+ }
+ res.render('recent', data.templateData);
+ });
+ });
+};
+
+module.exports = recentController;
\ No newline at end of file
diff --git a/src/controllers/unread.js b/src/controllers/unread.js
index 02f0b0cc1f..edf663ce8d 100644
--- a/src/controllers/unread.js
+++ b/src/controllers/unread.js
@@ -12,8 +12,7 @@ var async = require('async'),
var unreadController = {};
-
-unreadController.unread = function(req, res, next) {
+unreadController.get = function(req, res, next) {
var stop = (parseInt(meta.config.topicsPerList, 10) || 20) - 1;
var results;
var cid = req.query.cid;
diff --git a/src/routes/index.js b/src/routes/index.js
index 4935edc372..a70bcec510 100644
--- a/src/routes/index.js
+++ b/src/routes/index.js
@@ -47,9 +47,9 @@ function tagRoutes(app, middleware, controllers) {
function categoryRoutes(app, middleware, controllers) {
setupPageRoute(app, '/categories', middleware, [], controllers.categories.list);
- setupPageRoute(app, '/popular/:term?', middleware, [], controllers.categories.popular);
- setupPageRoute(app, '/recent', middleware, [], controllers.categories.recent);
- setupPageRoute(app, '/unread', middleware, [middleware.authenticate], controllers.unread.unread);
+ setupPageRoute(app, '/popular/:term?', middleware, [], controllers.popular.get);
+ setupPageRoute(app, '/recent', middleware, [], controllers.recent.get);
+ setupPageRoute(app, '/unread', middleware, [middleware.authenticate], controllers.unread.get);
setupPageRoute(app, '/category/:category_id/:slug/:topic_index', middleware, [], controllers.categories.get);
setupPageRoute(app, '/category/:category_id/:slug?', middleware, [], controllers.categories.get);
From 0f41654fde7087f5d6369bfa3be1a78dd2a072e6 Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Mon, 17 Aug 2015 16:53:31 -0400
Subject: [PATCH 090/284] latest rewards-essentials
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 81b69798ce..aa2b796071 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,7 @@
"nodebb-plugin-mentions": "1.0.0",
"nodebb-plugin-soundpack-default": "0.1.2",
"nodebb-plugin-spam-be-gone": "0.4.1",
- "nodebb-rewards-essentials": "0.0.2",
+ "nodebb-rewards-essentials": "0.0.3",
"nodebb-theme-lavender": "1.0.49",
"nodebb-theme-persona": "2.0.12",
"nodebb-theme-vanilla": "3.0.6",
From 5007c3a32c1cabd8e721d4b06fd38d884aebe391 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 17 Aug 2015 17:07:39 -0400
Subject: [PATCH 091/284] latest translations
---
public/language/ar/category.json | 3 +
public/language/ar/groups.json | 5 +-
public/language/bg/category.json | 3 +
public/language/bg/error.json | 4 +-
public/language/bg/groups.json | 5 +-
public/language/bn/category.json | 3 +
public/language/bn/groups.json | 3 +-
public/language/cs/category.json | 3 +
public/language/cs/groups.json | 3 +-
public/language/da/category.json | 3 +
public/language/da/groups.json | 5 +-
public/language/de/category.json | 3 +
public/language/de/groups.json | 3 +-
public/language/el/category.json | 3 +
public/language/el/groups.json | 3 +-
public/language/en@pirate/category.json | 3 +
public/language/en@pirate/groups.json | 3 +-
public/language/en_US/category.json | 3 +
public/language/en_US/groups.json | 3 +-
public/language/es/category.json | 3 +
public/language/es/error.json | 4 +-
public/language/es/groups.json | 5 +-
public/language/es/tags.json | 2 +-
public/language/et/category.json | 3 +
public/language/et/error.json | 4 +-
public/language/et/groups.json | 13 ++--
public/language/fa_IR/category.json | 3 +
public/language/fa_IR/groups.json | 3 +-
public/language/fi/category.json | 3 +
public/language/fi/groups.json | 3 +-
public/language/fr/category.json | 3 +
public/language/fr/error.json | 4 +-
public/language/fr/groups.json | 5 +-
public/language/he/category.json | 3 +
public/language/he/groups.json | 3 +-
public/language/hu/category.json | 3 +
public/language/hu/groups.json | 3 +-
public/language/id/category.json | 3 +
public/language/id/groups.json | 3 +-
public/language/id/topic.json | 10 +--
public/language/it/category.json | 3 +
public/language/it/email.json | 8 +--
public/language/it/error.json | 44 ++++++-------
public/language/it/groups.json | 27 ++++----
public/language/ja/category.json | 3 +
public/language/ja/groups.json | 3 +-
public/language/ko/category.json | 3 +
public/language/ko/groups.json | 3 +-
public/language/lt/category.json | 3 +
public/language/lt/email.json | 36 +++++------
public/language/lt/error.json | 66 ++++++++++----------
public/language/lt/groups.json | 49 ++++++++-------
public/language/lt/pages.json | 8 +--
public/language/lt/search.json | 12 ++--
public/language/lt/tags.json | 4 +-
public/language/lt/topic.json | 6 +-
public/language/ms/category.json | 3 +
public/language/ms/email.json | 6 +-
public/language/ms/error.json | 12 ++--
public/language/ms/groups.json | 27 ++++----
public/language/ms/register.json | 2 +-
public/language/ms/topic.json | 4 +-
public/language/ms/unread.json | 2 +-
public/language/ms/user.json | 18 +++---
public/language/ms/users.json | 18 +++---
public/language/nb/category.json | 3 +
public/language/nb/groups.json | 3 +-
public/language/nl/category.json | 3 +
public/language/nl/groups.json | 3 +-
public/language/pl/category.json | 3 +
public/language/pl/groups.json | 3 +-
public/language/pt_BR/category.json | 3 +
public/language/pt_BR/groups.json | 3 +-
public/language/ro/category.json | 3 +
public/language/ro/groups.json | 3 +-
public/language/ru/category.json | 3 +
public/language/ru/groups.json | 13 ++--
public/language/rw/category.json | 3 +
public/language/rw/global.json | 12 ++--
public/language/rw/groups.json | 3 +-
public/language/rw/topic.json | 4 +-
public/language/sc/category.json | 3 +
public/language/sc/groups.json | 3 +-
public/language/sk/category.json | 3 +
public/language/sk/groups.json | 3 +-
public/language/sr/category.json | 3 +
public/language/sr/groups.json | 3 +-
public/language/sv/category.json | 3 +
public/language/sv/email.json | 8 +--
public/language/sv/error.json | 56 ++++++++---------
public/language/sv/groups.json | 83 +++++++++++++------------
public/language/sv/pages.json | 8 +--
public/language/sv/search.json | 64 +++++++++----------
public/language/sv/tags.json | 2 +-
public/language/sv/topic.json | 2 +-
public/language/th/category.json | 3 +
public/language/th/groups.json | 3 +-
public/language/tr/category.json | 3 +
public/language/tr/email.json | 8 +--
public/language/tr/error.json | 12 ++--
public/language/tr/groups.json | 27 ++++----
public/language/vi/category.json | 3 +
public/language/vi/groups.json | 3 +-
public/language/zh_CN/category.json | 3 +
public/language/zh_CN/error.json | 4 +-
public/language/zh_CN/groups.json | 13 ++--
public/language/zh_TW/category.json | 3 +
public/language/zh_TW/groups.json | 3 +-
108 files changed, 536 insertions(+), 384 deletions(-)
diff --git a/public/language/ar/category.json b/public/language/ar/category.json
index 430a82390d..a03174df07 100644
--- a/public/language/ar/category.json
+++ b/public/language/ar/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "موضوع جديد",
"guest-login-post": "يجب عليك تسجيل الدخول للرد",
"no_topics": "لا توجد مواضيع في هذه الفئةلم لا تحاول إنشاء موضوع؟ ",
"browsing": "تصفح",
"no_replies": "لا توجد ردود.",
+ "no_new_posts": "No new posts.",
"share_this_category": "انشر هذه الفئة",
"watch": "متابعة",
"ignore": "تجاهل",
diff --git a/public/language/ar/groups.json b/public/language/ar/groups.json
index ae753b2d42..270d9ea846 100644
--- a/public/language/ar/groups.json
+++ b/public/language/ar/groups.json
@@ -38,12 +38,13 @@
"details.private_help": "في حالة تفعيل الخيار، الانضمام إلى المجموعة يستلزم قبول مالكها",
"details.hidden": "مخفي",
"details.hidden_help": "في حالة تفعيل الخيار، لن تظهر المجموعة للعموم والإنضمام إليها سيتلزم دعوة يدوية.",
- "details.delete_group": "Delete Group",
+ "details.delete_group": "حذف المجموعة",
"event.updated": "تم تحديث بيانات المجموعة",
"event.deleted": "تم حذف المجموعة %1",
"membership.accept-invitation": "Accept Invitation",
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/bg/category.json b/public/language/bg/category.json
index ad4fcb17ee..52d9789bd0 100644
--- a/public/language/bg/category.json
+++ b/public/language/bg/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Категория",
+ "subcategories": "Подкатегории",
"new_topic_button": "Нова тема",
"guest-login-post": "Влезте, за да можете да публикувате",
"no_topics": "Все още няма теми в тази категория. Защо не създадеш една?",
"browsing": "Разглежда",
"no_replies": "Все още никой не е отговорил",
+ "no_new_posts": "Няма нови публикации.",
"share_this_category": "Споделяне на тази категория",
"watch": "Следене",
"ignore": "Игнориране",
diff --git a/public/language/bg/error.json b/public/language/bg/error.json
index 2b45504325..56ae758261 100644
--- a/public/language/bg/error.json
+++ b/public/language/bg/error.json
@@ -46,8 +46,8 @@
"too-many-posts-newbie": "Като нов потребител, Вие можете да публикувате веднъж на %1 секунда/и, докато не натрупате %2 репутация – моля, изчакайте малко, преди да опитате да публикувате отново",
"tag-too-short": "Моля, въведете по-дълъг етикет. Етикетите трябва да съдържат поне %1 символ(а)",
"tag-too-long": "Моля, въведете по-кратък етикет. Етикетите трябва да съдържат не повече от %1 символ(а)",
- "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
- "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
+ "not-enough-tags": "Недостатъчно етикети. Темите трябва да имат поне %1 етикет(а)",
+ "too-many-tags": "Твърде много етикети. Темите не могат да имат повече от %1 етикет(а)",
"file-too-big": "Максималният разрешен размер на файл е %1 КБ – моля, качете по-малък файл",
"cant-vote-self-post": "Не можете да гласувате за собствената си публикация",
"already-favourited": "Вече сте отбелязали тази публикация като любима",
diff --git a/public/language/bg/groups.json b/public/language/bg/groups.json
index 1304f49c36..1fa3860f20 100644
--- a/public/language/bg/groups.json
+++ b/public/language/bg/groups.json
@@ -38,12 +38,13 @@
"details.private_help": "Ако е включено, присъединяването към група изисква одобрението на собственика ѝ",
"details.hidden": "Скрита",
"details.hidden_help": "Ако е включено, тази група няма да бъде извеждана в списъка от групи и потребителите ще трябва да бъдат поканени лично",
- "details.delete_group": "Delete Group",
+ "details.delete_group": "Изтриване на групата",
"event.updated": "Подробностите за групата бяха обновени",
"event.deleted": "Групата „%1“ беше изтрита",
"membership.accept-invitation": "Приемане на поканата",
"membership.invitation-pending": "Чакаща покана",
"membership.join-group": "Присъединяване към групата",
"membership.leave-group": "Напускане на групата",
- "membership.reject": "Отхвърляне"
+ "membership.reject": "Отхвърляне",
+ "new-group.group_name": "Име на групата:"
}
\ No newline at end of file
diff --git a/public/language/bn/category.json b/public/language/bn/category.json
index 52a6c76853..b543a8dc41 100644
--- a/public/language/bn/category.json
+++ b/public/language/bn/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "নতুন টপিক",
"guest-login-post": "Log in to post",
"no_topics": "এই বিভাগে কোন টপিক নেই! আপনি চাইলে একটি পোষ্ট করতে পারেন।",
"browsing": "ব্রাউজিং",
"no_replies": "কোন রিপ্লাই নেই",
+ "no_new_posts": "No new posts.",
"share_this_category": "এই বিভাগটি অন্যের সাথে ভাগাভাগি করুন",
"watch": "Watch",
"ignore": "উপেক্ষা করুন",
diff --git a/public/language/bn/groups.json b/public/language/bn/groups.json
index dd582c072a..ee043d39b6 100644
--- a/public/language/bn/groups.json
+++ b/public/language/bn/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/cs/category.json b/public/language/cs/category.json
index 6f156ea04b..9d75bab919 100644
--- a/public/language/cs/category.json
+++ b/public/language/cs/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Nové téma",
"guest-login-post": "Log in to post",
"no_topics": "V této kategorii zatím nejsou žádné příspěvky. Můžeš být první!",
"browsing": "prohlíží",
"no_replies": "Nikdo ještě neodpověděl",
+ "no_new_posts": "No new posts.",
"share_this_category": "Share this category",
"watch": "Watch",
"ignore": "Ignorovat",
diff --git a/public/language/cs/groups.json b/public/language/cs/groups.json
index 7690fb15a5..dce192132e 100644
--- a/public/language/cs/groups.json
+++ b/public/language/cs/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/da/category.json b/public/language/da/category.json
index 44a6bed071..d69e9f2fb5 100644
--- a/public/language/da/category.json
+++ b/public/language/da/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Kategori",
+ "subcategories": "Underkategorier",
"new_topic_button": "Nyt emne",
"guest-login-post": "Log ind",
"no_topics": "Der er ikke nogen nye emner i denne kategori. Hvorfor prøver du ikke at lave et?",
"browsing": "browse",
"no_replies": "Ingen har svaret",
+ "no_new_posts": "Ingen nye indlæg",
"share_this_category": "Del denne kategori",
"watch": "Overvåg",
"ignore": "Ignorer",
diff --git a/public/language/da/groups.json b/public/language/da/groups.json
index f7094f1ac1..da21bef337 100644
--- a/public/language/da/groups.json
+++ b/public/language/da/groups.json
@@ -38,12 +38,13 @@
"details.private_help": "Hvis aktiveret, så vil det kræve godkendelse af gruppe ejeren for at tilslutte sig en gruppe",
"details.hidden": "Skjult",
"details.hidden_help": "Hvis aktiveret, så vil denne gruppe ikke kunne ses i gruppelisten og bruhere skal inviteres manuelt",
- "details.delete_group": "Delete Group",
+ "details.delete_group": "Slet Gruppe",
"event.updated": "Gruppe detaljer er blevet opdateret",
"event.deleted": "Gruppen \"%1\" er blevet slettet",
"membership.accept-invitation": "Acceptér Invitation",
"membership.invitation-pending": "Afventende Invitationer",
"membership.join-group": "Bliv medlem af gruppe",
"membership.leave-group": "Forlad Gruppe",
- "membership.reject": "Afvis"
+ "membership.reject": "Afvis",
+ "new-group.group_name": "Gruppe Navn:"
}
\ No newline at end of file
diff --git a/public/language/de/category.json b/public/language/de/category.json
index f073846d6d..b42ca1e1a3 100644
--- a/public/language/de/category.json
+++ b/public/language/de/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Neues Thema",
"guest-login-post": "Anmelden um einen Beitrag zu erstellen",
"no_topics": "Es gibt noch keine Themen in dieser Kategorie. Warum beginnst du nicht eins?",
"browsing": "Aktiv",
"no_replies": "Niemand hat geantwortet",
+ "no_new_posts": "No new posts.",
"share_this_category": "Teile diese Kategorie",
"watch": "Beobachten",
"ignore": "Ignorieren",
diff --git a/public/language/de/groups.json b/public/language/de/groups.json
index 0f26786358..4847692935 100644
--- a/public/language/de/groups.json
+++ b/public/language/de/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/el/category.json b/public/language/el/category.json
index b49b18c0e2..2452ab3542 100644
--- a/public/language/el/category.json
+++ b/public/language/el/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Νέο Θέμα",
"guest-login-post": "Log in to post",
"no_topics": "Δεν υπάρχουν θέματα σε αυτή την κατηγορία. Γιατί δεν δοκιμάζεις να δημοσιεύσεις ένα εσύ;",
"browsing": "περιηγούνται",
"no_replies": "Κανείς δεν έχει απαντήσει",
+ "no_new_posts": "No new posts.",
"share_this_category": "Μοιράσου αυτή την κατηγορία",
"watch": "Watch",
"ignore": "Αγνόηση",
diff --git a/public/language/el/groups.json b/public/language/el/groups.json
index b81d08c2c4..4eb70181f2 100644
--- a/public/language/el/groups.json
+++ b/public/language/el/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/en@pirate/category.json b/public/language/en@pirate/category.json
index 7e84700d2f..3c9ba366a2 100644
--- a/public/language/en@pirate/category.json
+++ b/public/language/en@pirate/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "New Topic",
"guest-login-post": "Log in to post",
"no_topics": "Thar be no topics in 'tis category. Why don't ye give a go' postin' one?",
"browsing": "browsin'",
"no_replies": "No one has replied to ye message",
+ "no_new_posts": "No new posts.",
"share_this_category": "Share this category",
"watch": "Watch",
"ignore": "Ignore",
diff --git a/public/language/en@pirate/groups.json b/public/language/en@pirate/groups.json
index 1e1623c38f..3bd63ad94a 100644
--- a/public/language/en@pirate/groups.json
+++ b/public/language/en@pirate/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/en_US/category.json b/public/language/en_US/category.json
index be0b8e42f5..b992c577f3 100644
--- a/public/language/en_US/category.json
+++ b/public/language/en_US/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "New Topic",
"guest-login-post": "Log in to post",
"no_topics": "There are no topics in this category. Why don't you try posting one?",
"browsing": "browsing",
"no_replies": "No one has replied",
+ "no_new_posts": "No new posts.",
"share_this_category": "Share this category",
"watch": "Watch",
"ignore": "Ignore",
diff --git a/public/language/en_US/groups.json b/public/language/en_US/groups.json
index 1e1623c38f..3bd63ad94a 100644
--- a/public/language/en_US/groups.json
+++ b/public/language/en_US/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/es/category.json b/public/language/es/category.json
index 1eecac4aba..8d85614fbe 100644
--- a/public/language/es/category.json
+++ b/public/language/es/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Nuevo tema",
"guest-login-post": "Acceder para poder escribir un mensaje",
"no_topics": "No hay temas en esta categoría. ¿Por qué no te animas y publicas uno?",
"browsing": "viendo ahora",
"no_replies": "Nadie ha respondido aún",
+ "no_new_posts": "No new posts.",
"share_this_category": "Compartir esta categoría",
"watch": "Seguir",
"ignore": "Ignorar",
diff --git a/public/language/es/error.json b/public/language/es/error.json
index 030e014195..d4e2062425 100644
--- a/public/language/es/error.json
+++ b/public/language/es/error.json
@@ -46,8 +46,8 @@
"too-many-posts-newbie": "Como nuevo usuario, solo puedes publicar una vez cada %1 segundo(s) hasta hayas ganado una reputación de %2 - por favor espera antes de volver a publicar",
"tag-too-short": "Por favor introduce una etiqueta más larga. Las etiquetas deben contener por lo menos %1 caractere(s)",
"tag-too-long": "Por favor introduce una etiqueta más corta. Las etiquetas no pueden exceder los %1 caractere(s)",
- "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
- "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
+ "not-enough-tags": "Etiquetas insuficientes. El tema debe tener al menos %1 etiqueta(s).",
+ "too-many-tags": "Demasiadas etiquetas. El tema no puede tener mas de %1 etiqueta(s)",
"file-too-big": "El tamaño de fichero máximo es de %1 kB - por favor, suba un fichero más pequeño",
"cant-vote-self-post": "No puedes votar tus propios posts",
"already-favourited": "Ya ha marcado esta publicación como favorita",
diff --git a/public/language/es/groups.json b/public/language/es/groups.json
index 1da9e025e2..7897e5aec5 100644
--- a/public/language/es/groups.json
+++ b/public/language/es/groups.json
@@ -38,12 +38,13 @@
"details.private_help": "Si está habilitado, entrar en los grupos requiere aprobación de sus propietarios",
"details.hidden": "Oculto",
"details.hidden_help": "Si está habilitado, este grupo no aparecerá en los listados de grupos, y los usuarios tendrán que ser invitados manualmente",
- "details.delete_group": "Delete Group",
+ "details.delete_group": "Eliminar grupo",
"event.updated": "Los detalles del grupo han sido actualizados",
"event.deleted": "El grupo \"%1\" ha sido eliminado",
"membership.accept-invitation": "Aceptar Invitación",
"membership.invitation-pending": "Invitación Pendiente",
"membership.join-group": "Unirse al grupo",
"membership.leave-group": "Dejar el grupo",
- "membership.reject": "Rechazar"
+ "membership.reject": "Rechazar",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/es/tags.json b/public/language/es/tags.json
index ebb1bc6072..bf8d98d790 100644
--- a/public/language/es/tags.json
+++ b/public/language/es/tags.json
@@ -1,7 +1,7 @@
{
"no_tag_topics": "No hay temas con esta etiqueta.",
"tags": "Etiquetas",
- "enter_tags_here": "Introduce aquí las etiquetas, entre 1% y 2% caracteres cada una.",
+ "enter_tags_here": "Introduce aquí las etiquetas, entre %1 y %2 caracteres cada una.",
"enter_tags_here_short": "Introduzca las etiquetas...",
"no_tags": "Aún no hay etiquetas."
}
\ No newline at end of file
diff --git a/public/language/et/category.json b/public/language/et/category.json
index bbaa42bee5..f89f350050 100644
--- a/public/language/et/category.json
+++ b/public/language/et/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Uus teema",
"guest-login-post": "Postitamiseks logi sisse",
"no_topics": "Kahjuks ei leidu siin kategoorias ühtegi teemat. Soovid postitada?",
"browsing": "vaatab",
"no_replies": "Keegi pole vastanud",
+ "no_new_posts": "No new posts.",
"share_this_category": "Jaga seda kategooriat",
"watch": "Vaata",
"ignore": "Ignoreeri",
diff --git a/public/language/et/error.json b/public/language/et/error.json
index 865e8cdc76..415dfea720 100644
--- a/public/language/et/error.json
+++ b/public/language/et/error.json
@@ -46,8 +46,8 @@
"too-many-posts-newbie": "Uue kasutajana saadte postitada vaid iga %1 sekundi tagant, seniks kuni olete teeninud vähemalt %2 reputatsiooni - palun oodake enne uue postituse tegemist.",
"tag-too-short": "Palun sisestage pikem märksõna. Märksõna pikkus peab olema vähemalt %1 tähemärk(i).",
"tag-too-long": "Palun sisestage lühem märksõna. Märksõna pikkus peab olema vähem kui %1 tähemärk(i).",
- "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
- "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
+ "not-enough-tags": "Liiga vähe märksõnu. Teemadel peab olemalt vähemalt %1 märksõna",
+ "too-many-tags": "Liiga palju märksõnu. Teemadel ei tohi olla rohkem kui %1 märksõna",
"file-too-big": "Maksimaalne üleslaetava faili suurus on %1 kB - valige väiksema mahuga fail.",
"cant-vote-self-post": "Sa ei saa hääletada enda postituse poolt",
"already-favourited": "Sa juba märkisid selle postituse lemmikuks",
diff --git a/public/language/et/groups.json b/public/language/et/groups.json
index 1ddeb7ce14..5f1331155f 100644
--- a/public/language/et/groups.json
+++ b/public/language/et/groups.json
@@ -38,12 +38,13 @@
"details.private_help": "Kui sisse lülitatud, siis grupiga liitumine nõuab grupi omaniku nõusolekut",
"details.hidden": "Peidetud",
"details.hidden_help": "Kui sisse lülitatud, siis seda gruppi ei kuvata gruppide nimekirjas ning liikmed tuleb lisada manuaalselt",
- "details.delete_group": "Delete Group",
+ "details.delete_group": "Kustuta grupp",
"event.updated": "Grupi lisainformatsiooni on uuendatud",
"event.deleted": "Grupp \"%1\" on kustutatud",
- "membership.accept-invitation": "Accept Invitation",
- "membership.invitation-pending": "Invitation Pending",
- "membership.join-group": "Join Group",
- "membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.accept-invitation": "Aktsepteeri kutse",
+ "membership.invitation-pending": "Kutse ootel",
+ "membership.join-group": "Liitu grupiga",
+ "membership.leave-group": "Lahku grupist",
+ "membership.reject": "Lükka tagasi",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/fa_IR/category.json b/public/language/fa_IR/category.json
index d67bba2cd7..a9c353e7a7 100644
--- a/public/language/fa_IR/category.json
+++ b/public/language/fa_IR/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "جستار تازه",
"guest-login-post": "برای ثبت نظر وارد شوید",
"no_topics": "هیچ پستی در این دسته نیست. چرا شما یکی نفرستید؟",
"browsing": "بینندهها",
"no_replies": "هیچ کسی پاسخ نداده است.",
+ "no_new_posts": "No new posts.",
"share_this_category": "به اشتراکگذاری این دسته",
"watch": "نظارت کردن",
"ignore": "نادیده گرفتن",
diff --git a/public/language/fa_IR/groups.json b/public/language/fa_IR/groups.json
index 4309d8390a..bc42c3c4cf 100644
--- a/public/language/fa_IR/groups.json
+++ b/public/language/fa_IR/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/fi/category.json b/public/language/fi/category.json
index 0c0233c3b1..7dacbad5ae 100644
--- a/public/language/fi/category.json
+++ b/public/language/fi/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Uusi aihe",
"guest-login-post": "Kirjaudu sisään voidaksesi kirjoittaa viesti",
"no_topics": "Tässä kategoriassa ei ole yhtään aihetta. Miksi et aloittaisi uutta?",
"browsing": "selaamassa",
"no_replies": "Kukaan ei ole vastannut",
+ "no_new_posts": "No new posts.",
"share_this_category": "Jaa tämä kategoria",
"watch": "Watch",
"ignore": "Sivuuta",
diff --git a/public/language/fi/groups.json b/public/language/fi/groups.json
index a2cf33e9ce..a0b9c56f9c 100644
--- a/public/language/fi/groups.json
+++ b/public/language/fi/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/fr/category.json b/public/language/fr/category.json
index 62f1fe79a3..e051891b6a 100644
--- a/public/language/fr/category.json
+++ b/public/language/fr/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Catégorie",
+ "subcategories": "Sous-catégories",
"new_topic_button": "Nouveau sujet",
"guest-login-post": "Se connecter pour poster",
"no_topics": "Il n'y a aucun sujet dans cette catégorie. Pourquoi ne pas en créer un ?",
"browsing": "parcouru par",
"no_replies": "Personne n'a répondu",
+ "no_new_posts": "Pas de nouveau message",
"share_this_category": "Partager cette catégorie",
"watch": "Suivre",
"ignore": "Ne plus suivre",
diff --git a/public/language/fr/error.json b/public/language/fr/error.json
index 4b621eea44..4d92d5a7f0 100644
--- a/public/language/fr/error.json
+++ b/public/language/fr/error.json
@@ -46,8 +46,8 @@
"too-many-posts-newbie": "En tant que nouvel utilisateur, vous ne pouvez poster que toutes les %1 seconde(s) jusqu'à ce que vous obteniez une réputation de %2 - patientez avant de publier de nouveau.",
"tag-too-short": "Veuillez entrer un mot-clé plus long. Les mots-clés doivent contenir au moins %1 caractère(s).",
"tag-too-long": "Veuillez entrer un mot-clé plus court. Les mot-clés ne peuvent faire plus de %1 caractère(s).",
- "not-enough-tags": "Pas assez de tags. Les sujets doivent avoir au moins %1 tag(s).",
- "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
+ "not-enough-tags": "Pas assez de mots-clés. Les sujets doivent avoir au moins %1 mots-clé(s).",
+ "too-many-tags": "Trop de mots-clés. Les sujets ne peuvent avoir au plus que %1 mots-clé(s).",
"file-too-big": "La taille maximale autorisée pour un fichier est de %1 kb. Veuillez envoyer un fichier plus petit.",
"cant-vote-self-post": "Vous ne pouvez pas voter pour vos propres messages",
"already-favourited": "Vous avez déjà mis ce message en favoris",
diff --git a/public/language/fr/groups.json b/public/language/fr/groups.json
index 35488f192e..75bee36650 100644
--- a/public/language/fr/groups.json
+++ b/public/language/fr/groups.json
@@ -38,12 +38,13 @@
"details.private_help": "Si cette case est cochée, rejoindre un groupe nécessite l'accord d'un propriétaire du groupe.",
"details.hidden": "Masqué",
"details.hidden_help": "Si cette case est cochée, ce groupe n'est pas affiché dans la liste des groupes, et les utilisateurs devront être invités manuellement.",
- "details.delete_group": "Delete Group",
+ "details.delete_group": "Supprimer le groupe",
"event.updated": "Les détails du groupe ont été mis à jour",
"event.deleted": "Le groupe \"%1\" a été supprimé",
"membership.accept-invitation": "Accepter l'invitation",
"membership.invitation-pending": "Invitation en attente",
"membership.join-group": "Rejoindre le groupe",
"membership.leave-group": "Quitter le groupe",
- "membership.reject": "Refuser"
+ "membership.reject": "Refuser",
+ "new-group.group_name": "Nom du groupe :"
}
\ No newline at end of file
diff --git a/public/language/he/category.json b/public/language/he/category.json
index 03fb624861..c2ff49eeb1 100644
--- a/public/language/he/category.json
+++ b/public/language/he/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "נושא חדש",
"guest-login-post": "Log in to post",
"no_topics": "קטגוריה זו ריקה מנושאים. למה שלא תנסה להוסיף נושא חדש?",
"browsing": "צופים בנושא זה כעת",
"no_replies": "אין תגובות",
+ "no_new_posts": "No new posts.",
"share_this_category": "שתף קטגוריה זו",
"watch": "Watch",
"ignore": "התעלם",
diff --git a/public/language/he/groups.json b/public/language/he/groups.json
index 0cb4cafcb8..b1637e28ac 100644
--- a/public/language/he/groups.json
+++ b/public/language/he/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/hu/category.json b/public/language/hu/category.json
index e77bbe78a5..7bd3e55ebe 100644
--- a/public/language/hu/category.json
+++ b/public/language/hu/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Új témakör",
"guest-login-post": "A hozzászóláshoz be kell lépni",
"no_topics": "Nincs nyitva egy téma sem ebben a kategóriában.Hozzunk létre egyet.",
"browsing": "böngészés",
"no_replies": "Nem érkezett válasz",
+ "no_new_posts": "No new posts.",
"share_this_category": "Kategória megosztása",
"watch": "Watch",
"ignore": "Ignorálás",
diff --git a/public/language/hu/groups.json b/public/language/hu/groups.json
index a5332f50b4..5c1ff14024 100644
--- a/public/language/hu/groups.json
+++ b/public/language/hu/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/id/category.json b/public/language/id/category.json
index 46613ff1ad..95e0e1bc1d 100644
--- a/public/language/id/category.json
+++ b/public/language/id/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Topik Baru",
"guest-login-post": "Log in to post",
"no_topics": "Tidak ada topik dikategori ini Mengapa anda tidak mencoba membuat yang baru?",
"browsing": "penjelajahan",
"no_replies": "Belum ada orang yang menjawab",
+ "no_new_posts": "No new posts.",
"share_this_category": "Bagikan kategori ini",
"watch": "Watch",
"ignore": "Abaikan",
diff --git a/public/language/id/groups.json b/public/language/id/groups.json
index d67ca443d1..b3b60e6d73 100644
--- a/public/language/id/groups.json
+++ b/public/language/id/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/id/topic.json b/public/language/id/topic.json
index 5f119c3e80..7f6ae0f2de 100644
--- a/public/language/id/topic.json
+++ b/public/language/id/topic.json
@@ -2,10 +2,10 @@
"topic": "Topik",
"topic_id": "ID Topik",
"topic_id_placeholder": "Masukkan ID topik",
- "no_topics_found": "Tidak topik yang ditemukan!",
+ "no_topics_found": "Topik tidak ditemukan!",
"no_posts_found": "Tidak ada posting yang ditemukan!",
"post_is_deleted": "Posting ini telah dihapus!",
- "topic_is_deleted": "This topic is deleted!",
+ "topic_is_deleted": "Topik terhapus!",
"profile": "Profil",
"posted_by": "Dibuat oleh %1",
"posted_by_guest": "Dibuat oleh Tamu",
@@ -13,7 +13,7 @@
"notify_me": "Beritahukan balasan baru untuk topik ini",
"quote": "Kutip",
"reply": "Balas",
- "guest-login-reply": "Log in to reply",
+ "guest-login-reply": "Log in untuk membalas",
"edit": "Ubah",
"delete": "Hapus",
"purge": "Musnahkan",
@@ -76,7 +76,7 @@
"fork_no_pids": "Tidak ada posting yang dipilih!",
"fork_success": "Topik berhasil dicabangkan! Klik disini untuk menuju topik yang telah dicabangkan.",
"composer.title_placeholder": "Masukkan judul topik di sini...",
- "composer.handle_placeholder": "Name",
+ "composer.handle_placeholder": "Nama",
"composer.discard": "Buang",
"composer.submit": "Kirim",
"composer.replying_to": "Membalas ke %1",
@@ -96,5 +96,5 @@
"oldest_to_newest": "Terlama ke Terbaru",
"newest_to_oldest": "Terbaru ke Terlama",
"most_votes": "Vote terbanyak",
- "most_posts": "Most posts"
+ "most_posts": "Postingan terbanyak"
}
\ No newline at end of file
diff --git a/public/language/it/category.json b/public/language/it/category.json
index 224bd2b833..2e2288985d 100644
--- a/public/language/it/category.json
+++ b/public/language/it/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Categoria",
+ "subcategories": "Sottocategorie",
"new_topic_button": "Nuova Discussione",
"guest-login-post": "Effettua il Log in per pubblicare",
"no_topics": "Non ci sono discussioni in questa categoria. Perché non ne inizi una?",
"browsing": "visualizzando",
"no_replies": "Nessuno ha risposto",
+ "no_new_posts": "Nessun nuovo post.",
"share_this_category": "Condividi questa Categoria",
"watch": "Osserva",
"ignore": "Ignora",
diff --git a/public/language/it/email.json b/public/language/it/email.json
index 3593b754ed..7bdd9cbfaa 100644
--- a/public/language/it/email.json
+++ b/public/language/it/email.json
@@ -1,15 +1,15 @@
{
"password-reset-requested": "Richiesta di reset della password - %1!",
"welcome-to": "Benvenuto in %1",
- "invite": "Invitation from %1",
+ "invite": "Invito da %1",
"greeting_no_name": "Ciao",
"greeting_with_name": "Ciao %1",
"welcome.text1": "Grazie per esserti registrato su %1!",
"welcome.text2": "Per attivare completamente il tuo account dobbiamo verificare che sei il proprietario dell'indiritto email con cui ti sei registrato.",
- "welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
+ "welcome.text3": "Un Amministratora ha accettato la tua registrazione. Puoi adesso collegarti con il tuo nome utente e la tua password.",
"welcome.cta": "Clicca qui per confermare il tuo indirizzo email",
- "invitation.text1": "%1 has invited you to join %2",
- "invitation.ctr": "Click here to create your account.",
+ "invitation.text1": "%1 ti ha invitato a entrare in %2",
+ "invitation.ctr": "Clicca qui per creare il tuo account.",
"reset.text1": "Abbiamo ricevuto una richiesta di reset della tua password, probabilmente perché l'hai dimenticata. Se non è così si prega di ignorare questa email.",
"reset.text2": "Per confermare il reset della password per favore clicca il seguente link:",
"reset.cta": "Clicca qui per resettare la tua password",
diff --git a/public/language/it/error.json b/public/language/it/error.json
index 308a5afa08..6ec26dda02 100644
--- a/public/language/it/error.json
+++ b/public/language/it/error.json
@@ -2,7 +2,7 @@
"invalid-data": "Dati non validi",
"not-logged-in": "Non sembri essere loggato.",
"account-locked": "Il tuo account è stato bloccato temporaneamente",
- "search-requires-login": "Searching requires an account - please login or register.",
+ "search-requires-login": "La ricerca richiede un account! Si prega di loggarsi o registrarsi!",
"invalid-cid": "ID Categoria non valido",
"invalid-tid": "ID Topic non valido",
"invalid-pid": "ID Post non valido",
@@ -21,11 +21,11 @@
"email-not-confirmed-chat": "Non potrai chattare finchè non avrai confermato la tua email, per favore clicca qui per farlo ora.",
"no-email-to-confirm": "Questo forum richiede la conferma dell'indirizzo email, per favore clicca qui per inserirne uno",
"email-confirm-failed": "Non possiamo confermare la tua email, per favore prova ancora più tardi.",
- "confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.",
+ "confirm-email-already-sent": "Email di conferma già inviata, per favore attendere %1 minuti per richiederne un'altra.",
"username-too-short": "Nome utente troppo corto",
"username-too-long": "Nome utente troppo lungo",
"user-banned": "Utente bannato",
- "user-too-new": "Sorry, you are required to wait %1 second(s) before making your first post",
+ "user-too-new": "Devi attendere %1 secondi prima di creare il tuo primo post",
"no-category": "La Categoria non esiste",
"no-topic": "Il Topic non esiste",
"no-post": "Il Post non esiste",
@@ -36,24 +36,24 @@
"no-emailers-configured": "Nessun plugin per le email è caricato, quindi la mail di test non può essere inviata",
"category-disabled": "Categoria disabilitata",
"topic-locked": "Discussione Bloccata",
- "post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired": "Ti è consentito modificare un post per %1 secondi dopo averlo inviato",
"still-uploading": "Per favore attendere il completamento degli uploads.",
- "content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
- "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
- "title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
- "title-too-long": "Please enter a shorter title. Titles can't be longer than %1 character(s).",
- "too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
- "too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
- "tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
- "tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
- "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
- "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
- "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
+ "content-too-short": "Inserisci un testo più lungo. Il messaggio deve contenere almeno %1 caratteri.",
+ "content-too-long": "Inserisci un post più breve. I post non possono essere più lunghi di %1 caratteri.",
+ "title-too-short": "Inserisci un titolo più lungo. I titoli devono contenere almeno %1 caratteri.",
+ "title-too-long": "Inserisci un titolo più corto. I titoli non possono essere più lunghi di %1 caratteri.",
+ "too-many-posts": "È possibile inserire un Post ogni %1 secondi - si prega di attendere prima di postare di nuovo",
+ "too-many-posts-newbie": "Come nuovo utente puoi postare solamente una volta ogni %1 secondi finché non hai raggiunto un livello di reputazione %2 - per favore attendi prima di scrivere ancora",
+ "tag-too-short": "Inserisci un tag più lungo. I tag devono contenere almeno %1 caratteri.",
+ "tag-too-long": "Per favore inserisci un tag più corto. I tags non dovrebbero essere più lunghi di %1 caratteri",
+ "not-enough-tags": "Tag non sufficienti. Gli argomenti devono avere almeno %1 Tag",
+ "too-many-tags": "Troppi Tag. Gli argomenti non possono avere più di %1 Tag",
+ "file-too-big": "La dimensione massima consentita è di %1 kB - si prega di caricare un file più piccolo",
"cant-vote-self-post": "Non puoi votare il tuo stesso post",
"already-favourited": "Hai già inserito tra i preferiti questo post",
"already-unfavourited": "Hai già inserito tra i Non Preferiti questo post",
"cant-ban-other-admins": "Non puoi bannare altri amministratori!",
- "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
+ "cant-remove-last-admin": "Sei l'unico Amministratore. Aggiungi un altro amministratore prima di rimuovere il tuo ruolo",
"invalid-image-type": "Tipo dell'immagine non valido. I tipi permessi sono: %1",
"invalid-image-extension": "Estensione immagine non valida",
"invalid-file-type": "Tipo di file non valido. I formati consentiti sono: %1",
@@ -62,18 +62,18 @@
"group-name-change-not-allowed": "Il cambio di nome al Gruppo non è consentito",
"group-already-member": "Fai già parte di questo gruppo",
"group-needs-owner": "Questo gruppo richiede almeno un proprietario.",
- "group-already-invited": "This user has already been invited",
- "group-already-requested": "Your membership request has already been submitted",
+ "group-already-invited": "Questo utente è già stato invitato",
+ "group-already-requested": "La tua richiesta di partecipazione è già stata inviata",
"post-already-deleted": "Questo Post è già stato cancellato",
"post-already-restored": "Questo Post è già stato ripristinato",
"topic-already-deleted": "Questo Topic è già stato cancellato",
"topic-already-restored": "Questo Topic è già stato ripristinato",
- "cant-purge-main-post": "You can't purge the main post, please delete the topic instead",
+ "cant-purge-main-post": "Non puoi svuotare il primo messaggio, elimina invece l'intera discussione",
"topic-thumbnails-are-disabled": "Le anteprime della Discussione sono disabilitate.",
"invalid-file": "File non valido",
"uploads-are-disabled": "Uploads disabilitati",
- "signature-too-long": "Sorry, your signature cannot be longer than %1 character(s).",
- "about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).",
+ "signature-too-long": "Spiacenti, la tua firma non può essere più lunga di %1 caratteri.",
+ "about-me-too-long": "Spiacenti, il testo non può essere più lungo di %1 caratteri.",
"cant-chat-with-yourself": "Non puoi chattare con te stesso!",
"chat-restricted": "Questo utente ha ristretto i suoi messaggi in chat alle persone che segue. Per poter chattare con te ti deve prima seguire.",
"too-many-messages": "Hai inviato troppi messaggi, aspetta un attimo.",
@@ -81,7 +81,7 @@
"downvoting-disabled": "Il Downvoting è disabilitato",
"not-enough-reputation-to-downvote": "Non hai i privilegi per votare negativamente questo post",
"not-enough-reputation-to-flag": "Tu non hai abbastanza reputazione per segnalare questo Post",
- "already-flagged": "You have already flagged this post",
+ "already-flagged": "Hai già messo marcato questo post",
"reload-failed": "NodeBB ha incontrato un problema durante il ricaricamento: \"%1\". NodeBB continuerà a servire gli assets esistenti lato client, così puoi annullare quello che hai fatto prima di ricaricare.",
"registration-error": "Errore nella registrazione",
"parse-error": "Qualcosa è andato storto durante l'analisi della risposta proveniente dal server",
diff --git a/public/language/it/groups.json b/public/language/it/groups.json
index 1718c967ac..1f30115a7d 100644
--- a/public/language/it/groups.json
+++ b/public/language/it/groups.json
@@ -6,12 +6,12 @@
"no_groups_found": "Non ci sono gruppi da vedere",
"pending.accept": "Accetta",
"pending.reject": "Rigetta",
- "pending.accept_all": "Accept All",
- "pending.reject_all": "Reject All",
- "pending.none": "There are no pending members at this time",
- "invited.none": "There are no invited members at this time",
- "invited.uninvite": "Rescind Invitation",
- "invited.search": "Search for a user to invite to this group",
+ "pending.accept_all": "Accetta tutti",
+ "pending.reject_all": "Rifiuta tutti",
+ "pending.none": "Non ci sono membri in attesa",
+ "invited.none": "Non ci sono inviti in sospeso",
+ "invited.uninvite": "Revoca invito",
+ "invited.search": "Ricerca un utente da invitare in questo gruppo",
"cover-instructions": "Drag and Drop una fotografia, spostarla ad una posizione, e premere Salva",
"cover-change": "Cambia",
"cover-save": "Salva",
@@ -19,7 +19,7 @@
"details.title": "Dettagli Gruppo",
"details.members": "Lista Membri",
"details.pending": "Membri in attesa",
- "details.invited": "Invited Members",
+ "details.invited": "Membri invitati",
"details.has_no_posts": "I membri di questo gruppo non hanno ancora postato.",
"details.latest_posts": "Ultimi Post",
"details.private": "Privato",
@@ -38,12 +38,13 @@
"details.private_help": "Se abilitato, l'ingresso ai gruppi richiede l'approvazione di uno dei proprietari",
"details.hidden": "Nascosto",
"details.hidden_help": "Se abilitato, questo gruppo non sarà visibile nella lista dei gruppi e gli utenti dovranno essere invitati manualmente",
- "details.delete_group": "Delete Group",
+ "details.delete_group": "Elimina il Gruppo",
"event.updated": "I dettagli del Gruppo sono stati aggiornati",
"event.deleted": "Il gruppo \"%1\" è stato eliminato",
- "membership.accept-invitation": "Accept Invitation",
- "membership.invitation-pending": "Invitation Pending",
- "membership.join-group": "Join Group",
- "membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.accept-invitation": "Accetta l'invito",
+ "membership.invitation-pending": "Invito in sospeso",
+ "membership.join-group": "Entra nel Gruppo",
+ "membership.leave-group": "Lascia il Gruppo",
+ "membership.reject": "Rifiuta",
+ "new-group.group_name": "Nome Gruppo:"
}
\ No newline at end of file
diff --git a/public/language/ja/category.json b/public/language/ja/category.json
index 8d792897c4..ad17f20b8d 100644
--- a/public/language/ja/category.json
+++ b/public/language/ja/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "新規スレッド",
"guest-login-post": "Log in to post",
"no_topics": "まだスレッドはありません. 一番目のスレッドを書いてみないか?",
"browsing": "閲覧中",
"no_replies": "返事はまだありません",
+ "no_new_posts": "No new posts.",
"share_this_category": "この板を共有",
"watch": "Watch",
"ignore": "Ignore",
diff --git a/public/language/ja/groups.json b/public/language/ja/groups.json
index 1e1623c38f..3bd63ad94a 100644
--- a/public/language/ja/groups.json
+++ b/public/language/ja/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/ko/category.json b/public/language/ko/category.json
index e2a4059181..36b116392d 100644
--- a/public/language/ko/category.json
+++ b/public/language/ko/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "새 주제 생성",
"guest-login-post": "로그인",
"no_topics": "이 카테고리에는 생성된 주제가 없습니다. 먼저 주제를 생성해 보세요.",
"browsing": "이 주제를 읽고 있는 사용자",
"no_replies": "답글이 없습니다.",
+ "no_new_posts": "No new posts.",
"share_this_category": "이 카테고리를 공유",
"watch": "관심 주제",
"ignore": "관심 해제",
diff --git a/public/language/ko/groups.json b/public/language/ko/groups.json
index ce5f1c3912..b2e8a8ec48 100644
--- a/public/language/ko/groups.json
+++ b/public/language/ko/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/lt/category.json b/public/language/lt/category.json
index 324084f60e..9659f81503 100644
--- a/public/language/lt/category.json
+++ b/public/language/lt/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Nauja tema",
"guest-login-post": "Prisijungti įrašų paskelbimui",
"no_topics": "Šioje kategorijoje temų nėra. Kodėl gi jums nesukūrus naujos?",
"browsing": "naršo",
"no_replies": "Niekas dar neatsakė",
+ "no_new_posts": "No new posts.",
"share_this_category": "Pasidalinti šią kategoriją",
"watch": "Stebėti",
"ignore": "Nepaisyti",
diff --git a/public/language/lt/email.json b/public/language/lt/email.json
index 12fd68ced9..ebab5de306 100644
--- a/public/language/lt/email.json
+++ b/public/language/lt/email.json
@@ -1,32 +1,32 @@
{
- "password-reset-requested": "Password Reset Requested - %1!",
+ "password-reset-requested": "Slaptažodžio atstatymas būtinas - %1!",
"welcome-to": "Sveiki atvykę į %1",
- "invite": "Invitation from %1",
+ "invite": "Pakvietimas nuo %1",
"greeting_no_name": "Sveiki",
"greeting_with_name": "Sveiki %1",
- "welcome.text1": "Thank you for registering with %1!",
- "welcome.text2": "To fully activate your account, we need to verify that you own the email address you registered with.",
- "welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
+ "welcome.text1": "Ačiū kad užsiregistravote %1",
+ "welcome.text2": "Kad pilnai aktyvuoti jūsų paskira, mums reikia įsitikinti kad jūs tikrai esate el.pašto valdytojas",
+ "welcome.text3": "Administratorius priemė jūsų prašymą prisijungti prie mūsų. Dabar galite prisijungti su savo slapyvardžiu/slaptažodžiu",
"welcome.cta": "El. adreso patvirtinimui spauskite čia",
- "invitation.text1": "%1 has invited you to join %2",
- "invitation.ctr": "Click here to create your account.",
- "reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.",
- "reset.text2": "To continue with the password reset, please click on the following link:",
+ "invitation.text1": "%1 pakvietė tave prisijungti į %2",
+ "invitation.ctr": "Spauskite čia kad susikurtumėte paskyrą",
+ "reset.text1": "Mes, gavome prašymą atstatyti jūsų slaptažodį, tikriausiai jūs jį pamiršote. Jeigu problema ne tame, prašome ignoruoti šį laišką",
+ "reset.text2": "Kad tęsti slaptažodžio atstatymą, prašome paspausti šią nuorodą",
"reset.cta": "Slaptažodžio atstatymui spauskite čia",
"reset.notify.subject": "Slaptažodis sėkmingai pakeistas",
- "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.",
- "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.",
+ "reset.notify.text1": "Mes tikriname ar jūs tikrai esate %1, jūsų slaptažodis buvo pakeistas sėkmingai",
+ "reset.notify.text2": "Jeigu jūs neprašėte šito, prašome perspėti administratoriu nedelsiant",
"digest.notifications": "Turite neskaitytų pranešimų nuo %1:",
- "digest.latest_topics": "Latest topics from %1",
+ "digest.latest_topics": "Paskutinės temos iš %1",
"digest.cta": "Kad aplankyti %1, spauskite čia",
- "digest.unsub.info": "This digest was sent to you due to your subscription settings.",
- "digest.no_topics": "There have been no active topics in the past %1",
- "notif.chat.subject": "New chat message received from %1",
+ "digest.unsub.info": "Ši santrauka buvo išsiųsta į tavo prenumeratos nustatymus",
+ "digest.no_topics": "Nebuvo aktyvių temų praeityje %1",
+ "notif.chat.subject": "Nauja pokalbio žinutė gauta iš %1",
"notif.chat.cta": "Pokalbio pratęsimui spauskite čia",
- "notif.chat.unsub.info": "This chat notification was sent to you due to your subscription settings.",
+ "notif.chat.unsub.info": "Šios žinutės perpėjimas buvo išsiųstas į tavo prenumeratos nustatymus",
"notif.post.cta": "Spauskite čia norėdami skaityti visą temą",
- "notif.post.unsub.info": "This post notification was sent to you due to your subscription settings.",
- "test.text1": "This is a test email to verify that the emailer is set up correctly for your NodeBB.",
+ "notif.post.unsub.info": "Šios žinutės perspėjimas buvo išsiųstas į tavo prenumeratos nustatymus",
+ "test.text1": "Ši žinutė yra bandomoji kad įsitikint, kad vartotojas teisingai nustatė nustatymus tavo NodeBB",
"unsub.cta": "Spauskite čia norėdami pakeisti šiuos nustatymus",
"closing": "Ačiū!"
}
\ No newline at end of file
diff --git a/public/language/lt/error.json b/public/language/lt/error.json
index 9134db77db..c7b5d1f3ba 100644
--- a/public/language/lt/error.json
+++ b/public/language/lt/error.json
@@ -2,7 +2,7 @@
"invalid-data": "Klaidingi duomenys",
"not-logged-in": "Atrodo, kad jūs neesate prisijungęs.",
"account-locked": "Jūsų paskyra buvo laikinai užrakinta",
- "search-requires-login": "Searching requires an account - please login or register.",
+ "search-requires-login": "Paieška reikalauja vartotojo - prašome prisijungti arba užsiregistruoti",
"invalid-cid": "Klaidingas kategorijos ID",
"invalid-tid": "Klaidingas temos ID",
"invalid-pid": "Klaidingas pranešimo ID",
@@ -18,42 +18,42 @@
"username-taken": "Vartotojo vardas jau užimtas",
"email-taken": "El. pašto adresas jau užimtas",
"email-not-confirmed": "Jūsų el. paštas nepatvirtintas, prašome paspausti čia norint jį patvirtinti.",
- "email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.",
+ "email-not-confirmed-chat": "Jūs negalite bendrauti, kol jūsų el.paštas nėra patvirtintas, prašome spausti čia kad aktyvuoti jūsų el.paštą",
"no-email-to-confirm": "Šis forumas reikalauja patvirtinimo el. paštu prašome spausti čia el. adreso įrašymui",
"email-confirm-failed": "Negalime patvirtinti jūsų el. adreso, prašom bandyti vėliau.",
- "confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.",
+ "confirm-email-already-sent": "Patvirtinimo laiškas išsiųstas, prašome palaukti %1 minute(s) kad išsiųstume kita",
"username-too-short": "Slapyvardis per trumpas",
"username-too-long": "Vartotojo vardas per ilgas",
"user-banned": "Vartotojas užblokuotas",
- "user-too-new": "Sorry, you are required to wait %1 second(s) before making your first post",
+ "user-too-new": "Atsiprašome, jūs įpareigoti palaukti %1 sekunde(s) prieš rašant pirmą pranešimą",
"no-category": "Tokios kategorijos nėra",
"no-topic": "Tokios temos nėra",
"no-post": "Tokio įrašo nėra",
"no-group": "Grupė neegzistuoja",
"no-user": "Tokio vartotojo nėra",
- "no-teaser": "Teaser does not exist",
+ "no-teaser": "Anonsas neegzistuoja",
"no-privileges": "Šiam veiksmui jūs neturite pakankamų privilegijų.",
- "no-emailers-configured": "No email plugins were loaded, so a test email could not be sent",
+ "no-emailers-configured": "Jokie el.pašto priedai nebuvo pakrauti, bandomasis laiškas nebus išsiųstas",
"category-disabled": "Kategorija išjungta",
"topic-locked": "Tema užrakinta",
- "post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired": "Jums galima redaguoti pranešims tik %1 sekunde(s) po parašymo",
"still-uploading": "Prašome palaukti kol bus baigti visi kėlimai į serverį",
- "content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
- "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
- "title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
- "title-too-long": "Please enter a shorter title. Titles can't be longer than %1 character(s).",
- "too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
- "too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
- "tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
- "tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
- "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
- "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
- "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
+ "content-too-short": "Prašome parašyti ilgesni pranešimą. Pranešimas turi sudaryti mažiausiai %1 simboli(us)",
+ "content-too-long": "Prašome parašyti trumpesnį pranešimą. Pranešimas negali sudaryti daugiau %1 simboli(us)",
+ "title-too-short": "Prašome įvesti ilgesni pavadinimą. Pavadinimas turi sudaryti mažiausiai %1 simboli(us)",
+ "title-too-long": "Prašome įvesti trumpersnį pavadinimą. Pavadinimas negali sudaryti daugiau %1 simboli(us)",
+ "too-many-posts": "Jus galite rašyti kas %1 sekunde(s) - prašome palaukti prieš rašant dar kartą",
+ "too-many-posts-newbie": "Kadangi esate naujas narys, jūs galite tik rašyti kas %1 sekunde(s) kol jūs pasieksite %2 reputacija - prašome palaukti prieš rašant dar kartą",
+ "tag-too-short": "Prašome įvesti ilgesnę žymą. Žyma turi sudaryti mažiausiai %1 simboli(us)",
+ "tag-too-long": "Prašome įvesti trumpesnę žymą. Žyma turi būti ne ilgesni negu %1 simboli(us)",
+ "not-enough-tags": "Neužteka žymių. Temos turi turėti mažiausiai %1 žyme(s)",
+ "too-many-tags": "Per daug žymių. Temos turi turėti daugiausiai %1 žyme(s)",
+ "file-too-big": "Didžiausias įkelimo dydis yra %1 kB - prašome kelti mažesni failą",
"cant-vote-self-post": "Jūs negalite balsuoti už savo pranešimą",
- "already-favourited": "You have already favourited this post",
- "already-unfavourited": "You have already unfavourited this post",
+ "already-favourited": "Jums jau patinka šis pranešimas",
+ "already-unfavourited": "Jums jau nebepatinka šis pranešimas",
"cant-ban-other-admins": "Jūs negalite užblokuoti kitų administratorių!",
- "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
+ "cant-remove-last-admin": "Jūs esate vienintelis administratorius. Pridėkite kitą vartotoja kaip administratorių prieš pašalindamas save",
"invalid-image-type": "Neteisingas vaizdo tipas. Leidžiami tipai :%1",
"invalid-image-extension": "Neteisingas vaizdo plėtinys",
"invalid-file-type": "Neteisingas failo tipas. Leidžiami tipai: %1",
@@ -61,30 +61,30 @@
"group-already-exists": "Tokia grupė jau egzistuoja",
"group-name-change-not-allowed": "Grupės pavadinimas keitimas neleidžiamas",
"group-already-member": "Jūs jau priklausote šiai grupei",
- "group-needs-owner": "This group requires at least one owner",
- "group-already-invited": "This user has already been invited",
- "group-already-requested": "Your membership request has already been submitted",
+ "group-needs-owner": "Ši grupė reikalauja mažiausiai vieno savininko",
+ "group-already-invited": "Šis vartotojas jau buvo pakviestas",
+ "group-already-requested": "Jūsų prašymas dėl narystes jau buvo pateiktas",
"post-already-deleted": "Šis įrašas jau buvo ištrintas",
"post-already-restored": "Šis įrašas jau atstatytas",
"topic-already-deleted": "Ši tema jau ištrinta",
"topic-already-restored": "Ši tema jau atkurta",
- "cant-purge-main-post": "You can't purge the main post, please delete the topic instead",
+ "cant-purge-main-post": "Jūs negalite išvalyti pagrindinio pranešimo, prašome ištrinkite temą nedelsiant",
"topic-thumbnails-are-disabled": "Temos paveikslėliai neleidžiami.",
"invalid-file": "Klaidingas failas",
"uploads-are-disabled": "Įkėlimai neleidžiami",
- "signature-too-long": "Sorry, your signature cannot be longer than %1 character(s).",
- "about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).",
+ "signature-too-long": "Atsiprašome, bet jūsų parašas negali būti ilgesnis negu %1 simbolis (ių)",
+ "about-me-too-long": "Atsiprašome, bet aprašymas apie jus negali būti ilgesnis negu %1 simbolis (ių)",
"cant-chat-with-yourself": "Jūs negalite susirašinėti su savimi!",
- "chat-restricted": "This user has restricted their chat messages. They must follow you before you can chat with them",
+ "chat-restricted": "Šis vartotojas apribojo savo žinutes. Jie turi sekti jus kad jūs galėtumėte pradėti bendrauti su jais",
"too-many-messages": "Išsiuntėte per daug pranešimų, kurį laiką prašome palaukti.",
"reputation-system-disabled": "Reputacijos sistema išjungta.",
- "downvoting-disabled": "Downvoting is disabled",
+ "downvoting-disabled": "Downvoting yra išjungtas",
"not-enough-reputation-to-downvote": "Jūs neturite pakankamai reputacijos balsuoti prieš šį pranešimą",
- "not-enough-reputation-to-flag": "You do not have enough reputation to flag this post",
- "already-flagged": "You have already flagged this post",
- "reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading.",
+ "not-enough-reputation-to-flag": "Jūs neturite pakankamai reputacijos kad įspėti dėl šito pranešimo",
+ "already-flagged": "Jūs jau pranešėte apie šį pranešimą",
+ "reload-failed": "NodeBB susidūrė su problema persikraunant: \"%1\", NodeBB pratęs veikti su šiuo klientu. bet jums reiktu patikrinti ką jūs darėte prieš perkraunant NodeBB",
"registration-error": "Registracijos klaida",
- "parse-error": "Something went wrong while parsing server response",
+ "parse-error": "Kažkokia klaida įvyko bandant gaut serverio atsaykmą",
"wrong-login-type-email": "Prisijungimui prašom naudoti jūsų el. adresą",
"wrong-login-type-username": "Prisijungimui prašome naudoti vartotojo vardą"
}
\ No newline at end of file
diff --git a/public/language/lt/groups.json b/public/language/lt/groups.json
index a6e81d61e8..bbd2c17770 100644
--- a/public/language/lt/groups.json
+++ b/public/language/lt/groups.json
@@ -3,15 +3,15 @@
"view_group": "Grupės peržiūra",
"owner": "Grupės savininkas",
"new_group": "Kurti naują grupę",
- "no_groups_found": "There are no groups to see",
+ "no_groups_found": "Nėra grupių kurias būtu galima matyti",
"pending.accept": "Priimti",
"pending.reject": "Atmesti",
- "pending.accept_all": "Accept All",
- "pending.reject_all": "Reject All",
- "pending.none": "There are no pending members at this time",
- "invited.none": "There are no invited members at this time",
- "invited.uninvite": "Rescind Invitation",
- "invited.search": "Search for a user to invite to this group",
+ "pending.accept_all": "Priimti visus",
+ "pending.reject_all": "Atmesti visus",
+ "pending.none": "Nėra pretenduojančių narių šiuo momentu",
+ "invited.none": "Nėra pakviestu narių šiuo momentu",
+ "invited.uninvite": "Atšaukti pakvietimą",
+ "invited.search": "Ieškoti nario kad pakviesti į šią grupę",
"cover-instructions": "Vilkite čia nuotrauką, perkelkite į reikalingą poziciją ir spauskite Save",
"cover-change": "Keisti",
"cover-save": "Saugoti",
@@ -19,31 +19,32 @@
"details.title": "Grupės detalės",
"details.members": "Narių sąrašas",
"details.pending": "Laukiantys nariai",
- "details.invited": "Invited Members",
+ "details.invited": "Pakviesti nariai",
"details.has_no_posts": "Šios grupės nariai neatliko jokių įrašų.",
"details.latest_posts": "Vėliausi įrašai",
"details.private": "Asmeniška",
- "details.grant": "Grant/Rescind Ownership",
- "details.kick": "Kick",
- "details.owner_options": "Group Administration",
+ "details.grant": "Duoti/Atšaukti Nuosavybę",
+ "details.kick": "Išmesti",
+ "details.owner_options": "Grupės Administratorius",
"details.group_name": "Grupės pavadinimas",
- "details.member_count": "Member Count",
- "details.creation_date": "Creation Date",
+ "details.member_count": "Narių skaičiuotuvas",
+ "details.creation_date": "Sukūrimo Data",
"details.description": "Aprašymas",
- "details.badge_preview": "Badge Preview",
+ "details.badge_preview": "Ženklelio Peržiūra",
"details.change_icon": "Pakeisti paveikslėlį",
"details.change_colour": "Pakeisti spalvą",
- "details.badge_text": "Badge Text",
- "details.userTitleEnabled": "Show Badge",
- "details.private_help": "If enabled, joining of groups requires approval from a group owner",
+ "details.badge_text": "Ženklelio Tekstas",
+ "details.userTitleEnabled": "Parodyti Ženklelį",
+ "details.private_help": "Jeigu įjungta, prisijungt prie grupių reikalingas patvirtinimas iš grupės administratoriaus",
"details.hidden": "Paslėptas",
- "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
- "details.delete_group": "Delete Group",
+ "details.hidden_help": "Jeigu įjungta, ši grupė bus nerodo grupių sąraše, ir vartotojus reikės kviest rankiniu būdu",
+ "details.delete_group": "Ištrinti grupe",
"event.updated": "Grupės informacija atnaujinta",
"event.deleted": "Grupė \"%1\" pašalinta",
- "membership.accept-invitation": "Accept Invitation",
- "membership.invitation-pending": "Invitation Pending",
- "membership.join-group": "Join Group",
- "membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.accept-invitation": "Priimti Kvietimą",
+ "membership.invitation-pending": "Pakvietimas Laukiamas",
+ "membership.join-group": "Prisijungti Prie Grupės",
+ "membership.leave-group": "Palikti Grupę",
+ "membership.reject": "Atšaukti",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/lt/pages.json b/public/language/lt/pages.json
index 933fd00512..067b94197f 100644
--- a/public/language/lt/pages.json
+++ b/public/language/lt/pages.json
@@ -5,8 +5,8 @@
"recent": "Paskutinės temos",
"users": "Registruoti vartotojai",
"notifications": "Pranešimai",
- "tags": "Tags",
- "tag": "Topics tagged under \"%1\"",
+ "tags": "Žymos",
+ "tag": "Temos su šia žymą \"%1\"",
"user.edit": "Redaguojama \"%1\"",
"user.following": "Vartotojas %1 seka",
"user.followers": "Žmonės, kurie seka %1",
@@ -15,7 +15,7 @@
"user.groups": "%1's grupės",
"user.favourites": "Vartotojo %1 mėgstami pranešimai",
"user.settings": "Vartotojo nustatymai",
- "user.watched": "Topics watched by %1",
- "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.",
+ "user.watched": "Temos stebimos %1",
+ "maintenance.text": "%1 dabar atnaujinimo darbuose. Prašome grįžti vėliau",
"maintenance.messageIntro": "Be to, administratorius paliko šį pranešimą:"
}
\ No newline at end of file
diff --git a/public/language/lt/search.json b/public/language/lt/search.json
index 34d00a95a7..5c56ca9768 100644
--- a/public/language/lt/search.json
+++ b/public/language/lt/search.json
@@ -1,14 +1,14 @@
{
- "results_matching": "%1 result(s) matching \"%2\", (%3 seconds)",
+ "results_matching": "%1 rezultatas(ai) atitinka \"%2\", (%3 sekundes)",
"no-matches": "Atitikmenų nerasta",
- "advanced-search": "Advanced Search",
- "in": "In",
+ "advanced-search": "Išplėstinė paieška",
+ "in": "Į",
"titles": "Antraštės",
"titles-posts": "Antraštės ir įrašai",
"posted-by": "Parašė",
"in-categories": "Kategorijose",
- "search-child-categories": "Search child categories",
- "reply-count": "Reply Count",
+ "search-child-categories": "Ieškoti vaikų kategorijas",
+ "reply-count": "Atsakymų skaičiavimas",
"at-least": "Mažiausiai",
"at-most": "Daugiausia",
"post-time": "Įrašo laikas",
@@ -23,7 +23,7 @@
"six-months": "Šeši mėnesiai",
"one-year": "Vieneri metai",
"sort-by": "Rūšiuoti pagal",
- "last-reply-time": "Last reply time",
+ "last-reply-time": "Paskutinis atsakymo laikas",
"topic-title": "Temos pavadinimas",
"number-of-replies": "Atsakymų skaičius",
"number-of-views": "Peržiūrų skaičius",
diff --git a/public/language/lt/tags.json b/public/language/lt/tags.json
index 2151f58d36..c8f2158cb0 100644
--- a/public/language/lt/tags.json
+++ b/public/language/lt/tags.json
@@ -1,7 +1,7 @@
{
"no_tag_topics": "Temų su šią žyma nėra.",
"tags": "Žymos",
- "enter_tags_here": "Enter tags here, between %1 and %2 characters each.",
- "enter_tags_here_short": "Enter tags...",
+ "enter_tags_here": "Įveskite žymas čia, tarp %1 ir %2 simbolių kiekvienam",
+ "enter_tags_here_short": "Įveskite žymas...",
"no_tags": "Žymų kolkas nėra."
}
\ No newline at end of file
diff --git a/public/language/lt/topic.json b/public/language/lt/topic.json
index 5969a8727b..2a9772ad8b 100644
--- a/public/language/lt/topic.json
+++ b/public/language/lt/topic.json
@@ -5,7 +5,7 @@
"no_topics_found": "Temų nerasta!",
"no_posts_found": "Įrašų nerasta!",
"post_is_deleted": "Šis įrašas ištrintas!",
- "topic_is_deleted": "This topic is deleted!",
+ "topic_is_deleted": "Ši tema yra ištrinta!",
"profile": "Profilis",
"posted_by": "Parašė %1",
"posted_by_guest": "Parašė svečias",
@@ -29,7 +29,7 @@
"flag_title": "Pažymėti ši pranešimą moderatoriams",
"flag_confirm": "Ar jūs tikras, kad norite pažymėti šį įrašą?",
"flag_success": "Šis pranešimas buvo pažymėtas moderatorių patikrinimui.",
- "deleted_message": "This topic has been deleted. Only users with topic management privileges can see it.",
+ "deleted_message": "Ši tema buvo ištrinta. Tik Vartotojai su temos redagavimo privilegijomis gali matyti ja",
"following_topic.message": "Dabar jūs gausite pranešimus kai kas nors atrašys šioje temoje.",
"not_following_topic.message": "Jūs daugiau negausite pranešimų iš šios temos.",
"login_to_subscribe": "Norėdami prenumeruoti šią temą, prašome prisiregistruoti arba prisijungti.",
@@ -74,7 +74,7 @@
"topic_will_be_moved_to": "Ši tema bus perkelta į kategoriją",
"fork_topic_instruction": "Pažymėkite ant įrašų, kuriuos norite perkelti į naują temą",
"fork_no_pids": "Nepasirinktas joks įrašas!",
- "fork_success": "Successfully forked topic! Click here to go to the forked topic.",
+ "fork_success": "Sėkmingai išsišakota iš temos! Spausk čia kad nueitu į išsišakota temą",
"composer.title_placeholder": "Įrašykite temos pavadinimą...",
"composer.handle_placeholder": "Vardas ir pavardė",
"composer.discard": "Atšaukti",
diff --git a/public/language/ms/category.json b/public/language/ms/category.json
index fa77df77b5..667ab36081 100644
--- a/public/language/ms/category.json
+++ b/public/language/ms/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Kategori",
+ "subcategories": "Subkategori",
"new_topic_button": "Topik Baru",
"guest-login-post": "Log masuk untuk kirim",
"no_topics": "Tiada topik dalam kategori ini. Cuba hantar topik yang baru?",
"browsing": "melihat",
"no_replies": "Tiada jawapan",
+ "no_new_posts": "Tiada kiriman baru.",
"share_this_category": "Kongsi kategori ini",
"watch": "Melihat",
"ignore": "Abai",
diff --git a/public/language/ms/email.json b/public/language/ms/email.json
index 5d55029bf5..093b25f7eb 100644
--- a/public/language/ms/email.json
+++ b/public/language/ms/email.json
@@ -1,15 +1,15 @@
{
"password-reset-requested": "Permintaan set semula kata lalaun - %1!",
"welcome-to": "Selamat datang ke %1",
- "invite": "Invitation from %1",
+ "invite": "Jemputan daripada %1",
"greeting_no_name": "Salam",
"greeting_with_name": "Salam %1",
"welcome.text1": "Terima kasih kerana mendaftar dengan %1!",
"welcome.text2": "Untuk mengaktifkan akaun anda sepenuhnya, kami perlu mengesahkan bahawa anda memiliki alamat emel yang didaftarkan.",
"welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
"welcome.cta": "Klik sini untuk sahkan emel anda",
- "invitation.text1": "%1 has invited you to join %2",
- "invitation.ctr": "Click here to create your account.",
+ "invitation.text1": "%1 telah menjemput untuk menyertai %2",
+ "invitation.ctr": "Klik sini untuk buka akaun anda.",
"reset.text1": "Kami menerima permintaan set semula kata laluan anda, kemungkinan kerana anda terlupa. Sekiranya tidak, sila abaikan emel ini.",
"reset.text2": "Untuk meneruskan dengan set semula kata laluan, sila klik pautan berikut:",
"reset.cta": "Klik sini untuk set semula kata laluan anda",
diff --git a/public/language/ms/error.json b/public/language/ms/error.json
index 49b0f5ff86..d346472fff 100644
--- a/public/language/ms/error.json
+++ b/public/language/ms/error.json
@@ -46,14 +46,14 @@
"too-many-posts-newbie": "Sebagai pengguna baru, anda hanya boleh mengirim sekali setiap %1 saat() sehinnga anda mendapat %2 reputasi - sila tunggu sebelum kiriman seterusnya",
"tag-too-short": "Sila masukkan tag yang lebih panjang. Tag mesti mengandungi sekurang-kurangnya %1 aksara()",
"tag-too-long": "Sila masukkan tag yang lebih pendek. Tag mesti mengandungi tidak lebih %1 aksara()",
- "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
- "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
+ "not-enough-tags": "Tag tidak mencukupi. Topik memerlukan sekurang-kurangnya %1 tag()",
+ "too-many-tags": "Tag terlalu banyak. Topik tidak boleh lebih %1 tag()",
"file-too-big": "Maksimum saiz fail yang dibenarkan ialah %1 kB - sila muatnaik fail yang lebih kecil",
"cant-vote-self-post": "Anda tidak boleh mengundi kiriman sendiri",
"already-favourited": "Anda telah pun menggemari kiriman ini",
"already-unfavourited": "Anda telah pun nyah-gemar kiriman ini",
"cant-ban-other-admins": "Anda tidak boleh haramkan admin / pentadbir!",
- "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
+ "cant-remove-last-admin": "Anda satu-satunya pentadbir. Tambah pentadbir lain sebelum membuang diri anda sebagai pentadbir",
"invalid-image-type": "Jenis imej tak sah. Jenis yang dibenarkan ialah: %1",
"invalid-image-extension": "Sambungan imej tak sah",
"invalid-file-type": "Jenis fail tak sah. Jenis fail yang dibenarkan ialah: %1",
@@ -72,8 +72,8 @@
"topic-thumbnails-are-disabled": "Topik kecil dilumpuhkan.",
"invalid-file": "Fail tak sah",
"uploads-are-disabled": "Muatnaik dilumpuhkan",
- "signature-too-long": "Sorry, your signature cannot be longer than %1 character(s).",
- "about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).",
+ "signature-too-long": "Maaf, tandatangan anda tidak boleh lebih %1 aksara().",
+ "about-me-too-long": "Maaf, penerangan tentang anda tidak boleh lebih %1 aksara().",
"cant-chat-with-yourself": "Anda tidak boleh sembang dengan diri sendiri!",
"chat-restricted": "Pengguna ini menyekat ruangan sembangnya. Dia hendaklah mengikut anda sebelum kalian dapat bersembang",
"too-many-messages": "Anda menghantar terlalu banyak pesanan, sila tunggu seketika.",
@@ -81,7 +81,7 @@
"downvoting-disabled": "Undi turun dilumpuhkan",
"not-enough-reputation-to-downvote": "Anda tidak mempunyai reputasi mencukupi untuk mengundi turun kiriman ini",
"not-enough-reputation-to-flag": "Anda tidak mempunyai reputasi mencukupi untuk menanda kiriman ini",
- "already-flagged": "You have already flagged this post",
+ "already-flagged": "Anda telah menanda kiriman ini",
"reload-failed": "NodeBB menemui masalah ketika muat semula: \"%1\". NodeBB akan terus melayan aset pelanggan sedia ada, tapi anda seharusnya undur perbuatan yang dilakukan sebelum muat semula.",
"registration-error": "Ralat pendaftaran.",
"parse-error": "Sesuatu tidak kena berlaku ketika menghuraikan repson pelayan (server)",
diff --git a/public/language/ms/groups.json b/public/language/ms/groups.json
index 3bc71433f1..9a83a75da2 100644
--- a/public/language/ms/groups.json
+++ b/public/language/ms/groups.json
@@ -6,12 +6,12 @@
"no_groups_found": "Tiada kumpulan untuk dilihat",
"pending.accept": "Terima",
"pending.reject": "Tolak",
- "pending.accept_all": "Accept All",
- "pending.reject_all": "Reject All",
- "pending.none": "There are no pending members at this time",
- "invited.none": "There are no invited members at this time",
- "invited.uninvite": "Rescind Invitation",
- "invited.search": "Search for a user to invite to this group",
+ "pending.accept_all": "Terima Semua",
+ "pending.reject_all": "Tolak Semua",
+ "pending.none": "Tiada ahli yang sedang menunggu buat masa ini",
+ "invited.none": "Tiada ahli yang dijemput buat masa ini",
+ "invited.uninvite": "Batalkan Jemputan",
+ "invited.search": "Cari pengguna untuk dijemput ke kumpulan ini",
"cover-instructions": "Seret dan lepas gambar, lepas ke posisi, dan tekan Simpan",
"cover-change": "Ubah",
"cover-save": "Simpan",
@@ -19,7 +19,7 @@
"details.title": "Perincian Kumpulan",
"details.members": "Senarai Ahli",
"details.pending": "Ahli Menunggu",
- "details.invited": "Invited Members",
+ "details.invited": "Ahli yang dijemput",
"details.has_no_posts": "Kumpulan ahli kumpulan ini belum membuat sebarang kiriman.",
"details.latest_posts": "Kiriman Terkini",
"details.private": "Privasi",
@@ -38,12 +38,13 @@
"details.private_help": "Jika dibolehkan, menyertai kumpulan memerlukan kelulusan pemilik kumpulan",
"details.hidden": "Sembunyi",
"details.hidden_help": "Jika dibolehkan, kumpulan ini tidak akan dijumpai di senarai kumpulan, dan pengguna hendaklah di jemput secara manual",
- "details.delete_group": "Delete Group",
+ "details.delete_group": "Padam Kumpulan",
"event.updated": "Perincian kumpulan telah dikemaskini",
"event.deleted": "Kumpulan \"%1\" telah dipadam",
- "membership.accept-invitation": "Accept Invitation",
- "membership.invitation-pending": "Invitation Pending",
- "membership.join-group": "Join Group",
- "membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.accept-invitation": "Terima Jemputan",
+ "membership.invitation-pending": "Jemputan Menunggu",
+ "membership.join-group": "Masuk Kumpulan",
+ "membership.leave-group": "Keluar Kumpulan",
+ "membership.reject": "Tolak",
+ "new-group.group_name": "Nama Kumpulan:"
}
\ No newline at end of file
diff --git a/public/language/ms/register.json b/public/language/ms/register.json
index 633ff4703d..b0a6d79507 100644
--- a/public/language/ms/register.json
+++ b/public/language/ms/register.json
@@ -15,5 +15,5 @@
"alternative_registration": "Pendaftaran Alternatif",
"terms_of_use": "Terma Penggunaan",
"agree_to_terms_of_use": "Saya bersetuju dengan Terma Penggunaan",
- "registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator."
+ "registration-added-to-queue": "Pendaftaran anda sedang dimasukkan ke barisan pengesahan. Anda akan menerima emel setelah diterima oleh pentadbir."
}
\ No newline at end of file
diff --git a/public/language/ms/topic.json b/public/language/ms/topic.json
index 0b73e10449..258f958a20 100644
--- a/public/language/ms/topic.json
+++ b/public/language/ms/topic.json
@@ -4,8 +4,8 @@
"topic_id_placeholder": "Masukkan ID topik",
"no_topics_found": "Tiada topik yang ditemui",
"no_posts_found": "Tiada kirim yang dijumpai",
- "post_is_deleted": "Kiriman ini di padam!",
- "topic_is_deleted": "This topic is deleted!",
+ "post_is_deleted": "Kiriman ini dipadam!",
+ "topic_is_deleted": "Topik ini dipadam!",
"profile": "Profil",
"posted_by": "Dikirim oleh %1",
"posted_by_guest": "Dikirim oleh pelawat",
diff --git a/public/language/ms/unread.json b/public/language/ms/unread.json
index d12320a5c9..6e23443905 100644
--- a/public/language/ms/unread.json
+++ b/public/language/ms/unread.json
@@ -5,6 +5,6 @@
"mark_as_read": "Tanda sebagai sudah dibaca",
"selected": "Dipilih",
"all": "Semua",
- "all_categories": "All categories",
+ "all_categories": "Semua Kategori",
"topics_marked_as_read.success": "Topik ditandakan sebagai sudah dibaca"
}
\ No newline at end of file
diff --git a/public/language/ms/user.json b/public/language/ms/user.json
index 21a7c0a504..66fb7492e8 100644
--- a/public/language/ms/user.json
+++ b/public/language/ms/user.json
@@ -6,12 +6,12 @@
"postcount": "Jumlah Kiriman",
"email": "Emel",
"confirm_email": "Pastikan Emel",
- "ban_account": "Ban Account",
+ "ban_account": "Haramkan Akaun",
"ban_account_confirm": "Do you really want to ban this user?",
- "unban_account": "Unban Account",
+ "unban_account": "Nyah-haram Akaun",
"delete_account": "Padam Akaun",
- "delete_account_confirm": "Anda yakin untuk paddam akaun anda? Pebuatan ini tidak boleh diundur dan anda tidak boleh memulihkan sebarang data anda.
Masukkan nama pengguna anda untuk memastikan anda benar-benar ingin memadam akaun ini.",
- "delete_this_account_confirm": "Are you sure you want to delete this account? This action is irreversible and you will not be able to recover any data
",
+ "delete_account_confirm": "Anda yakin untuk padam akaun anda? Pebuatan ini tidak boleh diundur dan anda tidak boleh memulihkan sebarang data anda.
Masukkan nama pengguna anda untuk memastikan anda benar-benar ingin memadam akaun ini.",
+ "delete_this_account_confirm": "Anda yakin untuk padam akaum ini? Pebuatan ini tidak boleh diundur dan anda tidak boleh memulihkan sebarang data
",
"fullname": "Nama penuh",
"website": "Laman Web",
"location": "Lokasi",
@@ -68,9 +68,9 @@
"settings-require-reload": "Sebahagian perubahan tetapan memerlukan segar semula. Klik sini untuk segar semula halaman ini.",
"has_no_follower": "Pengguna ini tiada pengikut :(",
"follows_no_one": "Pengguna ini tidak mengikuti sesiapa :(",
- "has_no_posts": "This user hasn't posted anything yet.",
- "has_no_topics": "This user hasn't posted any topics yet.",
- "has_no_watched_topics": "This user hasn't watched any topics yet.",
+ "has_no_posts": "Pengguna ini belum menulis sebarang kiriman lagi.",
+ "has_no_topics": "Pengguna ini belum menulis sebarang topik lagi.",
+ "has_no_watched_topics": "Pengguna ini belum melanggan sebarang topik lagi.",
"email_hidden": "Emel disembunyikan",
"hidden": "disembunyikan",
"paginate_description": "Gunakan muka surat untuk topik dan kiriman daripada penggunaan skroll infiniti",
@@ -79,8 +79,8 @@
"notification_sounds": "Mainkan bunyi apabila anda mendapat pemberitahuan",
"browsing": "Melihat-lihat Tetapan",
"open_links_in_new_tab": "Buka pautan luar di tab yang baru",
- "enable_topic_searching": "Enable In-Topic Searching",
- "topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen",
+ "enable_topic_searching": "Aktifkan Pencarian Dalam-Topik",
+ "topic_search_help": "Jika diaktifkan, pencarian dalam-topik akan membatalkan fungsi asal pencarian pelayan dan membenarkan anda untuk mencari seluruh topik, daripada menunjukkan apa yang terdapat pada skrin sahaja",
"follow_topics_you_reply_to": "Ikut topik yang anda balas",
"follow_topics_you_create": "Ikut topik yang anda buat",
"grouptitle": "Pilih nama kumpulan yang anda ingin tunjukkan",
diff --git a/public/language/ms/users.json b/public/language/ms/users.json
index f66effd754..92f95319c7 100644
--- a/public/language/ms/users.json
+++ b/public/language/ms/users.json
@@ -9,13 +9,13 @@
"filter-by": "Saring dengan",
"online-only": "Atas talian sahaja",
"picture-only": "Gambar sahaja",
- "invite": "Invite",
- "invitation-email-sent": "An invitation email has been sent to %1",
- "user_list": "User List",
- "recent_topics": "Recent Topics",
- "popular_topics": "Popular Topics",
- "unread_topics": "Unread Topics",
- "categories": "Categories",
- "tags": "Tags",
- "map": "Map"
+ "invite": "Jemput",
+ "invitation-email-sent": "Emel jemputan telah dihantar ke %1",
+ "user_list": "Senarai Pengguna",
+ "recent_topics": "Topik Terkini",
+ "popular_topics": "Topik Popular",
+ "unread_topics": "Topik Belum Dibaca",
+ "categories": "Kategori",
+ "tags": "Tag",
+ "map": "Peta"
}
\ No newline at end of file
diff --git a/public/language/nb/category.json b/public/language/nb/category.json
index f4b2298a0d..24697ca04f 100644
--- a/public/language/nb/category.json
+++ b/public/language/nb/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Nytt emne",
"guest-login-post": "Logg inn til innlegg",
"no_topics": "Det er ingen emner i denne kategorien Hvorfor ikke lage et?",
"browsing": "leser",
"no_replies": "Ingen har svart",
+ "no_new_posts": "No new posts.",
"share_this_category": "Del denne kategorien",
"watch": "Overvåk",
"ignore": "Ignorer",
diff --git a/public/language/nb/groups.json b/public/language/nb/groups.json
index 62e2979113..f4c8e9639c 100644
--- a/public/language/nb/groups.json
+++ b/public/language/nb/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/nl/category.json b/public/language/nl/category.json
index 7421cee928..8bed1f869f 100644
--- a/public/language/nl/category.json
+++ b/public/language/nl/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Nieuw onderwerp",
"guest-login-post": "Log in om een reactie te plaatsen",
"no_topics": "Er zijn geen onderwerpen in deze categorie. Waarom maak je er niet een aan?",
"browsing": "browsing",
"no_replies": "Niemand heeft gereageerd",
+ "no_new_posts": "No new posts.",
"share_this_category": "Deel deze categorie",
"watch": "Volgen",
"ignore": "Negeren",
diff --git a/public/language/nl/groups.json b/public/language/nl/groups.json
index d91ad473b0..a22c5cc62e 100644
--- a/public/language/nl/groups.json
+++ b/public/language/nl/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/pl/category.json b/public/language/pl/category.json
index 5efaa0f71c..74e175a22b 100644
--- a/public/language/pl/category.json
+++ b/public/language/pl/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Nowy wątek",
"guest-login-post": "Zaloguj się, aby napisać.",
"no_topics": "W tej kategorii nie ma jeszcze żadnych wątków. Dlaczego ty nie utworzysz jakiegoś?",
"browsing": "przegląda",
"no_replies": "Nikt jeszcze nie odpowiedział",
+ "no_new_posts": "No new posts.",
"share_this_category": "Udostępnij tę kategorię",
"watch": "Watch",
"ignore": "Ignoruj",
diff --git a/public/language/pl/groups.json b/public/language/pl/groups.json
index 90c7195a0b..3efc724871 100644
--- a/public/language/pl/groups.json
+++ b/public/language/pl/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/pt_BR/category.json b/public/language/pt_BR/category.json
index f996f22b23..c8802e7429 100644
--- a/public/language/pt_BR/category.json
+++ b/public/language/pt_BR/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Novo Tópico",
"guest-login-post": "Logue-se para postar",
"no_topics": "Não tem nenhum tópico nesta categoria. Por que você não tenta postar o algum?",
"browsing": "navegando",
"no_replies": "Ninguém respondeu",
+ "no_new_posts": "No new posts.",
"share_this_category": "Compartilhar esta categoria",
"watch": "Assistir",
"ignore": "Ignorar",
diff --git a/public/language/pt_BR/groups.json b/public/language/pt_BR/groups.json
index 5391da0e8f..04fe94a34b 100644
--- a/public/language/pt_BR/groups.json
+++ b/public/language/pt_BR/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/ro/category.json b/public/language/ro/category.json
index 6bc07f8f8c..cad17212dc 100644
--- a/public/language/ro/category.json
+++ b/public/language/ro/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Subiect Nou",
"guest-login-post": "Log in to post",
"no_topics": "Nu există nici un subiect de discuție în această categorie. De ce nu încerci să postezi tu unul?",
"browsing": "navighează",
"no_replies": "Nu a răspuns nimeni",
+ "no_new_posts": "No new posts.",
"share_this_category": "Distribuie această categorie",
"watch": "Watch",
"ignore": "Ignoră",
diff --git a/public/language/ro/groups.json b/public/language/ro/groups.json
index 16d4fbb1d3..b8e9bc1c19 100644
--- a/public/language/ro/groups.json
+++ b/public/language/ro/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/ru/category.json b/public/language/ru/category.json
index c584f9f4c6..ed08c76fd3 100644
--- a/public/language/ru/category.json
+++ b/public/language/ru/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Создать тему",
"guest-login-post": "Войдите чтобы создавать сообщения",
"no_topics": "В этой категории еще нет тем. Почему бы вам не создать первую?",
"browsing": "просматривают",
"no_replies": "Нет ответов",
+ "no_new_posts": "No new posts.",
"share_this_category": "Поделиться этой категорией",
"watch": "Следить",
"ignore": "Игнорировать",
diff --git a/public/language/ru/groups.json b/public/language/ru/groups.json
index d4c115bd0d..16b6277be6 100644
--- a/public/language/ru/groups.json
+++ b/public/language/ru/groups.json
@@ -38,12 +38,13 @@
"details.private_help": "Если включено, вступление в группы будет подтверждаться владельцем группы",
"details.hidden": "Скрыто",
"details.hidden_help": "Если включено, группа не будет показываться в списках, а пользователи должны приглашаться вручную",
- "details.delete_group": "Delete Group",
+ "details.delete_group": "Удалить группу",
"event.updated": "Настройки группы обновлены",
"event.deleted": "Группа \"%1\" удалена",
- "membership.accept-invitation": "Accept Invitation",
- "membership.invitation-pending": "Invitation Pending",
- "membership.join-group": "Join Group",
- "membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.accept-invitation": "Принять приглашение",
+ "membership.invitation-pending": "Заявка на рассмотрении",
+ "membership.join-group": "Вступить",
+ "membership.leave-group": "Покинуть",
+ "membership.reject": "Отклонить",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/rw/category.json b/public/language/rw/category.json
index fa8c80e689..de8b548b1f 100644
--- a/public/language/rw/category.json
+++ b/public/language/rw/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Icyiciro",
+ "subcategories": "Icyiciro gito",
"new_topic_button": "Ikiganiro Gishya",
"guest-login-post": "Injiramo wandike",
"no_topics": "Nta biganiro byo muri iki cyiciro bihari Watangije kimwe hano se?",
"browsing": "abari kureba",
"no_replies": "Nta muntu urasubiza",
+ "no_new_posts": "Nta bishya.",
"share_this_category": "Sangiza iki cyiciro",
"watch": "Kurikirana",
"ignore": "Ihorere",
diff --git a/public/language/rw/global.json b/public/language/rw/global.json
index a00250d8cc..a9470c743f 100644
--- a/public/language/rw/global.json
+++ b/public/language/rw/global.json
@@ -9,7 +9,7 @@
"404.message": "Biragaragara ko wageze kuri paji itariho ikintu. Subira Imbere.",
"500.title": "Hari ikibazo cya tekinike imbere. ",
"500.message": "Ye baba we! Ntibikunze!",
- "register": "Iyandikishe\n",
+ "register": "Iyandikishe",
"login": "Injiramo",
"please_log_in": "Injiramo",
"logout": "Sohokamo",
@@ -21,11 +21,11 @@
"pagination": "Umubare wa Paji",
"pagination.out_of": "%1 muri %2",
"pagination.enter_index": "Shyiramo umubare",
- "header.admin": "Umuyobozi Mukuru",
+ "header.admin": "Ubuyobozi",
"header.categories": "Ibyiciro",
"header.recent": "Ibiheruka",
"header.unread": "Ibitarasomwa",
- "header.tags": "Ibimenyetso",
+ "header.tags": "Utumenyetso",
"header.popular": "Ibikunzwe",
"header.users": "Abantu",
"header.groups": "Amatsinda",
@@ -41,7 +41,7 @@
"alert.success": "Byaciyemo",
"alert.error": "Byanze",
"alert.banned": "Birukanwe",
- "alert.banned.message": "Ubu ngubu umaze gukumirirwa, ukaba ugiye no guhita usohorwamo",
+ "alert.banned.message": "Ubu ngubu umaze gukumirwa, ugiye guhita usohorwamo",
"alert.unfollow": "Ntabwo ukimukurikira %1!",
"alert.follow": "Ubu ngubu ukurikira %1!",
"online": "Ku Murongo",
@@ -54,7 +54,7 @@
"more": "Ibindi",
"posted_ago_by_guest": "byashyizweho %1 na Umushyitsi",
"posted_ago_by": "byashyizweho %1 na %2",
- "posted_ago": "byashyizweho %1",
+ "posted_ago": "kuva %1",
"posted_in_ago_by_guest": "byashyizwe muri %1 %2 na Umushyitsi",
"posted_in_ago_by": "byashyizwe muri %1 %2 na %3",
"posted_in_ago": "byashyizwe muri %1 %2",
@@ -75,7 +75,7 @@
"guest": "Umushyitsi",
"guests": "Abashyitsi",
"updated.title": "Urubuga Rushyizwe ku Gihe",
- "updated.message": "Uru rubuga rumaze gushyirwa ku gihe. Kanda hano kugirango ubashe kuvugurura paji uriho. ",
+ "updated.message": "Uru rubuga rumaze kuvugururwa. Kanda hano kugirango niba hari ibyahindutse kuri iyi paji bikugereho. ",
"privacy": "Umuhezo",
"follow": "Kurikira",
"unfollow": "Reka Gukurikira",
diff --git a/public/language/rw/groups.json b/public/language/rw/groups.json
index 6d1d5f5f69..b1d7e5de19 100644
--- a/public/language/rw/groups.json
+++ b/public/language/rw/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Ubutumire Buracyategereje",
"membership.join-group": "Injira mu Itsinda",
"membership.leave-group": "Va mu Itsinda",
- "membership.reject": "Hakanira"
+ "membership.reject": "Hakanira",
+ "new-group.group_name": "Izina ry'Itsinda:"
}
\ No newline at end of file
diff --git a/public/language/rw/topic.json b/public/language/rw/topic.json
index adba67df80..6e4804ed8b 100644
--- a/public/language/rw/topic.json
+++ b/public/language/rw/topic.json
@@ -26,8 +26,8 @@
"flag": "Tambikana",
"locked": "Birafungiranye",
"bookmark_instructions": "Kanda hano kugirango ugezwe aho wari ugeze usoma. Niba utabishaka, wafunga aka kadirishya. ",
- "flag_title": "Menyesha ibi ubuyobozi niba ubona bidakwiye",
- "flag_confirm": "Wiringiye neza ko ushaka kumenyesha ubuyobozi ibi? ",
+ "flag_title": "Bimenyeshe ubuyobozi",
+ "flag_confirm": "Wiringiye neza ko ushaka kumenyesha ibi ubuyobozi? ",
"flag_success": "Bimaze kumenyeshwa ubuyobozi ngo bikurikiranwe. ",
"deleted_message": "Iki kiganiro cyamaze gukurwaho. Abantu babifitiye uburenganzira ni bo bonyine bashobora kukibona. ",
"following_topic.message": "Ntabwo uzongera kubimenyeshwa nihagira umuntu ugira icyo yandika kuri iki kiganiro. ",
diff --git a/public/language/sc/category.json b/public/language/sc/category.json
index 25d11361e2..57d0ccd73e 100644
--- a/public/language/sc/category.json
+++ b/public/language/sc/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Arresonada Noa",
"guest-login-post": "Log in to post",
"no_topics": "Non bi sunt arresonadas in custa creze. Pro ite non nde pones una?",
"browsing": "navighende",
"no_replies": "Perunu at rispostu",
+ "no_new_posts": "No new posts.",
"share_this_category": "Share this category",
"watch": "Watch",
"ignore": "Ignore",
diff --git a/public/language/sc/groups.json b/public/language/sc/groups.json
index 1e1623c38f..3bd63ad94a 100644
--- a/public/language/sc/groups.json
+++ b/public/language/sc/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/sk/category.json b/public/language/sk/category.json
index 08035d7fdc..2370e4dec8 100644
--- a/public/language/sk/category.json
+++ b/public/language/sk/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Nová téma",
"guest-login-post": "Log in to post",
"no_topics": "V tejto kategórií zatiaľ nie sú žiadne príspevky. Môžeš byť prvý!",
"browsing": "prehliada",
"no_replies": "Nikdo ešte neodpovedal",
+ "no_new_posts": "No new posts.",
"share_this_category": "zdielaj túto kategóriu",
"watch": "Watch",
"ignore": "Ignoruj",
diff --git a/public/language/sk/groups.json b/public/language/sk/groups.json
index 1e1623c38f..3bd63ad94a 100644
--- a/public/language/sk/groups.json
+++ b/public/language/sk/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/sr/category.json b/public/language/sr/category.json
index 57bcb77b34..5ab350780e 100644
--- a/public/language/sr/category.json
+++ b/public/language/sr/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Nova Tema",
"guest-login-post": "Пријавите се за слање порука",
"no_topics": "Ne postoji nijedna tema u ovoj kategoriji. Zasto ne bi postavio jednu?",
"browsing": "gleda",
"no_replies": "Jos uvek nema odgovora",
+ "no_new_posts": "No new posts.",
"share_this_category": "Podeli ovu kategoriju",
"watch": "Прати",
"ignore": "Игнориши",
diff --git a/public/language/sr/groups.json b/public/language/sr/groups.json
index a4666c6d8f..d0d34f1efd 100644
--- a/public/language/sr/groups.json
+++ b/public/language/sr/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/sv/category.json b/public/language/sv/category.json
index 3fdd64e037..b83dbb74e6 100644
--- a/public/language/sv/category.json
+++ b/public/language/sv/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Nytt ämne",
"guest-login-post": "Logga in för att posta",
"no_topics": "Det finns inga ämnen i denna kategori. Varför skapar inte du ett ämne?",
"browsing": "läser",
"no_replies": "Ingen har svarat",
+ "no_new_posts": "No new posts.",
"share_this_category": "Dela den här kategorin",
"watch": "Bevaka",
"ignore": "Ignorera",
diff --git a/public/language/sv/email.json b/public/language/sv/email.json
index f71376777c..74f1366e24 100644
--- a/public/language/sv/email.json
+++ b/public/language/sv/email.json
@@ -1,15 +1,15 @@
{
"password-reset-requested": "Återställning av lösenord efterfrågat - %1!",
"welcome-to": "Välkommen till %1",
- "invite": "Invitation from %1",
+ "invite": "Inbjudan ifrån %1",
"greeting_no_name": "Hej",
"greeting_with_name": "Hej %1",
"welcome.text1": "Tack för att du registerar dig på %1!",
"welcome.text2": "För att slutföra aktiveringen av ditt konto, behöver vi verifiera att du har tillgång till den epostadress du registrerade dig med.",
- "welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
+ "welcome.text3": "En administrator har accepterat din registreringsansökan. Du kan logga in med ditt användarnamn och lösenord nu.",
"welcome.cta": "Klicka här för att bekräfta din epostadress ",
- "invitation.text1": "%1 has invited you to join %2",
- "invitation.ctr": "Click here to create your account.",
+ "invitation.text1": "%1 har bjudit in dig till %2",
+ "invitation.ctr": "Klicka här för att skapa ditt konto.",
"reset.text1": "Vi fick en förfrågan om att återställa ditt lösenord, möjligen för att du har glömt det. Om detta inte är fallet, så kan du bortse från det här epostmeddelandet. ",
"reset.text2": "För att fortsätta med återställning av lösenordet så kan du klicka på följande länk:",
"reset.cta": "Klicka här för att återställa ditt lösenord",
diff --git a/public/language/sv/error.json b/public/language/sv/error.json
index 38992271d5..109a7e7c6a 100644
--- a/public/language/sv/error.json
+++ b/public/language/sv/error.json
@@ -2,7 +2,7 @@
"invalid-data": "Ogiltig data",
"not-logged-in": "Du verkar inte vara inloggad.",
"account-locked": "Ditt konto har tillfälligt blivit låst",
- "search-requires-login": "Searching requires an account - please login or register.",
+ "search-requires-login": "Sökning kräver ett konto, var god logga in eller registrera dig.",
"invalid-cid": "Ogiltigt id för kategori",
"invalid-tid": "Ogiltigt id för ämne",
"invalid-pid": "Ogiltigt id för inlägg",
@@ -18,14 +18,14 @@
"username-taken": "Användarnamn upptaget",
"email-taken": "Epostadress upptagen",
"email-not-confirmed": "Din epostadress är ännu inte bekräftad. Klicka här för att bekräfta din epostadress.",
- "email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.",
- "no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
- "email-confirm-failed": "We could not confirm your email, please try again later.",
- "confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.",
+ "email-not-confirmed-chat": "Du kan ej använda chatten förrän din epostadress har blivit bekräftad, var god klicka här för att bekräfta din epostadress.",
+ "no-email-to-confirm": "Detta forum kräver bekräftning av epostadresser, var god klicka här för att fylla i en epostadress",
+ "email-confirm-failed": "Vi kunde ej bekräfta din epostadress, var god försök igen senare.",
+ "confirm-email-already-sent": "Bekräftningsbrev redan skickat, var god vänta %1 minut(er) innan du skickar ett nytt.",
"username-too-short": "Användarnamnet är för kort",
"username-too-long": "Användarnamnet är för långt",
"user-banned": "Användare bannlyst",
- "user-too-new": "Sorry, you are required to wait %1 second(s) before making your first post",
+ "user-too-new": "Du måste vänta %1 sekund(er) innan du gör ditt första inlägg",
"no-category": "Kategorin hittades inte",
"no-topic": "Ämnet hittades inte",
"no-post": "Inlägget hittades inte",
@@ -36,52 +36,52 @@
"no-emailers-configured": "Inga tillägg för epostadress har laddats, så något textmeddelande kunde inte skickas",
"category-disabled": "Kategorin inaktiverad",
"topic-locked": "Ämnet låst",
- "post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired": "Du kan endast ändra inlägg inom %1 sekund(er) efter att ha skickat det",
"still-uploading": "Vänta medan uppladdningen slutförs.",
- "content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
- "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
- "title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
- "title-too-long": "Please enter a shorter title. Titles can't be longer than %1 character(s).",
- "too-many-posts": "You can only post once every %1 second(s) - please wait before posting again",
- "too-many-posts-newbie": "As a new user, you can only post once every %1 second(s) until you have earned %2 reputation - please wait before posting again",
- "tag-too-short": "Please enter a longer tag. Tags should contain at least %1 character(s)",
- "tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
- "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
- "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
- "file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
+ "content-too-short": "Skriv ett längre inlägg. Inlägg måste innehålla minst %1 tecken.",
+ "content-too-long": "Skriv ett kortare inlägg. Inlägg kan inte innehålla mer än %1 tecken.",
+ "title-too-short": "Skriv en längre rubrik. Rubriker måste innehålla minst %1 tecken.",
+ "title-too-long": "Skriv en kortare rubrik. Rubriker kan inte innehålla mer än %1 tecken.",
+ "too-many-posts": "Du måste vänta minst %1 sekund(er) mellan varje inlägg",
+ "too-many-posts-newbie": "Som ny användare måste du vänta %1 sekund(er) mellan varje inlägg tills dess du har %2 förtroende",
+ "tag-too-short": "Fyll i ett längre märkord. Märkord måste vara minst %1 tecken långa",
+ "tag-too-long": "Fyll i ett kortare märkord. Märkord kan ej vara längre än %1 tecken långa",
+ "not-enough-tags": "Ej tillräckligt många märkord. Ämnen måste ha minst %1 märkord",
+ "too-many-tags": "För många märkord. Ämnen kan ej har mer än %1 märkord",
+ "file-too-big": "Den maximalt tillåtna filstorleken är %1 kB - ladda upp en mindre fil",
"cant-vote-self-post": "Du kan inte rösta på ditt eget inlägg.",
"already-favourited": "Du har redan favoriserat det här inlägget",
"already-unfavourited": "Du har redan avfavoriserat det här inlägget",
"cant-ban-other-admins": "Du kan inte bannlysa andra administratörer.",
- "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
+ "cant-remove-last-admin": "Du är den enda administratören. Lägg till en annan användare som administratör innan du tar bort dig själv.",
"invalid-image-type": "Ogiltig bildtyp. Tillåtna typer är: % 1",
"invalid-image-extension": "Ogiltigt bildformat",
"invalid-file-type": "Ogiltig filtyp. Tillåtna typer är: % 1",
"group-name-too-short": "Gruppnamnet är för kort",
"group-already-exists": "Gruppen existerar redan",
"group-name-change-not-allowed": "Gruppnamnet får inte ändras",
- "group-already-member": "You are already part of this group",
- "group-needs-owner": "This group requires at least one owner",
- "group-already-invited": "This user has already been invited",
- "group-already-requested": "Your membership request has already been submitted",
+ "group-already-member": "Du är redan en del av gruppen",
+ "group-needs-owner": "Gruppen kräver minst en ägare",
+ "group-already-invited": "Användaren har redan bjudits in",
+ "group-already-requested": "Din medlemsskapsförfrågan har redan skickats",
"post-already-deleted": "Inlägget är redan raderat",
"post-already-restored": "Inlägget är redan återställt",
"topic-already-deleted": "Ämnet är redan raderat",
"topic-already-restored": "Ämnet är redan återställt",
- "cant-purge-main-post": "You can't purge the main post, please delete the topic instead",
+ "cant-purge-main-post": "Huvudinlägg kan ej rensas, ta bort ämnet istället",
"topic-thumbnails-are-disabled": "Miniatyrbilder för ämnen är inaktiverat",
"invalid-file": "Ogiltig fil",
"uploads-are-disabled": "Uppladdningar är inaktiverat",
- "signature-too-long": "Sorry, your signature cannot be longer than %1 character(s).",
- "about-me-too-long": "Sorry, your about me cannot be longer than %1 character(s).",
+ "signature-too-long": "Din signatur kan inte vara längre än %1 tecken.",
+ "about-me-too-long": "Din om mig kan inte vara längre än %1 tecken.",
"cant-chat-with-yourself": "Du kan inte chatta med dig själv.",
"chat-restricted": "Denna användaren har begränsat sina chatt-meddelanden. Användaren måste följa dig innan ni kan chatta med varann",
- "too-many-messages": "You have sent too many messages, please wait awhile.",
+ "too-many-messages": "Du har skickat för många meddelanden, var god vänta",
"reputation-system-disabled": "Ryktessystemet är inaktiverat.",
"downvoting-disabled": "Nedröstning är inaktiverat",
"not-enough-reputation-to-downvote": "Du har inte tillräckligt förtroende för att rösta ner det här meddelandet",
"not-enough-reputation-to-flag": "Du har inte tillräckligt förtroende för att flagga det här inlägget.",
- "already-flagged": "You have already flagged this post",
+ "already-flagged": "Du har redan flaggat det här inlägget",
"reload-failed": "NodeBB stötte på problem med att ladda om: \"%1\". NodeBB kommer fortsätta servera den befintliga resurser till klienten, men du borde återställa det du gjorde alldeles innan du försökte ladda om.",
"registration-error": "Registreringsfel",
"parse-error": "Något gick fel vid tolkning av svar från servern",
diff --git a/public/language/sv/groups.json b/public/language/sv/groups.json
index 2cb6de26df..248beda16e 100644
--- a/public/language/sv/groups.json
+++ b/public/language/sv/groups.json
@@ -1,49 +1,50 @@
{
"groups": "Grupper",
"view_group": "Visa grupp ",
- "owner": "Group Owner",
- "new_group": "Create New Group",
- "no_groups_found": "There are no groups to see",
- "pending.accept": "Accept",
- "pending.reject": "Reject",
- "pending.accept_all": "Accept All",
- "pending.reject_all": "Reject All",
- "pending.none": "There are no pending members at this time",
- "invited.none": "There are no invited members at this time",
- "invited.uninvite": "Rescind Invitation",
- "invited.search": "Search for a user to invite to this group",
- "cover-instructions": "Drag and Drop a photo, drag to position, and hit Save",
- "cover-change": "Change",
- "cover-save": "Save",
- "cover-saving": "Saving",
+ "owner": "Gruppägare",
+ "new_group": "Skapa ny grupp",
+ "no_groups_found": "Det finns inga grupper att se",
+ "pending.accept": "Acceptera",
+ "pending.reject": "Neka",
+ "pending.accept_all": "Acceptera alla",
+ "pending.reject_all": "Neka alla",
+ "pending.none": "Det finns inga väntande medlemmar just nu",
+ "invited.none": "Det finns inga inbjudna medlemmar just nu",
+ "invited.uninvite": "Dra tillbaka inbjudan",
+ "invited.search": "Sök efter en användare att lägga till i denna grupp",
+ "cover-instructions": "Dra och släpp ett foto, dra till position och tryck Spara",
+ "cover-change": "Ändra",
+ "cover-save": "Spara",
+ "cover-saving": "Sparar",
"details.title": "Detaljer för gruppen ",
"details.members": "Medlemmar",
- "details.pending": "Pending Members",
- "details.invited": "Invited Members",
+ "details.pending": "Väntande medlemmar",
+ "details.invited": "Inbjudna medlemmar",
"details.has_no_posts": "Den här gruppens medlemmar har inte skrivit några inlägg.",
"details.latest_posts": "Senaste inlägg",
- "details.private": "Private",
- "details.grant": "Grant/Rescind Ownership",
- "details.kick": "Kick",
- "details.owner_options": "Group Administration",
- "details.group_name": "Group Name",
- "details.member_count": "Member Count",
- "details.creation_date": "Creation Date",
- "details.description": "Description",
- "details.badge_preview": "Badge Preview",
- "details.change_icon": "Change Icon",
- "details.change_colour": "Change Colour",
- "details.badge_text": "Badge Text",
- "details.userTitleEnabled": "Show Badge",
- "details.private_help": "If enabled, joining of groups requires approval from a group owner",
- "details.hidden": "Hidden",
- "details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
- "details.delete_group": "Delete Group",
- "event.updated": "Group details have been updated",
- "event.deleted": "The group \"%1\" has been deleted",
- "membership.accept-invitation": "Accept Invitation",
- "membership.invitation-pending": "Invitation Pending",
- "membership.join-group": "Join Group",
- "membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "details.private": "Privat",
+ "details.grant": "Ge/Ta ifrån ägarskap",
+ "details.kick": "Sparka ut",
+ "details.owner_options": "Gruppadministration",
+ "details.group_name": "Gruppnamn",
+ "details.member_count": "Medlemsantal",
+ "details.creation_date": "Skapatdatum",
+ "details.description": "Beskrivning",
+ "details.badge_preview": "Förhandsgranskning av märke",
+ "details.change_icon": "Byt ikon",
+ "details.change_colour": "Byt färg",
+ "details.badge_text": "Märkestext",
+ "details.userTitleEnabled": "Visa märke",
+ "details.private_help": "Om aktiverat kommer en gruppägare behöva godkänna nya gruppmedlemmar",
+ "details.hidden": "Dold",
+ "details.hidden_help": "Om aktiverat kommer gruppen inte synas i grupplistan och användare måste bli inbjudna manuellt",
+ "details.delete_group": "Ta bort grupp",
+ "event.updated": "Gruppdetaljerna har uppdaterats",
+ "event.deleted": "Gruppen \"%1\" har tagits bort",
+ "membership.accept-invitation": "Acceptera inbjudan",
+ "membership.invitation-pending": "Inbjudan väntar på svar",
+ "membership.join-group": "Gå med i grupp",
+ "membership.leave-group": "Lämna grupp",
+ "membership.reject": "Neka",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/sv/pages.json b/public/language/sv/pages.json
index 94c6a26d0e..b05979fb58 100644
--- a/public/language/sv/pages.json
+++ b/public/language/sv/pages.json
@@ -5,17 +5,17 @@
"recent": "Senaste ämnena",
"users": "Registrerade användare",
"notifications": "Notiser",
- "tags": "Tags",
- "tag": "Topics tagged under \"%1\"",
+ "tags": "Märkord",
+ "tag": "Ämnen märkta med \"%1\"",
"user.edit": "Ändrar \"%1\"",
"user.following": "Personer %1 Följer",
"user.followers": "Personer som följer %1",
"user.posts": "Inlägg skapat av %1",
"user.topics": "Ämnen skapade av %1",
- "user.groups": "%1's Groups",
+ "user.groups": "%1s grupper",
"user.favourites": "%1's favorit-inlägg",
"user.settings": "Avnändarinställningar",
- "user.watched": "Topics watched by %1",
+ "user.watched": "Ämnen bevakade av %1",
"maintenance.text": "%1 genomgår underhåll just nu. Vänligen kom tillbaka lite senare.",
"maintenance.messageIntro": "Ytterligare så lämnade administratören detta meddelande:"
}
\ No newline at end of file
diff --git a/public/language/sv/search.json b/public/language/sv/search.json
index c023bf5927..eeb5a36feb 100644
--- a/public/language/sv/search.json
+++ b/public/language/sv/search.json
@@ -1,40 +1,40 @@
{
"results_matching": "%1 resultat matchar \"%2\", (%3 sekunder)",
"no-matches": "Inga träffar",
- "advanced-search": "Advanced Search",
- "in": "In",
- "titles": "Titles",
- "titles-posts": "Titles and Posts",
- "posted-by": "Posted by",
- "in-categories": "In Categories",
- "search-child-categories": "Search child categories",
- "reply-count": "Reply Count",
- "at-least": "At least",
- "at-most": "At most",
- "post-time": "Post time",
- "newer-than": "Newer than",
- "older-than": "Older than",
- "any-date": "Any date",
- "yesterday": "Yesterday",
+ "advanced-search": "Avancerad sökning",
+ "in": "i",
+ "titles": "Ämnen",
+ "titles-posts": "Ämnen och Inlägg",
+ "posted-by": "Skapad av",
+ "in-categories": "I kategorier",
+ "search-child-categories": "Sök i underkategorier",
+ "reply-count": "Svarsantal",
+ "at-least": "Som minst",
+ "at-most": "Som mest",
+ "post-time": "Inläggstid",
+ "newer-than": "Yngre än",
+ "older-than": "Äldre än",
+ "any-date": "Alla datum",
+ "yesterday": "Igår",
"one-week": "En vecka",
"two-weeks": "Två veckor",
"one-month": "En månad",
- "three-months": "Three months",
- "six-months": "Six months",
- "one-year": "One year",
- "sort-by": "Sort by",
- "last-reply-time": "Last reply time",
- "topic-title": "Topic title",
- "number-of-replies": "Number of replies",
- "number-of-views": "Number of views",
- "topic-start-date": "Topic start date",
- "username": "Username",
- "category": "Category",
- "descending": "In descending order",
- "ascending": "In ascending order",
+ "three-months": "Tre månader",
+ "six-months": "Sex månader",
+ "one-year": "Ett år",
+ "sort-by": "Sortera på",
+ "last-reply-time": "Senaste svarstiden",
+ "topic-title": "Ämnestitel",
+ "number-of-replies": "Antal svar",
+ "number-of-views": "Antal visningar",
+ "topic-start-date": "Startdatum för ämne",
+ "username": "Användarnamn",
+ "category": "Kategori",
+ "descending": "I fallande ordning",
+ "ascending": "I stigande ordning",
"save-preferences": "Spara inställningar",
- "clear-preferences": "Clear preferences",
- "search-preferences-saved": "Search preferences saved",
- "search-preferences-cleared": "Search preferences cleared",
- "show-results-as": "Show results as"
+ "clear-preferences": "Rensa inställningar",
+ "search-preferences-saved": "Sökinställningar sparade",
+ "search-preferences-cleared": "Sökinställningar rensade",
+ "show-results-as": "Visa resultat som"
}
\ No newline at end of file
diff --git a/public/language/sv/tags.json b/public/language/sv/tags.json
index d846962ea4..b3fbeebd24 100644
--- a/public/language/sv/tags.json
+++ b/public/language/sv/tags.json
@@ -1,7 +1,7 @@
{
"no_tag_topics": "Det finns inga ämnen med detta märkord.",
"tags": "Märkord",
- "enter_tags_here": "Enter tags here, between %1 and %2 characters each.",
+ "enter_tags_here": "Fyll i märkord på mellan %1 och %2 tecken här.",
"enter_tags_here_short": "Ange taggar...",
"no_tags": "Det finns inga märkord ännu."
}
\ No newline at end of file
diff --git a/public/language/sv/topic.json b/public/language/sv/topic.json
index d589412c3a..15befb34f1 100644
--- a/public/language/sv/topic.json
+++ b/public/language/sv/topic.json
@@ -34,7 +34,7 @@
"not_following_topic.message": "Du kommer inte längre få notiser från detta ämne.",
"login_to_subscribe": "Var god registrera eller logga in för att kunna prenumerera på detta ämne.",
"markAsUnreadForAll.success": "Ämne markerat som oläst av alla.",
- "watch": "Följ",
+ "watch": "Bevaka",
"unwatch": "Sluta bevaka",
"watch.title": "Få notis om nya svar till det här ämnet",
"unwatch.title": "Sluta bevaka detta ämne",
diff --git a/public/language/th/category.json b/public/language/th/category.json
index bf35101ba9..66ae73ac7b 100644
--- a/public/language/th/category.json
+++ b/public/language/th/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "กระทู้",
"guest-login-post": "เข้าสู่ระบบเพื่อโพส",
"no_topics": "ยังไม่มีกระทู้ในหมวดนี้ โพสต์กระทู้แรก?",
"browsing": "เรียกดู",
"no_replies": "ยังไม่มีใครตอบ",
+ "no_new_posts": "No new posts.",
"share_this_category": "แชร์ Category นี้",
"watch": "Watch",
"ignore": "ไม่ต้องสนใจอีก",
diff --git a/public/language/th/groups.json b/public/language/th/groups.json
index 027579e466..e1f567f52e 100644
--- a/public/language/th/groups.json
+++ b/public/language/th/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/tr/category.json b/public/language/tr/category.json
index b78064fb51..dec48d0741 100644
--- a/public/language/tr/category.json
+++ b/public/language/tr/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Kategori",
+ "subcategories": "Alt kategoriler",
"new_topic_button": "Yeni Başlık",
"guest-login-post": "Göndermek için giriş yapın",
"no_topics": " Bu kategoride hiç konu yok. Yeni bir konu açmak istemez misiniz?",
"browsing": "gözden geçiriliyor",
"no_replies": "Kimse yanıtlamadı",
+ "no_new_posts": "Yeni ileti yok",
"share_this_category": "Bu kategoriyi paylaş",
"watch": "İzle",
"ignore": "Yoksay",
diff --git a/public/language/tr/email.json b/public/language/tr/email.json
index cca2d80594..da6f0a2da8 100644
--- a/public/language/tr/email.json
+++ b/public/language/tr/email.json
@@ -1,15 +1,15 @@
{
"password-reset-requested": "Parola Değiştirme İsteği Gönderildi",
"welcome-to": "Hoşgeldiniz",
- "invite": "Invitation from %1",
+ "invite": "%1 sizi davet etti",
"greeting_no_name": "Merhaba",
"greeting_with_name": "Merhaba %1",
"welcome.text1": "Kaydolduğunuz için teşekkürler!",
"welcome.text2": "Hesabınızı aktif hale getirmek için, kaydolduğunuz e-posta adresinin size ait olduğunu onaylamamız gerekiyor.",
- "welcome.text3": "An administrator has accepted your registration application. You can login with your username/password now.",
+ "welcome.text3": "Yönetici kayıt olma isteğinizi kabul etti. Kullanıcı adı/şifre ile giriş yapabilirsiniz.",
"welcome.cta": "E-posta adresinizi onaylamak için buraya tıklayın",
- "invitation.text1": "%1 has invited you to join %2",
- "invitation.ctr": "Click here to create your account.",
+ "invitation.text1": "%1 sizi %2 ye katılmaya davet etti",
+ "invitation.ctr": "Hesap oluşturmak için buraya tıklayın",
"reset.text1": "Şifrenizi değiştirmek istediğinize dair bir ileti aldık. Eğer böyle bir istek göndermediyseniz, lütfen bu e-postayı görmezden gelin.",
"reset.text2": "Parola değiştirme işlemine devam etmek için aşağıdaki bağlantıya tıklayın:",
"reset.cta": "Parolanızı değiştirmek için buraya tıklayın",
diff --git a/public/language/tr/error.json b/public/language/tr/error.json
index a530f04e05..9c02802883 100644
--- a/public/language/tr/error.json
+++ b/public/language/tr/error.json
@@ -46,14 +46,14 @@
"too-many-posts-newbie": "Yeni bir kullanıcı olarak, %2 saygınlık kazanana kadar %1 saniye içinde bir ileti gönderebilirsiniz - tekrar ileti göndermeden önce lütfen bekleyin.",
"tag-too-short": "Lütfen daha uzun bir etiket girin. Etiketler en az %1 karakter içermelidir.",
"tag-too-long": "Lütfen daha kısa bir etiket girin. Etiketler %1 karakterden uzun olamaz.",
- "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
- "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
+ "not-enough-tags": "Yeterince etiket yok. Başlılar en az %1 etikete sahip olmalıdır",
+ "too-many-tags": "Etiket sayısı çok fazla. Başlıklar en fazla %1 etikete sahip olabilir",
"file-too-big": "İzin verilen en büyük dosya boyutu %1 kb - lütfen daha küçük bir dosya yükleyin",
"cant-vote-self-post": "Kendi iletinize oy veremezsiniz",
"already-favourited": "Bu iletiyi zaten favorilerinize eklediniz",
"already-unfavourited": "Bu iletiyi zaten favorilerinizden çıkardınız",
"cant-ban-other-admins": "Başka yöneticileri yasaklayamazsınız!",
- "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
+ "cant-remove-last-admin": "Tek yönetici sizsiniz. Kendinizi adminlikten çıkarmadan önce başka bir kullanıcıyı admin olarak ekleyiniz",
"invalid-image-type": "Geçersiz resim uzantısı. Izin verilen uzantılar: %1",
"invalid-image-extension": "Geçersiz resim uzantısı",
"invalid-file-type": "Geçersiz dosya türü. İzin verilenler şunlar : %1",
@@ -62,8 +62,8 @@
"group-name-change-not-allowed": "Grup ismini değiştiremezsiniz",
"group-already-member": "Bu grubun zaten bir parçasısınız.",
"group-needs-owner": "Bu grubu en az bir kişi sahiplenmesi gerekiyor",
- "group-already-invited": "This user has already been invited",
- "group-already-requested": "Your membership request has already been submitted",
+ "group-already-invited": "Bu kullanıcı zaten davet edilmiş",
+ "group-already-requested": "Üyelik isteğiniz zaten gönderildi",
"post-already-deleted": "İleti zaten silinmiş",
"post-already-restored": "İleti zaten geri getirilmiş",
"topic-already-deleted": "Başlık zaten silinmiş",
@@ -81,7 +81,7 @@
"downvoting-disabled": "Aşagı oylama kapatılmış",
"not-enough-reputation-to-downvote": "Bu iletiyi aşagı oylamak için yeterince saygınlığınız yok.",
"not-enough-reputation-to-flag": "Bu iletiyi bayraklamak için yeterince saygınlığınız yok",
- "already-flagged": "You have already flagged this post",
+ "already-flagged": "Bu iletiyi zaten bayrakladınız",
"reload-failed": "NodeBB tekrar yüklenirken bir sorunla karşılaştı: “%1“. NodeBB varolan dosyaları servis etmeye devam edecek.",
"registration-error": "Kayıt Hatası",
"parse-error": "Sunucu yanıtı çözümlemesi sırasında bir şeyler ters gitti",
diff --git a/public/language/tr/groups.json b/public/language/tr/groups.json
index bac723142e..c1c65af240 100644
--- a/public/language/tr/groups.json
+++ b/public/language/tr/groups.json
@@ -6,12 +6,12 @@
"no_groups_found": "Henüz hiç grup yok",
"pending.accept": "Onayla",
"pending.reject": "Reddet",
- "pending.accept_all": "Accept All",
- "pending.reject_all": "Reject All",
- "pending.none": "There are no pending members at this time",
- "invited.none": "There are no invited members at this time",
- "invited.uninvite": "Rescind Invitation",
- "invited.search": "Search for a user to invite to this group",
+ "pending.accept_all": "Hepsini Kabul Et",
+ "pending.reject_all": "Hepsini Reddet",
+ "pending.none": "Şu anda bekleyen üye yok",
+ "invited.none": "Şu anda davet edilmiş üye yok",
+ "invited.uninvite": "Daveti iptal et",
+ "invited.search": "Gruba davet etmek için kullanıcı ara",
"cover-instructions": "Bir fotoğrafı Sürükleyin ve Bırakın, uygun yere sürükleyip Kaydet'e tıklayın.",
"cover-change": "Değiştir",
"cover-save": "Kaydet",
@@ -19,7 +19,7 @@
"details.title": "Grup Detayları",
"details.members": "Üye Listesi",
"details.pending": "Üyeler bekleniyor",
- "details.invited": "Invited Members",
+ "details.invited": "Davet Edilen Üyeler",
"details.has_no_posts": "Bu grubun üyeleri henüz bir ileti göndermedi.",
"details.latest_posts": "En son iletiler",
"details.private": "Özel",
@@ -38,12 +38,13 @@
"details.private_help": "Gruba katılmak için eğer etkinse grup sahibini onayı gerekir, ",
"details.hidden": "Gizli",
"details.hidden_help": "Bu grup eğer etkinse grup listelerinde bulunmaz, ve kullanıcılar bizzat davet eder",
- "details.delete_group": "Delete Group",
+ "details.delete_group": "Grubu Sil",
"event.updated": "Grup detayları güncellenmiştir",
"event.deleted": "\"%1\" grubu silinmiş",
- "membership.accept-invitation": "Accept Invitation",
- "membership.invitation-pending": "Invitation Pending",
- "membership.join-group": "Join Group",
- "membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.accept-invitation": "Daveti Kabul Et",
+ "membership.invitation-pending": "Davet beklemede",
+ "membership.join-group": "Gruba Katıl",
+ "membership.leave-group": "Gruptan Ayrıl",
+ "membership.reject": "Reddet",
+ "new-group.group_name": "Grup İsmi:"
}
\ No newline at end of file
diff --git a/public/language/vi/category.json b/public/language/vi/category.json
index e209512922..ef607a6f36 100644
--- a/public/language/vi/category.json
+++ b/public/language/vi/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "Chủ đề mới",
"guest-login-post": "Đăng nhập để viết bài",
"no_topics": "Không có bài viết trong danh mục này. Hãy đăng một bài viết mới.",
"browsing": "đang xem",
"no_replies": "Chưa có bình luận nào",
+ "no_new_posts": "No new posts.",
"share_this_category": "Chia sẻ thư mục này",
"watch": "Watch",
"ignore": "Bỏ qua",
diff --git a/public/language/vi/groups.json b/public/language/vi/groups.json
index 2deebd443e..b44ae1ecc5 100644
--- a/public/language/vi/groups.json
+++ b/public/language/vi/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
diff --git a/public/language/zh_CN/category.json b/public/language/zh_CN/category.json
index 8024d249a1..3867e3b185 100644
--- a/public/language/zh_CN/category.json
+++ b/public/language/zh_CN/category.json
@@ -1,9 +1,12 @@
{
+ "category": "版面",
+ "subcategories": "子版面",
"new_topic_button": "新主题",
"guest-login-post": "登录后发表",
"no_topics": "此版块还没有任何内容。 赶紧来发帖吧!",
"browsing": "正在浏览",
"no_replies": "尚无回复",
+ "no_new_posts": "没有新帖",
"share_this_category": "分享此版块",
"watch": "关注",
"ignore": "忽略",
diff --git a/public/language/zh_CN/error.json b/public/language/zh_CN/error.json
index 7ad720cf56..4e1ecab7ff 100644
--- a/public/language/zh_CN/error.json
+++ b/public/language/zh_CN/error.json
@@ -46,8 +46,8 @@
"too-many-posts-newbie": "因为您是新用户,所以限制每隔 %1 秒才能发帖一次,直到您有 %2 点威望为止 —— 请稍候再发帖",
"tag-too-short": "话题太短,不能少于 %1 个字符",
"tag-too-long": "话题太长,不能超过 %1 个字符",
- "not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
- "too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
+ "not-enough-tags": "没有足够的话题标签。主题必须有至少 %1 个话题标签",
+ "too-many-tags": "过多话题标签。主题不能超过 %1 个话题标签",
"file-too-big": "上传文件的大小限制为 %1 KB - 请缩减文件大小",
"cant-vote-self-post": "您不能给自己的帖子投票。",
"already-favourited": "您已收藏该帖",
diff --git a/public/language/zh_CN/groups.json b/public/language/zh_CN/groups.json
index 0f02408c81..d127f71963 100644
--- a/public/language/zh_CN/groups.json
+++ b/public/language/zh_CN/groups.json
@@ -38,12 +38,13 @@
"details.private_help": "启用此选项后,加入小组需要组长审批。",
"details.hidden": "隐藏",
"details.hidden_help": "启用此选项后,小组将不在小组列表中展现,成员只能通过邀请加入。",
- "details.delete_group": "Delete Group",
+ "details.delete_group": "删除小组",
"event.updated": "小组信息已更新",
"event.deleted": "小组 \"%1\" 已被删除",
- "membership.accept-invitation": "Accept Invitation",
- "membership.invitation-pending": "Invitation Pending",
- "membership.join-group": "Join Group",
- "membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.accept-invitation": "接受邀请",
+ "membership.invitation-pending": "邀请中",
+ "membership.join-group": "加入小组",
+ "membership.leave-group": "退出小组",
+ "membership.reject": "拒绝",
+ "new-group.group_name": "组名: "
}
\ No newline at end of file
diff --git a/public/language/zh_TW/category.json b/public/language/zh_TW/category.json
index 0dff52556a..a1f61a907c 100644
--- a/public/language/zh_TW/category.json
+++ b/public/language/zh_TW/category.json
@@ -1,9 +1,12 @@
{
+ "category": "Category",
+ "subcategories": "Subcategories",
"new_topic_button": "新主題",
"guest-login-post": "登錄後才能發表",
"no_topics": "這個類別還沒有任何主題。 為何不來發點東西呢?",
"browsing": "正在瀏覽",
"no_replies": "還沒有回覆",
+ "no_new_posts": "No new posts.",
"share_this_category": "分享這類別",
"watch": "觀看",
"ignore": "忽略",
diff --git a/public/language/zh_TW/groups.json b/public/language/zh_TW/groups.json
index b69c394a33..17d8092035 100644
--- a/public/language/zh_TW/groups.json
+++ b/public/language/zh_TW/groups.json
@@ -45,5 +45,6 @@
"membership.invitation-pending": "Invitation Pending",
"membership.join-group": "Join Group",
"membership.leave-group": "Leave Group",
- "membership.reject": "Reject"
+ "membership.reject": "Reject",
+ "new-group.group_name": "Group Name:"
}
\ No newline at end of file
From 9d2c54e26a40662ae1c95679f04bc8168b990bb9 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 17 Aug 2015 17:09:47 -0400
Subject: [PATCH 092/284] Add missing timeago locale files
---
.../timeago/locales/jquery.timeago.cs.js | 24 +++++++++++++
.../locales/jquery.timeago.es-short.js | 20 +++++++++++
.../timeago/locales/jquery.timeago.ky.js | 34 +++++++++++++++++++
.../locales/jquery.timeago.pt-br-short.js | 20 +++++++++++
.../timeago/locales/jquery.timeago.rw.js | 20 +++++++++++
.../timeago/locales/jquery.timeago.si.js | 18 ++++++++++
6 files changed, 136 insertions(+)
create mode 100644 public/vendor/jquery/timeago/locales/jquery.timeago.cs.js
create mode 100644 public/vendor/jquery/timeago/locales/jquery.timeago.es-short.js
create mode 100644 public/vendor/jquery/timeago/locales/jquery.timeago.ky.js
create mode 100644 public/vendor/jquery/timeago/locales/jquery.timeago.pt-br-short.js
create mode 100644 public/vendor/jquery/timeago/locales/jquery.timeago.rw.js
create mode 100644 public/vendor/jquery/timeago/locales/jquery.timeago.si.js
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.cs.js b/public/vendor/jquery/timeago/locales/jquery.timeago.cs.js
new file mode 100644
index 0000000000..0ce346963b
--- /dev/null
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.cs.js
@@ -0,0 +1,24 @@
+// Czech
+(function() {
+ function f(n, d, a) {
+ return a[d>=0 ? 0 : a.length==2 || n<5 ? 1 : 2];
+ }
+
+ jQuery.timeago.settings.strings = {
+ prefixAgo: 'před',
+ prefixFromNow: 'za',
+ suffixAgo: null,
+ suffixFromNow: null,
+ seconds: function(n, d) {return f(n, d, ['méně než minutou', 'méně než minutu']);},
+ minute: function(n, d) {return f(n, d, ['minutou', 'minutu']);},
+ minutes: function(n, d) {return f(n, d, ['%d minutami', '%d minuty', '%d minut']);},
+ hour: function(n, d) {return f(n, d, ['hodinou', 'hodinu']);},
+ hours: function(n, d) {return f(n, d, ['%d hodinami', '%d hodiny', '%d hodin']);},
+ day: function(n, d) {return f(n, d, ['%d dnem', '%d den']);},
+ days: function(n, d) {return f(n, d, ['%d dny', '%d dny', '%d dní']);},
+ month: function(n, d) {return f(n, d, ['%d měsícem', '%d měsíc']);},
+ months: function(n, d) {return f(n, d, ['%d měsíci', '%d měsíce', '%d měsíců']);},
+ year: function(n, d) {return f(n, d, ['%d rokem', '%d rok']);},
+ years: function(n, d) {return f(n, d, ['%d lety', '%d roky', '%d let']);}
+ };
+})();
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.es-short.js b/public/vendor/jquery/timeago/locales/jquery.timeago.es-short.js
new file mode 100644
index 0000000000..65d85c7154
--- /dev/null
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.es-short.js
@@ -0,0 +1,20 @@
+// Spanish shortened
+jQuery.timeago.settings.strings = {
+ prefixAgo: null,
+ prefixFromNow: null,
+ suffixAgo: "",
+ suffixFromNow: "",
+ seconds: "1m",
+ minute: "1m",
+ minutes: "%dm",
+ hour: "1h",
+ hours: "%dh",
+ day: "1d",
+ days: "%dd",
+ month: "1me",
+ months: "%dme",
+ year: "1a",
+ years: "%da",
+ wordSeparator: " ",
+ numbers: []
+};
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.ky.js b/public/vendor/jquery/timeago/locales/jquery.timeago.ky.js
new file mode 100644
index 0000000000..8663fe0b23
--- /dev/null
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.ky.js
@@ -0,0 +1,34 @@
+// Russian
+(function() {
+ function numpf(n, f, s, t) {
+ // f - 1, 21, 31, ...
+ // s - 2-4, 22-24, 32-34 ...
+ // t - 5-20, 25-30, ...
+ var n10 = n % 10;
+ if ( (n10 == 1) && ( (n == 1) || (n > 20) ) ) {
+ return f;
+ } else if ( (n10 > 1) && (n10 < 5) && ( (n > 20) || (n < 10) ) ) {
+ return s;
+ } else {
+ return t;
+ }
+ }
+
+ jQuery.timeago.settings.strings = {
+ prefixAgo: null,
+ prefixFromNow: "через",
+ suffixAgo: "мурун",
+ suffixFromNow: null,
+ seconds: "1 минуттан аз",
+ minute: "минута",
+ minutes: function(value) { return numpf(value, "%d минута", "%d минута", "%d минут"); },
+ hour: "саат",
+ hours: function(value) { return numpf(value, "%d саат", "%d саат", "%d саат"); },
+ day: "күн",
+ days: function(value) { return numpf(value, "%d күн", "%d күн", "%d күн"); },
+ month: "ай",
+ months: function(value) { return numpf(value, "%d ай", "%d ай", "%d ай"); },
+ year: "жыл",
+ years: function(value) { return numpf(value, "%d жыл", "%d жыл", "%d жыл"); }
+ };
+})();
\ No newline at end of file
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.pt-br-short.js b/public/vendor/jquery/timeago/locales/jquery.timeago.pt-br-short.js
new file mode 100644
index 0000000000..8f63db43d1
--- /dev/null
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.pt-br-short.js
@@ -0,0 +1,20 @@
+// Portuguese Brasil shortened
+jQuery.timeago.settings.strings = {
+ prefixAgo: null,
+ prefixFromNow: null,
+ suffixAgo: "",
+ suffixFromNow: "",
+ seconds: "1m",
+ minute: "1m",
+ minutes: "%dm",
+ hour: "1h",
+ hours: "%dh",
+ day: "1d",
+ days: "%dd",
+ month: "1M",
+ months: "%dM",
+ year: "1a",
+ years: "%da",
+ wordSeparator: " ",
+ numbers: []
+};
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.rw.js b/public/vendor/jquery/timeago/locales/jquery.timeago.rw.js
new file mode 100644
index 0000000000..18537672eb
--- /dev/null
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.rw.js
@@ -0,0 +1,20 @@
+// Kinyarwanda
+jQuery.timeago.settings.strings = {
+ prefixAgo: "hashize",
+ prefixFromNow: "mu",
+ suffixAgo: null,
+ suffixFromNow: null,
+ seconds: "amasegonda macye",
+ minute: "umunota",
+ minutes: "iminota %d",
+ hour: "isaha",
+ hours: "amasaha %d",
+ day: "umunsi",
+ days: "iminsi %d",
+ month: "ukwezi",
+ months: "amezi %d",
+ year: "umwaka",
+ years: "imyaka %d",
+ wordSeparator: " ",
+ numbers: []
+};
diff --git a/public/vendor/jquery/timeago/locales/jquery.timeago.si.js b/public/vendor/jquery/timeago/locales/jquery.timeago.si.js
new file mode 100644
index 0000000000..468bcd7ca9
--- /dev/null
+++ b/public/vendor/jquery/timeago/locales/jquery.timeago.si.js
@@ -0,0 +1,18 @@
+// Sinhalese (SI)
+jQuery.timeago.settings.strings = {
+ prefixAgo: null,
+ prefixFromNow: null,
+ suffixAgo: "පෙර",
+ suffixFromNow: "පසුව",
+ seconds: "තත්පර කිහිපයකට",
+ minute: "මිනිත්තුවකට පමණ",
+ minutes: "මිනිත්තු %d කට",
+ hour: "පැයක් පමණ ",
+ hours: "පැය %d කට පමණ",
+ day: "දවසක ට",
+ days: "දවස් %d කට ",
+ month: "මාසයක් පමණ",
+ months: "මාස %d කට",
+ year: "වසරක් පමණ",
+ years: "වසරක් %d කට පමණ"
+};
\ No newline at end of file
From 3b3c383d93239aa7b14cf180d0232bb325ec6c63 Mon Sep 17 00:00:00 2001
From: Julian Lam
Date: Mon, 17 Aug 2015 17:20:41 -0400
Subject: [PATCH 093/284] adding a fallback for en_GB and en_US
---
public/src/modules/translator.js | 59 +++++++++++++++++---------------
1 file changed, 32 insertions(+), 27 deletions(-)
diff --git a/public/src/modules/translator.js b/public/src/modules/translator.js
index 90784747c9..96ec0b513a 100644
--- a/public/src/modules/translator.js
+++ b/public/src/modules/translator.js
@@ -47,33 +47,38 @@
// Load the appropriate timeago locale file, and correct NodeBB language codes to timeago codes, if necessary
var languageCode;
switch(config.userLang) {
- case 'cs':
- languageCode = 'cz';
- break;
-
- case 'fa_IR':
- languageCode = 'fa';
- break;
-
- case 'pt_BR':
- languageCode = 'pt-br';
- break;
-
- case 'nb':
- languageCode = 'no';
- break;
-
- case 'zh_TW':
- languageCode = 'zh-TW';
- break;
-
- case 'zh_CN':
- languageCode = 'zh-CN';
- break;
-
- default:
- languageCode = config.userLang;
- break;
+ case 'en_GB':
+ case 'en_US':
+ languageCode = 'en';
+ break;
+
+ case 'cs':
+ languageCode = 'cz';
+ break;
+
+ case 'fa_IR':
+ languageCode = 'fa';
+ break;
+
+ case 'pt_BR':
+ languageCode = 'pt-br';
+ break;
+
+ case 'nb':
+ languageCode = 'no';
+ break;
+
+ case 'zh_TW':
+ languageCode = 'zh-TW';
+ break;
+
+ case 'zh_CN':
+ languageCode = 'zh-CN';
+ break;
+
+ default:
+ languageCode = config.userLang;
+ break;
}
$.getScript(RELATIVE_PATH + '/vendor/jquery/timeago/locales/jquery.timeago.' + languageCode + '.js').success(function() {
From 4b0f50f57e7916354968075eed094b8da7e9b032 Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Tue, 18 Aug 2015 11:02:14 -0400
Subject: [PATCH 094/284] closes #3448
---
public/src/utils.js | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/public/src/utils.js b/public/src/utils.js
index 66ee10f6cf..4b3b4464fc 100644
--- a/public/src/utils.js
+++ b/public/src/utils.js
@@ -206,9 +206,13 @@
overrideTimeago: function() {
var timeagoFn = $.fn.timeago;
$.fn.timeago = function() {
- timeagoFn.apply(this, arguments).each(function() {
- $(this).attr('title', (new Date($(this).attr('title'))).toString());
- });
+ var els = timeagoFn.apply(this, arguments);
+
+ if (els) {
+ els.each(function() {
+ $(this).attr('title', (new Date($(this).attr('title'))).toString());
+ });
+ }
};
},
From a990e9c3bfce76f54e8d018ff259604bdd802cda Mon Sep 17 00:00:00 2001
From: psychobunny
Date: Tue, 18 Aug 2015 11:27:22 -0400
Subject: [PATCH 095/284] closes #3449
---
package.json | 4 ++--
src/controllers/index.js | 5 ++++-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/package.json b/package.json
index aa2b796071..0e47780a71 100644
--- a/package.json
+++ b/package.json
@@ -49,8 +49,8 @@
"nodebb-plugin-spam-be-gone": "0.4.1",
"nodebb-rewards-essentials": "0.0.3",
"nodebb-theme-lavender": "1.0.49",
- "nodebb-theme-persona": "2.0.12",
- "nodebb-theme-vanilla": "3.0.6",
+ "nodebb-theme-persona": "2.0.13",
+ "nodebb-theme-vanilla": "3.0.7",
"nodebb-widget-essentials": "1.0.4",
"npm": "^2.1.4",
"passport": "^0.2.1",
diff --git a/src/controllers/index.js b/src/controllers/index.js
index 70854a548a..e7ca7e075f 100644
--- a/src/controllers/index.js
+++ b/src/controllers/index.js
@@ -110,6 +110,9 @@ Controllers.register = function(req, res, next) {
}
},
function(next) {
+ plugins.fireHook('filter:parse.post', {postData: {content: meta.config.termsOfUse}}, next);
+ },
+ function(tos, next) {
var loginStrategies = require('../routes/authentication').getLoginStrategies();
var data = {
'register_window:spansize': loginStrategies.length ? 'col-md-6' : 'col-md-12',
@@ -121,7 +124,7 @@ Controllers.register = function(req, res, next) {
data.minimumUsernameLength = meta.config.minimumUsernameLength;
data.maximumUsernameLength = meta.config.maximumUsernameLength;
data.minimumPasswordLength = meta.config.minimumPasswordLength;
- data.termsOfUse = meta.config.termsOfUse;
+ data.termsOfUse = tos.postData.content;
data.breadcrumbs = helpers.buildBreadcrumbs([{text: '[[register:register]]'}]);
data.regFormEntry = [];
data.error = req.flash('error')[0];
From 5b87af4389b8c3dc0495cc51f86edc176b086c75 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Tue, 18 Aug 2015 14:17:16 -0400
Subject: [PATCH 096/284] closes #3447
recursively get all children
calculate topic/post count from children
new sorted set `cid::children`
fix search query params
---
public/src/app.js | 2 +-
src/categories.js | 72 +++++++++++++++++++++++--------
src/categories/create.js | 5 ++-
src/categories/delete.js | 17 ++++++++
src/categories/update.js | 48 ++++++++++++++++++++-
src/controllers/categories.js | 17 ++------
src/controllers/search.js | 2 +-
src/search.js | 11 +++--
src/sitemap.js | 2 +-
src/socket.io/admin/categories.js | 2 +-
src/socket.io/categories.js | 4 +-
src/upgrade.js | 42 +++++++++++++++++-
12 files changed, 181 insertions(+), 43 deletions(-)
diff --git a/public/src/app.js b/public/src/app.js
index 5bcbb8201d..2e9b479ba6 100644
--- a/public/src/app.js
+++ b/public/src/app.js
@@ -503,7 +503,7 @@ app.cacheBuster = null;
app.load = function() {
$('document').ready(function () {
- var url = ajaxify.start(window.location.pathname.slice(1), true, window.location.search);
+ var url = ajaxify.start(window.location.pathname.slice(1) + window.location.search, true);
ajaxify.end(url, app.template);
handleStatusChange();
diff --git a/src/categories.js b/src/categories.js
index d30cd0c47a..f1a5ab23dd 100644
--- a/src/categories.js
+++ b/src/categories.js
@@ -103,10 +103,10 @@ var async = require('async'),
});
};
- Categories.getCategoriesByPrivilege = function(uid, privilege, callback) {
+ Categories.getCategoriesByPrivilege = function(set, uid, privilege, callback) {
async.waterfall([
function(next) {
- db.getSortedSetRange('categories:cid', 0, -1, next);
+ db.getSortedSetRange(set, 0, -1, next);
},
function(cids, next) {
privileges.categories.filterCids(privilege, cids, uid, next);
@@ -273,6 +273,7 @@ var async = require('async'),
if (!category) {
return;
}
+
var postCount = parseInt(category.post_count, 10) || 0;
var topicCount = parseInt(category.topic_count, 10) || 0;
if (!Array.isArray(category.children) || !category.children.length) {
@@ -282,9 +283,11 @@ var async = require('async'),
}
category.children.forEach(function(child) {
- postCount += parseInt(child.post_count, 10) || 0;
- topicCount += parseInt(child.topic_count, 10) || 0;
+ calculateTopicPostCount(child);
+ postCount += parseInt(child.totalPostCount, 10) || 0;
+ topicCount += parseInt(child.totalTopicCount, 10) || 0;
});
+
category.totalPostCount = postCount;
category.totalTopicCount = topicCount;
}
@@ -308,23 +311,58 @@ var async = require('async'),
};
Categories.getChildren = function(cids, uid, callback) {
+ var categories = cids.map(function(cid) {
+ return {cid: cid};
+ });
+
+ async.each(categories, function(category, next) {
+ getChildrenRecursive(category, category.cid, uid, next);
+ }, function (err) {
+ callback(err, categories.map(function(c) {
+ return c && c.children;
+ }));
+ });
+ };
+
+ function getChildrenRecursive(category, parentCid, uid, callback) {
async.waterfall([
- async.apply(db.getSortedSetRange, 'categories:cid', 0, -1),
- function(cids, next) {
- privileges.categories.filterCids('find', cids, uid, next);
+ function (next) {
+ db.getSortedSetRange('cid:' + parentCid + ':children', 0, -1, next);
},
- function (cids, next) {
- Categories.getCategoriesData(cids, next);
+ function (children, next) {
+ privileges.categories.filterCids('find', children, uid, next);
+ },
+ function (children, next) {
+ if (!children.length) {
+ category.children = [];
+ return callback();
+ }
+ Categories.getCategoriesData(children, next);
},
- function (categories, next) {
- async.map(cids, function(cid, next) {
- next(null, categories.filter(function(category) {
- return category && parseInt(category.parentCid, 10) === parseInt(cid, 10);
- }));
+ function (childrenData, next) {
+ category.children = childrenData;
+ async.each(category.children, function(child, next) {
+ getChildrenRecursive(child, child.cid, uid, next);
}, next);
}
], callback);
- };
+ }
+
+ Categories.flattenCategories = function(allCategories, categoryData) {
+ categoryData.forEach(function(category) {
+ if (!category) {
+ return;
+ }
+
+ if (!category.parent) {
+ allCategories.push(category);
+ }
+
+ if (Array.isArray(category.children) && category.children.length) {
+ Categories.flattenCategories(allCategories, category.children);
+ }
+ });
+ }
/**
* Recursively build tree
@@ -335,13 +373,13 @@ var async = require('async'),
Categories.getTree = function(categories, parentCid) {
var tree = [], i = 0, len = categories.length, category;
- for(i; i < len; ++i) {
+ for (i; i < len; ++i) {
category = categories[i];
if (!category.hasOwnProperty('parentCid')) {
category.parentCid = 0;
}
- if(category.parentCid == parentCid){
+ if (category.parentCid == parentCid){
tree.push(category);
category.children = Categories.getTree(categories, category.cid);
}
diff --git a/src/categories/create.js b/src/categories/create.js
index 71eef4e72e..73a2591714 100644
--- a/src/categories/create.js
+++ b/src/categories/create.js
@@ -10,6 +10,8 @@ module.exports = function(Categories) {
Categories.create = function(data, callback) {
var category;
+ var parentCid = data.parentCid ? data.parentCid : 0;
+
async.waterfall([
function(next) {
db.incrObjectField('global', 'nextCid', next);
@@ -27,7 +29,7 @@ module.exports = function(Categories) {
bgColor: data.bgColor || colours[0],
color: data.color || colours[1],
slug: slug,
- parentCid: ( data.parentCid ? data.parentCid : 0 ),
+ parentCid: parentCid,
topic_count: 0,
post_count: 0,
disabled: 0,
@@ -48,6 +50,7 @@ module.exports = function(Categories) {
async.series([
async.apply(db.setObject, 'category:' + category.cid, category),
async.apply(db.sortedSetAdd, 'categories:cid', category.order, category.cid),
+ async.apply(db.sortedSetAdd, 'cid:' + parentCid + ':children', category.order, category.cid),
async.apply(privileges.categories.give, defaultPrivileges, category.cid, 'administrators'),
async.apply(privileges.categories.give, defaultPrivileges, category.cid, 'registered-users'),
async.apply(privileges.categories.give, ['find', 'read'], category.cid, 'guests')
diff --git a/src/categories/delete.js b/src/categories/delete.js
index 1679ab6731..8483efaf72 100644
--- a/src/categories/delete.js
+++ b/src/categories/delete.js
@@ -30,15 +30,32 @@ module.exports = function(Categories) {
function(next) {
db.sortedSetRemove('categories:cid', cid, next);
},
+ function(next) {
+ removeFromParent(cid, next);
+ },
function(next) {
db.deleteAll([
'cid:' + cid + ':tids',
'cid:' + cid + ':tids:posts',
'cid:' + cid + ':pids',
'cid:' + cid + ':read_by_uid',
+ 'cid:' + cid + ':children',
'category:' + cid
], next);
}
], callback);
}
+
+ function removeFromParent(cid, callback) {
+ async.waterfall([
+ function(next) {
+ Categories.getCategoryField(cid, 'parentCid', next);
+ },
+ function(parentCid, next) {
+ parentCid = parseInt(parentCid, 10) || 0;
+ db.sortedSetRemove('cid:' + parentCid + ':children', cid, next);
+ }
+ ], callback);
+
+ }
};
\ No newline at end of file
diff --git a/src/categories/update.js b/src/categories/update.js
index fb5cec5054..036b405c96 100644
--- a/src/categories/update.js
+++ b/src/categories/update.js
@@ -50,17 +50,63 @@ module.exports = function(Categories) {
};
function updateCategoryField(cid, key, value, callback) {
+ if (key === 'parentCid') {
+ return updateParent(cid, value, callback);
+ }
+
db.setObjectField('category:' + cid, key, value, function(err) {
if (err) {
return callback(err);
}
if (key === 'order') {
- db.sortedSetAdd('categories:cid', value, cid, callback);
+ updateOrder(cid, value, callback);
} else {
callback();
}
});
}
+ function updateParent(cid, newParent, callback) {
+ Categories.getCategoryField(cid, 'parentCid', function(err, oldParent) {
+ if (err) {
+ return callback(err);
+ }
+
+ async.series([
+ function (next) {
+ oldParent = parseInt(oldParent, 10) || 0;
+ db.sortedSetRemove('cid:' + oldParent + ':children', cid, next);
+ },
+ function (next) {
+ newParent = parseInt(newParent, 10) || 0;
+ db.sortedSetAdd('cid:' + newParent + ':children', cid, cid, next);
+ },
+ function (next) {
+ db.setObjectField('category:' + cid, 'parentCid', newParent, next);
+ }
+ ], function(err, results) {
+ callback(err);
+ });
+ });
+ }
+
+ function updateOrder(cid, order, callback) {
+ Categories.getCategoryField(cid, 'parentCid', function(err, parentCid) {
+ if (err) {
+ return callback(err);
+ }
+
+ async.parallel([
+ function (next) {
+ db.sortedSetAdd('categories:cid', order, cid, next);
+ },
+ function (next) {
+ parentCid = parseInt(parentCid, 10) || 0;
+ db.sortedSetAdd('cid:' + parentCid + ':children', order, cid, next);
+ }
+ ], callback);
+ });
+ }
+
};
diff --git a/src/controllers/categories.js b/src/controllers/categories.js
index bbffcf1a86..bae16adc3b 100644
--- a/src/controllers/categories.js
+++ b/src/controllers/categories.js
@@ -33,7 +33,7 @@ categoriesController.list = function(req, res, next) {
content: 'website'
}];
- if(meta.config['brand:logo']) {
+ if (meta.config['brand:logo']) {
res.locals.metaTags.push({
property: 'og:image',
content: meta.config['brand:logo']
@@ -46,22 +46,13 @@ categoriesController.list = function(req, res, next) {
var categoryData;
async.waterfall([
function(next) {
- categories.getCategoriesByPrivilege(req.uid, 'find', next);
+ categories.getCategoriesByPrivilege('cid:0:children', req.uid, 'find', next);
},
function(_categoryData, next) {
categoryData = _categoryData;
- var allCategories = [];
-
- categoryData = categoryData.filter(function(category) {
- if (!category.parent) {
- allCategories.push(category);
- }
- if (Array.isArray(category.children) && category.children.length) {
- allCategories.push.apply(allCategories, category.children);
- }
- return category && !category.parent;
- });
+ var allCategories = [];
+ categories.flattenCategories(allCategories, categoryData);
categories.getRecentTopicReplies(allCategories, req.uid, next);
}
diff --git a/src/controllers/search.js b/src/controllers/search.js
index 6637acbbc3..2148e6644b 100644
--- a/src/controllers/search.js
+++ b/src/controllers/search.js
@@ -17,7 +17,7 @@ searchController.search = function(req, res, next) {
var breadcrumbs = helpers.buildBreadcrumbs([{text: '[[global:search]]'}]);
- categories.getCategoriesByPrivilege(req.uid, 'read', function(err, categories) {
+ categories.getCategoriesByPrivilege('categories:cid', req.uid, 'read', function(err, categories) {
if (err) {
return next(err);
}
diff --git a/src/search.js b/src/search.js
index 09e22a7a44..127588a5cd 100644
--- a/src/search.js
+++ b/src/search.js
@@ -417,11 +417,14 @@ function getChildrenCids(cids, uid, callback) {
}
var childrenCids = [];
+ var allCategories = [];
+
childrenCategories.forEach(function(childrens) {
- childrenCids = childrenCids.concat(childrens.map(function(category) {
- return category && category.cid;
- }));
- });
+ categories.flattenCategories(allCategories, childrens);
+ childrenCids = childrenCids.concat(allCategories.map(function(category) {
+ return category && category.cid;
+ }));
+ });
callback(null, childrenCids);
});
diff --git a/src/sitemap.js b/src/sitemap.js
index eaf7686acd..a1fc3731d9 100644
--- a/src/sitemap.js
+++ b/src/sitemap.js
@@ -61,7 +61,7 @@ sitemap.getDynamicUrls = function(callback) {
async.parallel({
categoryUrls: function(next) {
var categoryUrls = [];
- categories.getCategoriesByPrivilege(0, 'find', function(err, categoriesData) {
+ categories.getCategoriesByPrivilege('categories:cid', 0, 'find', function(err, categoriesData) {
if (err) {
return next(err);
}
diff --git a/src/socket.io/admin/categories.js b/src/socket.io/admin/categories.js
index ea7ad27780..e1e72c5ec8 100644
--- a/src/socket.io/admin/categories.js
+++ b/src/socket.io/admin/categories.js
@@ -20,7 +20,7 @@ Categories.create = function(socket, data, callback) {
Categories.getAll = function(socket, data, callback) {
async.waterfall([
- async.apply(db.getSortedSetRangeByScore, 'categories:cid', 0, -1, 0, Date.now()),
+ async.apply(db.getSortedSetRange, 'categories:cid', 0, -1),
async.apply(categories.getCategoriesData),
function(categories, next) {
//Hook changes, there is no req, and res
diff --git a/src/socket.io/categories.js b/src/socket.io/categories.js
index 0c1af11388..b437349ded 100644
--- a/src/socket.io/categories.js
+++ b/src/socket.io/categories.js
@@ -15,7 +15,7 @@ SocketCategories.getRecentReplies = function(socket, cid, callback) {
};
SocketCategories.get = function(socket, data, callback) {
- categories.getCategoriesByPrivilege(socket.uid, 'find', callback);
+ categories.getCategoriesByPrivilege('categories:cid', socket.uid, 'find', callback);
};
SocketCategories.getWatchedCategories = function(socket, data, callback) {
@@ -117,7 +117,7 @@ SocketCategories.getUsersInCategory = function(socket, cid, callback) {
};
SocketCategories.getCategoriesByPrivilege = function(socket, privilege, callback) {
- categories.getCategoriesByPrivilege(socket.uid, privilege, callback);
+ categories.getCategoriesByPrivilege('categories:cid', socket.uid, privilege, callback);
};
SocketCategories.watch = function(socket, cid, callback) {
diff --git a/src/upgrade.js b/src/upgrade.js
index 6d985264b9..01c3da455c 100644
--- a/src/upgrade.js
+++ b/src/upgrade.js
@@ -21,7 +21,7 @@ var db = require('./database'),
schemaDate, thisSchemaDate,
// IMPORTANT: REMEMBER TO UPDATE VALUE OF latestSchema
- latestSchema = Date.UTC(2015, 6, 3);
+ latestSchema = Date.UTC(2015, 7, 18);
Upgrade.check = function(callback) {
db.get('schemaDate', function(err, value) {
@@ -446,6 +446,46 @@ Upgrade.upgrade = function(callback) {
winston.info('[2015/07/03] Enabling default composer plugin skipped');
next();
}
+ },
+ function(next) {
+ thisSchemaDate = Date.UTC(2015, 7, 18);
+ if (schemaDate < thisSchemaDate) {
+ updatesMade = true;
+ winston.info('[2015/08/18] Creating children category sorted sets');
+
+ db.getSortedSetRange('categories:cid', 0, -1, function(err, cids) {
+ if (err) {
+ return next(err);
+ }
+
+ async.each(cids, function(cid, next) {
+ db.getObjectFields('category:' + cid, ['parentCid', 'order'], function(err, category) {
+ if (err) {
+ return next(err);
+ }
+ if (!category) {
+ return next();
+ }
+ if (parseInt(category.parentCid, 10)) {
+ db.sortedSetAdd('cid:' + category.parentCid + ':children', parseInt(category.order, 10), cid, next);
+ } else {
+ db.sortedSetAdd('cid:0:children', parseInt(category.order, 10), cid, next);
+ }
+ });
+ }, function(err) {
+ if (err) {
+ return next(err);
+ }
+
+ winston.info('[2015/08/18] Creating children category sorted sets done');
+ Upgrade.update(thisSchemaDate, next);
+ });
+ });
+
+ } else {
+ winston.info('[2015/08/18] Creating children category sorted sets skipped');
+ next();
+ }
}
From 7bd98a25168a8b6c23d70152d4a37906d01bca60 Mon Sep 17 00:00:00 2001
From: barisusakli
Date: Tue, 18 Aug 2015 15:01:36 -0400
Subject: [PATCH 097/284] closes #3427
---
src/emailer.js | 1 +
src/views/admin/settings/email.tpl | 7 +++++++
2 files changed, 8 insertions(+)
diff --git a/src/emailer.js b/src/emailer.js
index a4f2c407bd..14c683d640 100644
--- a/src/emailer.js
+++ b/src/emailer.js
@@ -71,6 +71,7 @@ var fs = require('fs'),
Plugins.fireHook('action:email.send', {
to: email,
from: meta.config['email:from'] || 'no-reply@localhost.lan',
+ from_name: meta.config['email:from_name'] || 'NodeBB',
subject: translated[2],
html: translated[0],
plaintext: translated[1],
diff --git a/src/views/admin/settings/email.tpl b/src/views/admin/settings/email.tpl
index e86eba17cc..6d996900e4 100644
--- a/src/views/admin/settings/email.tpl
+++ b/src/views/admin/settings/email.tpl
@@ -14,6 +14,13 @@