psychobunny
commit 87baeebc3f

@ -15,6 +15,7 @@ trans.he = public/language/he/category.json
trans.hu = public/language/hu/category.json
trans.it = public/language/it/category.json
trans.nb = public/language/nb/category.json
trans.nl = public/language/nl/category.json
trans.pl = public/language/pl/category.json
trans.pt_BR = public/language/pt_BR/category.json
trans.ru = public/language/ru/category.json
@ -39,6 +40,7 @@ trans.he = public/language/he/login.json
trans.hu = public/language/hu/login.json
trans.it = public/language/it/login.json
trans.nb = public/language/nb/login.json
trans.nl = public/language/nl/login.json
trans.pl = public/language/pl/login.json
trans.pt_BR = public/language/pt_BR/login.json
trans.ru = public/language/ru/login.json
@ -62,6 +64,7 @@ trans.he = public/language/he/recent.json
trans.hu = public/language/hu/recent.json
trans.it = public/language/it/recent.json
trans.nb = public/language/nb/recent.json
trans.nl = public/language/nl/recent.json
trans.pl = public/language/pl/recent.json
trans.pt_BR = public/language/pt_BR/recent.json
trans.ru = public/language/ru/recent.json
@ -85,6 +88,7 @@ trans.he = public/language/he/unread.json
trans.hu = public/language/hu/unread.json
trans.it = public/language/it/unread.json
trans.nb = public/language/nb/unread.json
trans.nl = public/language/nl/unread.json
trans.pl = public/language/pl/unread.json
trans.pt_BR = public/language/pt_BR/unread.json
trans.ru = public/language/ru/unread.json
@ -108,6 +112,7 @@ trans.he = public/language/he/footer.json
trans.hu = public/language/hu/footer.json
trans.it = public/language/it/footer.json
trans.nb = public/language/nb/footer.json
trans.nl = public/language/nl/footer.json
trans.pl = public/language/pl/footer.json
trans.pt_BR = public/language/pt_BR/footer.json
trans.ru = public/language/ru/footer.json
@ -131,6 +136,7 @@ trans.he = public/language/he/modules.json
trans.hu = public/language/hu/modules.json
trans.it = public/language/it/modules.json
trans.nb = public/language/nb/modules.json
trans.nl = public/language/nl/modules.json
trans.pl = public/language/pl/modules.json
trans.pt_BR = public/language/pt_BR/modules.json
trans.ru = public/language/ru/modules.json
@ -154,6 +160,7 @@ trans.he = public/language/he/register.json
trans.hu = public/language/hu/register.json
trans.it = public/language/it/register.json
trans.nb = public/language/nb/register.json
trans.nl = public/language/nl/register.json
trans.pl = public/language/pl/register.json
trans.pt_BR = public/language/pt_BR/register.json
trans.ru = public/language/ru/register.json
@ -177,6 +184,7 @@ trans.he = public/language/he/user.json
trans.hu = public/language/hu/user.json
trans.it = public/language/it/user.json
trans.nb = public/language/nb/user.json
trans.nl = public/language/nl/user.json
trans.pl = public/language/pl/user.json
trans.pt_BR = public/language/pt_BR/user.json
trans.ru = public/language/ru/user.json
@ -200,6 +208,7 @@ trans.he = public/language/he/global.json
trans.hu = public/language/hu/global.json
trans.it = public/language/it/global.json
trans.nb = public/language/nb/global.json
trans.nl = public/language/nl/global.json
trans.pl = public/language/pl/global.json
trans.pt_BR = public/language/pt_BR/global.json
trans.ru = public/language/ru/global.json
@ -223,6 +232,7 @@ trans.he = public/language/he/notifications.json
trans.hu = public/language/hu/notifications.json
trans.it = public/language/it/notifications.json
trans.nb = public/language/nb/notifications.json
trans.nl = public/language/nl/notifications.json
trans.pl = public/language/pl/notifications.json
trans.pt_BR = public/language/pt_BR/notifications.json
trans.ru = public/language/ru/notifications.json
@ -246,6 +256,7 @@ trans.he = public/language/he/reset_password.json
trans.hu = public/language/hu/reset_password.json
trans.it = public/language/it/reset_password.json
trans.nb = public/language/nb/reset_password.json
trans.nl = public/language/nl/reset_password.json
trans.pl = public/language/pl/reset_password.json
trans.pt_BR = public/language/pt_BR/reset_password.json
trans.ru = public/language/ru/reset_password.json
@ -269,6 +280,7 @@ trans.he = public/language/he/users.json
trans.hu = public/language/hu/users.json
trans.it = public/language/it/users.json
trans.nb = public/language/nb/users.json
trans.nl = public/language/nl/users.json
trans.pl = public/language/pl/users.json
trans.pt_BR = public/language/pt_BR/users.json
trans.ru = public/language/ru/users.json
@ -292,6 +304,7 @@ trans.he = public/language/he/language.json
trans.hu = public/language/hu/language.json
trans.it = public/language/it/language.json
trans.nb = public/language/nb/language.json
trans.nl = public/language/nl/language.json
trans.pl = public/language/pl/language.json
trans.pt_BR = public/language/pt_BR/language.json
trans.ru = public/language/ru/language.json
@ -315,6 +328,7 @@ trans.he = public/language/he/pages.json
trans.hu = public/language/hu/pages.json
trans.it = public/language/it/pages.json
trans.nb = public/language/nb/pages.json
trans.nl = public/language/nl/pages.json
trans.pl = public/language/pl/pages.json
trans.pt_BR = public/language/pt_BR/pages.json
trans.ru = public/language/ru/pages.json
@ -338,6 +352,7 @@ trans.he = public/language/he/topic.json
trans.hu = public/language/hu/topic.json
trans.it = public/language/it/topic.json
trans.nb = public/language/nb/topic.json
trans.nl = public/language/nl/topic.json
trans.pl = public/language/pl/topic.json
trans.pt_BR = public/language/pt_BR/topic.json
trans.ru = public/language/ru/topic.json

@ -1,6 +1,6 @@
var fork = require('child_process').fork,
start = function() {
var nbb = fork('./app', process.argv.slice(2), {
nbb = fork('./app', process.argv.slice(2), {
env: {
'NODE_ENV': process.env.NODE_ENV
}
@ -14,6 +14,13 @@ var fork = require('child_process').fork,
nbb.kill();
}
});
}
},
stop = function() {
nbb.kill();
},
nbb;
process.on('SIGINT', stop);
process.on('SIGTERM', stop);
start();

@ -37,7 +37,7 @@ case "$1" in
echo "Launching NodeBB in \"development\" mode."
echo "To run the production build of NodeBB, please use \"forever\"."
echo "More Information: https://github.com/designcreateplay/NodeBB/wiki/How-to-run-NodeBB"
NODE_ENV=development supervisor -q --extensions 'node|js|tpl' -- app "$@"
NODE_ENV=development supervisor -q --extensions 'node|js|tpl' -- loader "$@"
;;
*)

@ -42,7 +42,8 @@
"nodebb-widget-essentials": "~0.0",
"nodebb-theme-vanilla": "~0.0.14",
"nodebb-theme-cerulean": "~0.0.13",
"nodebb-theme-lavender": "~0.0.21"
"nodebb-theme-lavender": "~0.0.22",
"less": "^1.6.3"
},
"optionalDependencies": {
"redis": "0.8.3",

@ -65,6 +65,7 @@
"in": "in",
"recentposts": "Recent Posts",
"recentips": "Recently Logged In IPs",
"online": "Online",
"away": "Away",

@ -1,12 +1,12 @@
{
"new_topic_button": "Aloita uusi keskustelu.",
"no_topics": "<strong>Tällä aihealueella ei ole yhtään viestiketjua.</strong><br />Miksi et aloittaisi yhtä?",
"new_topic_button": "Uusi aihe",
"no_topics": "<strong>Tällä aihealueella ei ole yhtään aihetta.</strong><br />Miksi et aloittaisi uutta?",
"sidebar.recent_replies": "Viimeisimmät vastaukset",
"sidebar.active_participants": "Aktiiviset keskustelijat",
"sidebar.moderators": "Moderaattorit",
"posts": "viestit",
"views": "katsottu",
"posted": "lähetetty",
"posted": "kirjoitettu",
"browsing": "selaamassa",
"no_replies": "Kukaan ei ole vastannut",
"replied": "vastasi",

@ -1,7 +1,7 @@
{
"stats.online": "Online",
"stats.users": "Käyttäjää",
"stats.topics": "Viestiketjua",
"stats.topics": "Aihetta",
"stats.posts": "Viestiä",
"success": "onnistunut"
}

@ -1,56 +1,58 @@
{
"home": "Etusivu",
"search": "Etsi",
"search": "Hae",
"buttons.close": "Sulje",
"403.title": "Pääsy kielletty",
"403.message": "Olet päätynyt sivulle jolle sinulla ei ole tarvittavia oikeuksia. Ehkäpä sinun tulisi <a href='/login'>kirjaudu sisään</a>?",
"404.title": "Sivua ei löydy",
"404.message": "Olet päätynyt sivulle jota ei ole olemassa. Palaa <a href='/'>etusivulle</a>.",
"403.message": "Olet päätynyt sivulle, johon sinulla ei ole tarvittavia oikeuksia. Sinun pitäisi kai <a href='/login'>kirjautua sisään</a>.",
"404.title": "Ei löydy",
"404.message": "Olet päätynyt sivulle, jota ei ole olemassa. Palaa <a href='/'>etusivulle</a>.",
"500.title": "Sisäinen virhe.",
"500.message": "Oho! Jotain meni pieleen!",
"register": "Rekisteröidy",
"login": "Kirjaudu",
"welcome_back": "Welcome Back ",
"you_have_successfully_logged_in": "You have successfully logged in",
"please_log_in": "Kirjaudu, ole hyvä",
"posting_restriction_info": "Kirjoittaminen on tällä hetkellä rajattu vain rekisteröityneille käyttäjille. Napsauta tätä kirjautuaksesi.",
"welcome_back": "Tervetuloa takaisin",
"you_have_successfully_logged_in": "Olet onnistuneesti kirjautunut sisään",
"logout": "Kirjaudu ulos",
"logout.title": "Olet nyt kirjaunut ulos.",
"logout.title": "Olet nyt kirjautunut ulos.",
"logout.message": "Olet onnistuneesti kirjautunut ulos NodeBB:stä",
"save_changes": "Tallenna muutokset",
"close": "Sulje",
"pagination": "Pagination",
"header.admin": "Admin",
"pagination": "Sivutus",
"header.admin": "Ylläpitäjä",
"header.recent": "Viimeisimmät",
"header.unread": "Lukemattomat",
"header.popular": "Popular",
"header.popular": "Suositut",
"header.users": "Käyttäjät",
"header.chats": "Chats",
"header.notifications": "Notifications",
"header.search": "Etsi",
"header.chats": "Keskustelut",
"header.notifications": "Ilmoitukset",
"header.search": "Hae",
"header.profile": "Profiili",
"notifications.loading": "Ladataan ilmoituksia.",
"notifications.loading": "Ladataan ilmoituksia",
"chats.loading": "Ladataan keskusteluja",
"motd.welcome": "Tervetuloa NodeBB:n, tulevaisuuden keskustelualustalle.",
"motd.welcome": "Tervetuloa NodeBB:hen, tulevaisuuden keskustelualustalle.",
"motd.get": "Hanki NodeBB",
"motd.fork": "Fork",
"motd.fork": "Forkkaa",
"motd.like": "Tykkää",
"motd.follow": "Seuraa",
"previouspage": "Previous Page",
"nextpage": "Next Page",
"alert.success": "Success",
"alert.error": "Error",
"alert.banned": "Banned",
"alert.banned.message": "You are banned you will be logged out!",
"alert.unfollow": "You are no longer following %1!",
"alert.follow": "You are now following %1!",
"posts": "Posts",
"views": "Views",
"posted": "posted",
"in": "in",
"recentposts": "Recent Posts",
"previouspage": "Edellinen sivu",
"nextpage": "Seuraava sivu",
"alert.success": "Onnistui",
"alert.error": "Virhe",
"alert.banned": "Estetty",
"alert.banned.message": "Sinut on estetty ja kirjaudut ulos!",
"alert.unfollow": "Et seuraa enää %1!",
"alert.follow": "Seuraat nyt %1!",
"posts": "Viestit",
"views": "Katsottu",
"posted": "kirjoitettu",
"in": "alueelle",
"recentposts": "Viimeisimmät viestit",
"online": "Online",
"away": "Away",
"dnd": "Do not Disturb",
"invisible": "Invisible",
"away": "Poissa",
"dnd": "Älä häiritse",
"invisible": "Näkymätön",
"offline": "Offline",
"privacy": "Privacy"
"privacy": "Yksityisyys"
}

@ -1,10 +1,10 @@
{
"login": "Kirjaudu sisään",
"username": "Käyttäjän nimi",
"username": "Käyttäjänimi",
"password": "Salasana",
"remember_me": "Muista minut?",
"forgot_password": "Unohtuiko salasana?",
"alternative_logins": "Vaihtoehtoiset sisäänkirjaantumistavat",
"failed_login_attempt": "Sisäänkirjaantuminen epäonnistui, ole hyvä ja yritä uudestaan.",
"forgot_password": "Unohditko salasanasi?",
"alternative_logins": "Vaihtoehtoiset kirjautumistavat",
"failed_login_attempt": "Kirjautumisyritys epäonnistui, ole hyvä ja yritä uudestaan.",
"login_successful": "Olet onnistuneesti kirjautunut sisään!"
}

@ -1,6 +1,6 @@
{
"chat.chatting_with": "Juttele <span id=\"chat-with-name\"></span> kanssa",
"chat.placeholder": "kirjoita viestisi tähän, paina enter lähettääksesi",
"chat.chatting_with": "Keskustele käyttäjän <span id=\"chat-with-name\"></span> kanssa",
"chat.placeholder": "kirjoita viestisi tähän ja paina enter lähettääksesi",
"chat.send": "Lähetä",
"chat.no_active": "Sinulla ei ole aktiivisiä keskusteluita."
"chat.no_active": "Sinulla ei ole aktiivisia keskusteluita."
}

@ -1,8 +1,8 @@
{
"title": "Ilmoitukset",
"no_notifs": "You have no new notifications",
"see_all": "See all Notifications",
"back_to_home": "Takaisin NodeBB:n",
"no_notifs": "Sinulla ei ole uusia ilmoituksia",
"see_all": "Katso kaikki ilmoitukset",
"back_to_home": "Takaisin NodeBB:hen",
"outgoing_link": "Ulkopuolinen linkki",
"outgoing_link_message": "Olet nyt poistumassa",
"continue_to": "Jatka",

@ -1,13 +1,13 @@
{
"home": "Home",
"unread": "Unread Topics",
"popular": "Popular Topics",
"recent": "Recent Topics",
"users": "Registered Users",
"notifications": "Notifications",
"user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
"home": "Etusivu",
"unread": "Lukemattomat aiheet",
"popular": "Suositut aiheet",
"recent": "Viimeisimmät aiheet",
"users": "Rekisteröityneet käyttäjät",
"notifications": "Ilmoitukset",
"user.edit": "Muokataan \"%1\"",
"user.following": "Käyttäjät, joita %1 seuraa",
"user.followers": "Käyttäjät, jotka seuraavat käyttäjää %1",
"user.favourites": "Käyttäjän %1 suosikkiviestit",
"user.settings": "Käyttäjän asetukset"
}

@ -1,7 +1,7 @@
{
"title": "Recent",
"title": "Viimeisimmät",
"day": "Päivä",
"week": "Viikko",
"month": "Kuukausi",
"no_recent_topics": "There are no recent topics."
"no_recent_topics": "Ei viimeisimpiä aiheita."
}

@ -1,18 +1,18 @@
{
"register": "Rekisteröidy",
"help.email": "Oletuksena sähköposti osoitettasi ei näytetä muille .",
"help.username_restrictions": "Yksilöllinen käyttäjänimi, pitää olla %1 - %2 merkkiä pitkä. Toiset voivat mainita sinut @<span id='yourUsername'>käyttäjänimi</span>.",
"help.email": "Oletuksena sähköpostiosoitettasi ei näytetä muille.",
"help.username_restrictions": "Yksilöllisen käyttäjätunnuksen pitää olla %1-%2 merkkiä pitkä. Toiset voivat mainita sinut @<span id='yourUsername'>username</span>.",
"help.minimum_password_length": "Salasanasi pitää olla vähintään %1 merkin mittainen.",
"email_address": "Sähköposti",
"email_address_placeholder": "Anna sähköpostiosoitteesi",
"username": "Käyttäjänimi",
"username_placeholder": "Syötä käyttäjänimesi",
"email_address": "Sähköpostiosoite",
"email_address_placeholder": "Syötä sähköpostiosoitteesi",
"username": "Käyttäjätunnus",
"username_placeholder": "Syötä käyttäjätunnuksesi",
"password": "Salasana",
"password_placeholder": "Syötä salasanasi",
"confirm_password": "Vahvista salasana",
"confirm_password_placeholder": "Vahvista salasana",
"confirm_password": "Vahvista salasanasi",
"confirm_password_placeholder": "Vahvista salasanasi",
"register_now_button": "Rekisteröidy nyt",
"alternative_registration": "Vaihtoehtoiset rekisteröitymistavat",
"terms_of_use": "Terms of Use",
"agree_to_terms_of_use": "I agree to the Terms of Use"
"terms_of_use": "Käyttöehdot",
"agree_to_terms_of_use": "Hyväksyn käyttöehdot"
}

@ -2,12 +2,12 @@
"reset_password": "Palauta salasana",
"update_password": "Päivitä salasana",
"password_changed.title": "Salasana muutettu",
"password_changed.message": "<p>Salasana palautettu onnistunesti, ole hyvä ja <a href=\"/login\">kirjaudu sisään uudestaan.</a>.",
"password_changed.message": "<p>Salasanasi on palautettu onnistuneesti, ole hyvä ja <a href=\"/login\">kirjaudu uudestaan</a>.",
"wrong_reset_code.title": "Väärä palautuskoodi",
"wrong_reset_code.message": "Annettu palautuskoodi oli väärä. Ole hyvä yritä uudelleen, tai <a href=\"/reset\">pyydä uutta palautuskoodia</a>.",
"wrong_reset_code.message": "Annettu palautuskoodi oli väärä. Ole hyvä ja yritä uudelleen tai <a href=\"/reset\">pyydä uutta palautuskoodia</a>.",
"new_password": "Uusi salasana",
"repeat_password": "Vahvista salasana",
"enter_email": "Syötä <strong>sähköpostiosoitteesi</strong> niin me lähetämänne Sinulle ohjeet kuinka voit palauttaa käyttäjätilisi.",
"password_reset_sent": "Salasanan palautus lähetetty",
"invalid_email": "Väärä sähköpostiosoite / Sähköpostiosoitetta ei ole!"
"enter_email": "Syötä <strong>sähköpostiosoitteesi</strong>, niin me lähetämme sinulle sähköpostilla ohjeet käyttäjätilisi palauttamiseksi.",
"password_reset_sent": "Salasanan palautuskoodi lähetetty",
"invalid_email": "Virheellinen sähköpostiosoite / Sähköpostiosoitetta ei ole olemassa!"
}

@ -1,65 +1,73 @@
{
"topic": "Keskustelu",
"topics": "Keskustelut",
"no_topics_found": "Keskusteluja ei löytynyt!",
"no_posts_found": "No posts found!",
"topic": "Aihe",
"topics": "Aiheet",
"no_topics_found": "Aiheita ei löytynyt!",
"no_posts_found": "Viestejä ei löytynyt!",
"profile": "Profiili",
"posted_by": "Posted by",
"chat": "Juttele",
"notify_me": "Ilmoita uusista viesteistä tässä keskustelussa",
"posted_by": "Kirjoittanut",
"chat": "Keskustele",
"notify_me": "Ilmoita, kun tähän keskusteluun tulee uusia viestejä",
"quote": "Lainaa",
"reply": "Vastaa",
"edit": "Muokkaa",
"delete": "Poista",
"move": "Siirrä",
"fork": "Haaroita",
"banned": "banned",
"link": "Linkkaa",
"banned": "estetty",
"link": "Linkitä",
"share": "Jaa",
"tools": "Työkalut",
"flag": "Flag",
"flag_title": "Flag this post for moderation",
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"watch": "Watch",
"share_this_post": "Share this Post",
"thread_tools.title": "Ketjun työkalut",
"thread_tools.markAsUnreadForAll": "Merkitse luetuiksi",
"thread_tools.pin": "Pin Topic",
"thread_tools.unpin": "Unpin Topic",
"thread_tools.lock": "Lock Topic",
"thread_tools.unlock": "Unlock Topic",
"thread_tools.move": "Move Topic",
"thread_tools.fork": "Fork Topic",
"thread_tools.delete": "Delete Topic",
"thread_tools.restore": "Restore Topic",
"flag": "Ilmianna",
"flag_title": "Ilmianna tämä viesti moderaattoreille",
"deleted_message": "Tämä viestiketju on poistettu. Vain käyttäjät, joilla on viestiketjujen hallintaoikeudet, voivat nähdä sen.",
"following_topic.title": "Seurataan aihetta",
"following_topic.message": "Saat nyt ilmoituksen, kun joku kirjoittaa tähän aiheeseen.",
"not_following_topic.title": "Et seuraa aihetta",
"not_following_topic.message": "Et saa enää ilmoituksia tästä aiheesta.",
"login_to_subscribe": "Ole hyvä ja rekisteröidy tai kirjaudu sisään tilataksesi tämän aiheen",
"watch": "Tarkkaile",
"share_this_post": "Jaa tämä viesti",
"thread_tools.title": "Aiheen työkalut",
"thread_tools.markAsUnreadForAll": "Merkitse lukemattomaksi",
"thread_tools.pin": "Kiinnitä aihe",
"thread_tools.unpin": "Poista aiheen kiinnitys",
"thread_tools.lock": "Lukitse aihe",
"thread_tools.unlock": "Poista aiheen lukitus",
"thread_tools.move": "Siirrä aihe",
"thread_tools.fork": "Haaroita aihe",
"thread_tools.delete": "Poista aihe",
"thread_tools.restore": "Palauta aihe",
"load_categories": "Ladataan aihealueita",
"disabled_categories_note": "Käytöstä poistetut aihealueetta ovat harmaina",
"disabled_categories_note": "Käytöstä poistetut aihealueet ovat harmaina",
"confirm_move": "Siirrä",
"confirm_fork": "Haaroita",
"favourite": "Suosikki",
"favourite": "Lisää suosikiksi",
"favourites": "Suosikit",
"favourites.not_logged_in.title": "Ei kirjaantuneena sisään",
"favourites.not_logged_in.message": "Kirjaudu sisään jotta voit lisätä tämän viestin suosikkeihisi.",
"favourites.has_no_favourites": "Sinulla ei ole yhtään suosikkiviestiä.",
"vote.not_logged_in.title": "Not Logged In",
"vote.not_logged_in.message": "Please log in in order to vote",
"vote.cant_vote_self.title": "Invalid Vote",
"vote.cant_vote_self.message": "You cannot vote for your own post",
"favourites.not_logged_in.title": "Et ole kirjautunut",
"favourites.not_logged_in.message": "Kirjaudu sisään, jotta voit lisätä tämän viestin suosikkeihisi",
"favourites.has_no_favourites": "Sinulla ei ole yhtään suosikkiviestiä. Lisää joitakin viestejä suosikeiksi nähdäksesi ne täällä!",
"vote.not_logged_in.title": "Et ole kirjautunut",
"vote.not_logged_in.message": "Kirjaudu sisään äänestääksesi",
"vote.cant_vote_self.title": "Virheellinen ääni",
"vote.cant_vote_self.message": "Et voi äänestää omaa viestiäsi",
"loading_more_posts": "Ladataan lisää viestejä",
"move_topic": "Siirrä keskustelu",
"move_topic": "Siirrä aihe",
"move_post": "Siirrä viesti",
"fork_topic": "Haaroita keskustelu",
"topic_will_be_moved_to": "Tämä keskustelu siirretään aihealueelle ",
"fork_topic_instruction": "Klikkaa viestejä jotka haluat haaroittaa",
"topic_will_be_moved_to": "Tämä keskustelu siirretään aihealueelle",
"fork_topic_instruction": "Napsauta viestejä, jotka haluat haaroittaa",
"fork_no_pids": "Ei valittuja viestejä!",
"fork_success": "Keskustelu haaroitettu onnistuneesti!",
"reputation": "Maine",
"posts": "Viestejä",
"composer.title_placeholder": "Enter your topic title here...",
"composer.write": "Write",
"composer.preview": "Preview",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to",
"composer.new_topic": "New Topic"
"composer.title_placeholder": "Syötä aiheesi otsikko tähän...",
"composer.write": "Kirjoita",
"composer.preview": "Esikatsele",
"composer.discard": "Hylkää",
"composer.submit": "Lähetä",
"composer.replying_to": "Vastataan aiheeseen",
"composer.new_topic": "Uusi aihe",
"composer.drag_and_drop_images": "Vedä ja pudota kuvat tähän",
"composer.content_is_parsed_with": "Sisältö jäsennetään muodossa",
"composer.upload_instructions": "Lataa kuvia vetämällä & pudottamalla ne."
}

@ -1,6 +1,6 @@
{
"title": "Unread",
"no_unread_topics": "Ei lukemattomia keskusteluja.",
"title": "Lukematon",
"no_unread_topics": "Ei lukemattomia aiheita.",
"mark_all_read": "Merkitse kaikki luetuiksi",
"load_more": "Lataa lisää"
}

@ -1,47 +1,47 @@
{
"banned": "Porttikiellossa",
"banned": "Bannattu",
"offline": "Offline",
"username": "Käyttäjän nimi",
"email": "Sähköposti",
"fullname": "Kokonimi",
"fullname": "Koko nimi",
"website": "Kotisivu",
"location": "Sijainti",
"age": "Ikä",
"joined": "Liittynyt",
"lastonline": "Viimeksi online",
"profile": "Profile",
"profile_views": "Profiilin katselukerrat",
"profile": "Profiili",
"profile_views": "Profiilia katsottu",
"reputation": "Maine",
"posts": "Viestit",
"favourites": "Favourites",
"favourites": "Suosikit",
"followers": "Seuraajat",
"following": "Seuraa",
"following": "Seuratut",
"signature": "Allekirjoitus",
"gravatar": "Gravatar",
"birthday": "Syntymäpäivä",
"chat": "Chat",
"follow": "Follow",
"unfollow": "Unfollow",
"change_picture": "Vaihda kuvaa",
"chat": "Keskustele",
"follow": "Seuraa",
"unfollow": "Älä seuraa",
"change_picture": "Vaihda kuva",
"edit": "Muokkaa",
"uploaded_picture": "Siirretty kuva",
"upload_new_picture": "Siirrä uusi kuva",
"current_password": "Current Password",
"change_password": "Vaihda salasanaa",
"confirm_password": "Vahvista salasanaa",
"uploaded_picture": "Ladattu kuva",
"upload_new_picture": "Lataa uusi kuva",
"current_password": "Nykyinen salasana",
"change_password": "Vaihda salasana",
"confirm_password": "Vahvista salasana",
"password": "Salasana",
"upload_picture": "Siirrä kuva",
"upload_a_picture": "Siirrä kuva",
"image_spec": "You may only upload PNG, JPG, or GIF files",
"upload_picture": "Lataa kuva",
"upload_a_picture": "Lataa kuva",
"image_spec": "Voit ladata vain PNG-, JPG- tai GIF-tiedostoja",
"max": "max.",
"settings": "Settings",
"settings": "Asetukset",
"show_email": "Näytä sähköpostiosoitteeni",
"has_no_follower": "Tällä käyttäjällä ei ole yhtään seuraaja :(",
"has_no_follower": "Kukaan ei seuraa tätä käyttäjää :(",
"follows_no_one": "Tämä käyttäjä ei seuraa ketään :(",
"has_no_posts": "This user didn't post anything yet.",
"has_no_posts": "Tämä käyttäjä ei ole kirjoittanut vielä mitään.",
"email_hidden": "Sähköposti piilotettu",
"hidden": "piilotettu",
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
"topics_per_page": "Topics per Page",
"posts_per_page": "Posts per Page"
"paginate_description": "Sivuta aiheet ja viestit loputtoman vierittämisen sijaan.",
"topics_per_page": "Aihetta per sivu",
"posts_per_page": "Viestiä per sivu"
}

@ -1,9 +1,9 @@
{
"latest_users": "Viimeisimmät Käyttäjät",
"latest_users": "Viimeisimmät käyttäjät",
"top_posters": "Aktiivisimmat viestittelijät",
"most_reputation": "Eniten mainetta",
"online": "Online",
"search": "Etsi",
"enter_username": "Syötä käyttäjänimi etsiäksesi",
"search": "Hae",
"enter_username": "Syötä käyttäjätunnus hakeaksesi",
"load_more": "Lataa lisää"
}

@ -20,6 +20,11 @@
"flag": "Jelentés",
"flag_title": "A hozzászólás jelentése a moderátoroknál",
"deleted_message": "Ez a topik törölve lett. Kizárólag azok a felhasználók láthatják, akiknek joga van hozzá.",
"following_topic.title": "Following Topic",
"following_topic.message": "You will now be receiving notifications when somebody posts to this topic.",
"not_following_topic.title": "Not Following Topic",
"not_following_topic.message": "You will no longer receive notifications from this topic.",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic",
"watch": "Watch",
"share_this_post": "Share this Post",
"thread_tools.title": "Téma Eszközök",
@ -57,9 +62,12 @@
"posts": "Hozzászólás",
"composer.title_placeholder": "Írd be a témanevet...",
"composer.write": "Ír",
"composer.preview": "Előnet",
"composer.preview": "Előnézet",
"composer.discard": "Elvet",
"composer.submit": "Küldés",
"composer.replying_to": "Válasz erre:",
"composer.new_topic": "Új Topik"
"composer.new_topic": "Új Topik",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.content_is_parsed_with": "Content is parsed with",
"composer.upload_instructions": "Upload images by dragging & dropping them."
}

@ -1,14 +1,14 @@
{
"new_topic_button": "Nuova Discussione",
"new_topic_button": "Nuovo Argomento",
"no_topics": "<strong>Non ci sono discussioni in questa categoria.</strong><br />Perché non ne inizi una?",
"sidebar.recent_replies": "Risposte Recenti",
"sidebar.active_participants": "Partecipanti Attivi",
"sidebar.moderators": "Moderatori",
"posts": "post",
"views": "visualizzazioni",
"posted": "inserito",
"browsing": "navigazione",
"no_replies": "Non ha ancora risposto nessuno",
"posted": "postato",
"browsing": "visualizzando",
"no_replies": "Nessuno ha risposto",
"replied": "risposto",
"last_edited_by": "ultima modifica di"
}

@ -1,7 +1,7 @@
{
"stats.online": "Online",
"stats.users": "Utenti",
"stats.topics": "Discussioni",
"stats.topics": "Argomenti",
"stats.posts": "Post",
"success": "successo"
}

@ -10,47 +10,49 @@
"500.message": "Oops! Qualcosa non funziona come si deve!",
"register": "Registrazione",
"login": "Login",
"welcome_back": "Welcome Back ",
"you_have_successfully_logged_in": "You have successfully logged in",
"please_log_in": "Per favore Accedi",
"posting_restriction_info": "L'inserimento è attualmente ristretto ai soli utenti registrati, clicca qui per effettuare l'accesso.",
"welcome_back": "Bentornato",
"you_have_successfully_logged_in": "Login avvenuto con successo",
"logout": "Logout",
"logout.title": "Disconnessione avvenuta.",
"logout.message": "Logout effettuato con successo",
"save_changes": "Salva",
"save_changes": "Salva cambiamenti",
"close": "Chiudi",
"pagination": "Pagination",
"pagination": "Paginazione",
"header.admin": "Amministratore",
"header.recent": "Recenti",
"header.unread": "Non letti",
"header.popular": "Popular",
"header.popular": "Popolare",
"header.users": "Utenti",
"header.chats": "Chats",
"header.notifications": "Notifications",
"header.chats": "Messaggi",
"header.notifications": "Notifiche",
"header.search": "Cerca",
"header.profile": "Profilo",
"notifications.loading": "Caricamento delle Notifiche",
"chats.loading": "Caricamento delle Chat",
"motd.welcome": "Benvenuti al NodeBB, la piattaforma di discussione del futuro.",
"motd.get": "Ottenere NodeBB",
"motd.fork": "Fork",
"chats.loading": "Caricamento Messaggi",
"motd.welcome": "Benvenuti in NodeBB, la piattaforma di discussione del futuro.",
"motd.get": "Ottieni NodeBB",
"motd.fork": "Dividi",
"motd.like": "Mi piace",
"motd.follow": "Segui",
"previouspage": "Previous Page",
"nextpage": "Next Page",
"alert.success": "Success",
"alert.error": "Error",
"alert.banned": "Banned",
"alert.banned.message": "You are banned you will be logged out!",
"alert.unfollow": "You are no longer following %1!",
"alert.follow": "You are now following %1!",
"posts": "Posts",
"views": "Views",
"posted": "posted",
"previouspage": "Pagina Precedente",
"nextpage": "Pagina Successiva",
"alert.success": "Riuscito",
"alert.error": "Errore",
"alert.banned": "Bannato",
"alert.banned.message": "Sei bannato e verrai disconnesso!",
"alert.unfollow": "Non stai più seguendo %1!",
"alert.follow": "Stai seguendo %1!",
"posts": "Post",
"views": "Visualizzazioni",
"posted": "postato",
"in": "in",
"recentposts": "Recent Posts",
"recentposts": "Post Recenti",
"online": "Online",
"away": "Away",
"dnd": "Do not Disturb",
"invisible": "Invisible",
"offline": "Offline",
"away": "Non disponibile",
"dnd": "Non disturbare",
"invisible": "Invisibile",
"offline": "Non in linea",
"privacy": "Privacy"
}

@ -1,5 +1,5 @@
{
"name": "Italiano",
"code": "it",
"code": "it_IT",
"dir": "ltr"
}

@ -1,10 +1,10 @@
{
"login": "Login",
"login": "Accedi",
"username": "Nome utente",
"password": "Password",
"remember_me": "Memorizzami?",
"forgot_password": "Password dimenticata?",
"alternative_logins": "Login Alternativi",
"failed_login_attempt": "Tentativo di login fallito; prova ancora.",
"login_successful": "Login avvenuto con successo!"
"alternative_logins": "Accessi Alternativi",
"failed_login_attempt": "Tentativo di accesso fallito, prova ancora.",
"login_successful": "Sei entrato con successo!"
}

@ -1,6 +1,6 @@
{
"chat.chatting_with": "Chatta con <span id=\"chat-with-name\"></span>",
"chat.placeholder": "scrivi un messaggio qui e premi Invio",
"chat.placeholder": "scrivi un messaggio qui, poi premi Invio",
"chat.send": "Invia",
"chat.no_active": "Non hai le chat attive."
"chat.no_active": "Non hai discussioni attive."
}

@ -1,10 +1,10 @@
{
"title": "Notifiche",
"no_notifs": "You have no new notifications",
"see_all": "See all Notifications",
"no_notifs": "Non hai nuove notifiche",
"see_all": "Vedi tutte le Notifiche",
"back_to_home": "Torna alla pagina iniziale",
"outgoing_link": "Link in uscita",
"outgoing_link_message": "Ci stai abbandonando",
"outgoing_link_message": "Stai lasciando",
"continue_to": "Continua verso",
"return_to": "Ritorna a "
}

@ -1,13 +1,13 @@
{
"home": "Home",
"unread": "Unread Topics",
"popular": "Popular Topics",
"recent": "Recent Topics",
"users": "Registered Users",
"notifications": "Notifications",
"user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
"unread": "Argomenti non letti",
"popular": "Argomenti Popolari",
"recent": "Argomenti Recenti",
"users": "Utenti Registrati",
"notifications": "Notifiche",
"user.edit": "Modificando \"%1\"",
"user.following": "%1 Persone seguono",
"user.followers": "Persone che seguono %1",
"user.favourites": "Post Favoriti di %1",
"user.settings": "Impostazioni Utente"
}

@ -1,7 +1,7 @@
{
"title": "Recent",
"title": "Recenti",
"day": "Giorno",
"week": "Settimana",
"month": "Mese",
"no_recent_topics": "There are no recent topics."
"no_recent_topics": "Non ci sono discussioni recenti."
}

@ -13,6 +13,6 @@
"confirm_password_placeholder": "Conferma la Password",
"register_now_button": "Registrati",
"alternative_registration": "Altri metodi di registrazione",
"terms_of_use": "Terms of Use",
"agree_to_terms_of_use": "I agree to the Terms of Use"
"terms_of_use": "Termini di Utilizzo",
"agree_to_terms_of_use": "Accetto i Termini di Utilizzo"
}

@ -2,9 +2,9 @@
"reset_password": "Resetta la Password",
"update_password": "Cambia la Password",
"password_changed.title": "Password Modificata",
"password_changed.message": "<p>La password è stata resettata con successo. <a href=\"/login\">Effettua di nuovo il log in</a>.",
"password_changed.message": "<p>La password è stata resettata con successo. <a href=\"/login\">Effettua di nuovo l'accesso</a>.",
"wrong_reset_code.title": "Codice di reset non corretto",
"wrong_reset_code.message": "Il codice di reset ricevuto non è corretto. Prova ancora, o <a href=\"/reset\">richiedi un nuovo codice</a>.",
"wrong_reset_code.message": "Il codice di reset ricevuto non è corretto. Prova ancora, oppure <a href=\"/reset\">richiedi un nuovo codice</a>.",
"new_password": "Nuova Password",
"repeat_password": "Conferma la Password",
"enter_email": "Inserisci il tuo <strong>indirizzo email</strong> e ti invieremo un'email con le istruzioni per resettare il tuo account.",

@ -1,10 +1,10 @@
{
"topic": "Discussione",
"topics": "Discussioni",
"topic": "Argomento",
"topics": "Argomenti",
"no_topics_found": "Nessuna discussione trovata!",
"no_posts_found": "No posts found!",
"no_posts_found": "Nessun post trovato!",
"profile": "Profilo",
"posted_by": "Posted by",
"posted_by": "Inviato da",
"chat": "Chat",
"notify_me": "Ricevi notifiche di nuove risposte in questa discussione",
"quote": "Citazione",
@ -12,54 +12,62 @@
"edit": "Modifica",
"delete": "Cancella",
"move": "Muovi",
"fork": "Fork",
"fork": "Dividi",
"banned": "bannato",
"link": "Link",
"share": "Share",
"tools": "Tools",
"flag": "Flag",
"flag_title": "Flag this post for moderation",
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"watch": "Watch",
"share_this_post": "Share this Post",
"share": "Condividi",
"tools": "Strumenti",
"flag": "Segnala",
"flag_title": "Segnala questo post per la moderazione",
"deleted_message": "Questo argomento è stato cancellato. Solo gli utenti che possono gestire gli argomenti riescono a vederlo.",
"following_topic.title": "Argomento seguente",
"following_topic.message": "Da ora riceverai notifiche quando qualcuno posterà in questa discussione.",
"not_following_topic.title": "Non stai seguendo questo argomento",
"not_following_topic.message": "Non riceverai più notifiche da questa discussione.",
"login_to_subscribe": "Per favore registrati o accedi per sottoscrivere questo argomento",
"watch": "Guarda",
"share_this_post": "Condividi questo Post",
"thread_tools.title": "Strumenti per il Thread",
"thread_tools.markAsUnreadForAll": "Mark Unread",
"thread_tools.pin": "Pin Topic",
"thread_tools.unpin": "Unpin Topic",
"thread_tools.lock": "Lock Topic",
"thread_tools.unlock": "Unlock Topic",
"thread_tools.move": "Move Topic",
"thread_tools.fork": "Fork Topic",
"thread_tools.delete": "Delete Topic",
"thread_tools.restore": "Restore Topic",
"load_categories": "Caricamento delle Categorie",
"thread_tools.markAsUnreadForAll": "Segna come non letto",
"thread_tools.pin": "Pinna Argomento",
"thread_tools.unpin": "Unpin Argomento",
"thread_tools.lock": "Blocca Discussione",
"thread_tools.unlock": "Sblocca Discussione",
"thread_tools.move": "Sposta Discussione",
"thread_tools.fork": "Dividi Discussione",
"thread_tools.delete": "Elimina Discussione",
"thread_tools.restore": "Ripristina Discussione",
"load_categories": "Caricamento Categorie",
"disabled_categories_note": "Le Categorie disabilitate sono in grigio",
"confirm_move": "Sposta",
"confirm_fork": "Fork",
"confirm_fork": "Dividi",
"favourite": "Preferito",
"favourites": "Preferiti",
"favourites.not_logged_in.title": "Non collegato/a",
"favourites.not_logged_in.message": "Log in per aggiungere questo post ai preferiti",
"favourites.not_logged_in.message": "Accedi per aggiungere questo post ai preferiti",
"favourites.has_no_favourites": "Non hai ancun post preferito; aggiungi qualche post ai preferiti per vederli qui!",
"vote.not_logged_in.title": "Not Logged In",
"vote.not_logged_in.message": "Please log in in order to vote",
"vote.cant_vote_self.title": "Invalid Vote",
"vote.cant_vote_self.message": "You cannot vote for your own post",
"vote.not_logged_in.title": "Non loggato",
"vote.not_logged_in.message": "Accedi per poter votare",
"vote.cant_vote_self.title": "Voto non valido",
"vote.cant_vote_self.message": "Non puoi votare per i tuoi post",
"loading_more_posts": "Caricamento altri post",
"move_topic": "Spsota Discussione",
"move_topic": "Sposta Discussione",
"move_post": "Sposta Post",
"fork_topic": "Fork Topic",
"fork_topic": "Dividi il Topic",
"topic_will_be_moved_to": "Questa discussione verrà spostata nella categoria",
"fork_topic_instruction": "Clicca sui post che vuoi forkare",
"fork_topic_instruction": "Clicca sui post che vuoi dividere",
"fork_no_pids": "Nessun post selezionato!",
"fork_success": "Discussione forkata con successo!",
"fork_success": "Discussione divisa con successo!",
"reputation": "Reputazione",
"posts": "Post",
"composer.title_placeholder": "Enter your topic title here...",
"composer.write": "Write",
"composer.preview": "Preview",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to",
"composer.new_topic": "New Topic"
"composer.title_placeholder": "Inserisci qui il titolo della discussione...",
"composer.write": "Scrivi",
"composer.preview": "Anteprima",
"composer.discard": "Scarta",
"composer.submit": "Invia",
"composer.replying_to": "Rispondendo a",
"composer.new_topic": "Nuovo Argomento",
"composer.drag_and_drop_images": "Trascina e rilascia le immagini qui",
"composer.content_is_parsed_with": "Il contenuto è analizzato con",
"composer.upload_instructions": "Carica immagini trascinandole e rilasciandole."
}

@ -1,5 +1,5 @@
{
"title": "Unread",
"title": "Non letto",
"no_unread_topics": "Non ci sono discussioni non lette.",
"mark_all_read": "Segna tutto come già letto",
"load_more": "Carica Altro"

@ -9,39 +9,39 @@
"age": "Età",
"joined": "Iscrizione",
"lastonline": "Ultima volta in linea",
"profile": "Profile",
"profile": "Profilo",
"profile_views": "Visite al profilo",
"reputation": "Reputazione",
"posts": "Post",
"favourites": "Favourites",
"favourites": "Favoriti",
"followers": "Da chi è seguito",
"following": "Chi segue",
"signature": "Firma",
"gravatar": "Gravatar",
"birthday": "Data di nascita",
"chat": "Chat",
"follow": "Follow",
"unfollow": "Unfollow",
"change_picture": "Cambia la foto",
"follow": "Segui",
"unfollow": "Smetti di seguire",
"change_picture": "Cambia Foto",
"edit": "Modifica",
"uploaded_picture": "Foto caricata",
"upload_new_picture": "Carica una nuova foto",
"current_password": "Current Password",
"current_password": "Password corrente",
"change_password": "Cambia la Password",
"confirm_password": "Conferma la Password",
"password": "Password",
"upload_picture": "Carica foto",
"upload_a_picture": "Carica una foto",
"image_spec": "You may only upload PNG, JPG, or GIF files",
"max": "max.",
"settings": "Settings",
"image_spec": "Puoi caricare solo file PNG, JPG o GIF",
"max": "massimo.",
"settings": "Impostazioni",
"show_email": "Mostra la mia Email",
"has_no_follower": "Questo utente non è seguito da nessuno :(",
"follows_no_one": "Questo utente non segue nessuno :(",
"has_no_posts": "This user didn't post anything yet.",
"has_no_posts": "Questo utente non ha ancora postato nulla.",
"email_hidden": "Email Nascosta",
"hidden": "nascosta",
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
"topics_per_page": "Topics per Page",
"posts_per_page": "Posts per Page"
"paginate_description": "Dividi argomenti e post in pagine anziché usare lo scroll infinito.",
"topics_per_page": "Argomenti per Pagina",
"posts_per_page": "Post per Pagina"
}

@ -5,5 +5,5 @@
"online": "In linea",
"search": "Cerca",
"enter_username": "Inserisci il nome utente da cercare",
"load_more": "Carica di più"
"load_more": "Carica altri"
}

@ -0,0 +1,14 @@
{
"new_topic_button": "Nieuw onderwerp",
"no_topics": "<strong>Er zijn geen onderwerpen in deze categorie.</strong><br />Waarom maak je er niet een aan?",
"sidebar.recent_replies": "Recente Reacties",
"sidebar.active_participants": "Actieve Deelnemers",
"sidebar.moderators": "Moderators",
"posts": "berichten",
"views": "weergaven",
"posted": "geplaatst",
"browsing": "verkennen",
"no_replies": "Niemand heeft gereageerd",
"replied": "gereageerd",
"last_edited_by": "voor het laatst aangepast door"
}

@ -0,0 +1,7 @@
{
"stats.online": "Online",
"stats.users": "Gebruikers",
"stats.topics": "Onderwerpen",
"stats.posts": "Berichten",
"success": "succes"
}

@ -0,0 +1,58 @@
{
"home": "Home",
"search": "Zoeken",
"buttons.close": "Sluiten",
"403.title": "Toegang Geweigerd",
"403.message": "Het lijkt erop dat je op een pagina beland bent waar je geen toegang tot hebt. Misschien moet je <a href='/login'>inloggen</a>?",
"404.title": "Niet Gevonden",
"404.message": "Het lijkt erop dat je op een pagina beland bent die niet bestaat. Ga terug naar de <a href='/'>home pagina</a>.",
"500.title": "Interne fout.",
"500.message": "Oeps! Het lijkt erop dat iets is fout gegaan!",
"register": "Registeren",
"login": "Inloggen",
"please_log_in": "Please Log In",
"posting_restriction_info": "Posting is currently restricted to registered members only, click here to log in.",
"welcome_back": "Welcome Back ",
"you_have_successfully_logged_in": "You have successfully logged in",
"logout": "Uitloggen",
"logout.title": "Je bent nu uitgelogd.",
"logout.message": "Je bent met succes uitgelogd van NodeBB",
"save_changes": "Aanpassingen Opslaan",
"close": "Sluiten",
"pagination": "Pagination",
"header.admin": "Admin",
"header.recent": "Recent",
"header.unread": "Ongelezen",
"header.popular": "Populair",
"header.users": "Gebruikers",
"header.chats": "Chats",
"header.notifications": "Notificaties",
"header.search": "Zoeken",
"header.profile": "Profiel",
"notifications.loading": "Notificaties Laden",
"chats.loading": "Chats Laden",
"motd.welcome": "Welkom bij NodeBB, het discussie platform van de toekomst.",
"motd.get": "Verkrijg NodeBB",
"motd.fork": "Fork",
"motd.like": "Like",
"motd.follow": "Volgen",
"previouspage": "Vorige Pagina",
"nextpage": "Volgende Pagina",
"alert.success": "Succes",
"alert.error": "Fout",
"alert.banned": "Verbannen",
"alert.banned.message": "Je bent verbannen en zal uitgelogd worden!",
"alert.unfollow": "Je volgt niet langer %1!",
"alert.follow": "Je volgt nu %1!",
"posts": "Berichten",
"views": "Weergaven",
"posted": "geplaatst",
"in": "in",
"recentposts": "Recente Berichten",
"online": "Online",
"away": "Afwezig",
"dnd": "Niet Storen",
"invisible": "Onzichtbaar",
"offline": "Offline",
"privacy": "Privacy"
}

@ -0,0 +1,5 @@
{
"name": "Nederlands",
"code": "nl",
"dir": "ltr"
}

@ -0,0 +1,10 @@
{
"login": "Inloggen",
"username": "Gebruikersnaam",
"password": "Wachtwoord",
"remember_me": "Mij Onthouden?",
"forgot_password": "Wachtwoord Vergeten?",
"alternative_logins": "Alternatieve Logins",
"failed_login_attempt": "Mislukte inlog poging, probeer het later opnieuw.",
"login_successful": "Je bent succesvol ingelogd!"
}

@ -0,0 +1,6 @@
{
"chat.chatting_with": "Chat met <span id=\"chat-with-name\"></span>",
"chat.placeholder": "type chat bericht hier, druk op enter om te verzenden",
"chat.send": "Verzenden",
"chat.no_active": "Je hebt geen actieve chats."
}

@ -0,0 +1,10 @@
{
"title": "Notificaties",
"no_notifs": "You have no new notifications",
"see_all": "Bekijk alle Notificaties",
"back_to_home": "Terug naar NodeBB",
"outgoing_link": "Uitgaande Link",
"outgoing_link_message": "Je verlaat nu",
"continue_to": "Doorgaan naar",
"return_to": "Teruggaan naar"
}

@ -0,0 +1,13 @@
{
"home": "Home",
"unread": "Ongelezen Onderwerpen",
"popular": "Popular Topics",
"recent": "Recente Onderwerpen",
"users": "Geregistreerde Gebruikers",
"notifications": "Notificaties",
"user.edit": "\"%1\" aanpassen",
"user.following": "Mensen %1 Volgt",
"user.followers": "Mensen die %1 Volgen",
"user.favourites": "%1's Favoriete Berichten",
"user.settings": "Gebruikersinstellingen"
}

@ -0,0 +1,7 @@
{
"title": "Recent",
"day": "Dag",
"week": "Week",
"month": "Maand",
"no_recent_topics": "Er zijn geen recente reacties."
}

@ -0,0 +1,18 @@
{
"register": "Registreren",
"help.email": "Je email is standaard verborgen voor andere gebruikers.",
"help.username_restrictions": "Een unieke gebruikersnaam tussen %1 en %2 karakters. Anderen kunnen je vermelden met @<span id='yourUsername'>gebruikersnaam</span>.",
"help.minimum_password_length": "Je wachtwoord moet tenminste %1 karakters lang zijn.",
"email_address": "Email Adres",
"email_address_placeholder": "Vul Email Adres in",
"username": "Gebruikersnaam",
"username_placeholder": "Vul Gebruikersnaam in",
"password": "Wachtwoord",
"password_placeholder": "Vul Wachtwoord in",
"confirm_password": "Bevestig Wachtwoord",
"confirm_password_placeholder": "Bevestig Wachtwoord",
"register_now_button": "Nu Registreren",
"alternative_registration": "Alternatieve Registratie",
"terms_of_use": "Gebruiksvoorwaarden",
"agree_to_terms_of_use": "Ik ga akkoord van de Gebruiksvoorwaarden"
}

@ -0,0 +1,13 @@
{
"reset_password": "Wachtwoord opnieuw instellen",
"update_password": "Wachtwoord Updaten",
"password_changed.title": "Wachtwoord Veranderd",
"password_changed.message": "<p>Wachtwoord is met succes gereset, log a.u.b. <a href=\"/login\">opnieuw in</a>.",
"wrong_reset_code.title": "Incorrecte Reset Code",
"wrong_reset_code.message": "De ontvangen reset code is incorrect. Probeer het opnieuw, of <a href=\"/reset\">vraag een nieuwe code aan</a>.",
"new_password": "Nieuw Wachtwoord",
"repeat_password": "Bevestig Wachtwoord",
"enter_email": "Vul a.u.b. je <strong>email address</strong> in en we versturen je een email met de stappen hoe je je account reset.",
"password_reset_sent": "Wachtwoord Reset Verzonden",
"invalid_email": "Fout Email Adres / Email Adres bestaat niet!"
}

@ -0,0 +1,73 @@
{
"topic": "Onderwerp",
"topics": "Onderwerpen",
"no_topics_found": "Geen onderwerpen gevonden!",
"no_posts_found": "Geen berichten gevonden!",
"profile": "Profiel",
"posted_by": "Geplaatst door",
"chat": "Chat",
"notify_me": "Krijg notificaties van nieuwe reacties op dit onderwerp",
"quote": "Citeren",
"reply": "Reageren",
"edit": "Aanpassen",
"delete": "Verwijderen",
"move": "Verplaatsen",
"fork": "Fork",
"banned": "verbannen",
"link": "Link",
"share": "Delen",
"tools": "Gereedschap",
"flag": "Markeren",
"flag_title": "Dit bericht markeren voor moderatie",
"deleted_message": "Dit onderwerp is verwijderd. Alleen gebruikers met onderwerp management privileges kunnen dit onderwerp zien.",
"following_topic.title": "Following Topic",
"following_topic.message": "You will now be receiving notifications when somebody posts to this topic.",
"not_following_topic.title": "Not Following Topic",
"not_following_topic.message": "You will no longer receive notifications from this topic.",
"login_to_subscribe": "Please register or log in in order to subscribe to this topic",
"watch": "Watch",
"share_this_post": "Share this Post",
"thread_tools.title": "Thread Gereedschap",
"thread_tools.markAsUnreadForAll": "Ongelezen Markeren",
"thread_tools.pin": "Onderwerp Vastmaken",
"thread_tools.unpin": "Onderwerp Losmaken",
"thread_tools.lock": "Onderwerp Sluiten",
"thread_tools.unlock": "Onderwerp Openen",
"thread_tools.move": "Onderwerp Verplaatsen",
"thread_tools.fork": "Onderwerp Forken",
"thread_tools.delete": "Onderwerp Verwijderen",
"thread_tools.restore": "Onderwerp Herstellen",
"load_categories": "Categorieën Laden",
"disabled_categories_note": "Uitgeschakelde Categorieën zijn grijs",
"confirm_move": "Verplaatsen",
"confirm_fork": "Fork",
"favourite": "Favoriet",
"favourites": "Favorieten",
"favourites.not_logged_in.title": "Niet Ingelogd",
"favourites.not_logged_in.message": "Log a.u.b. in om dit bericht als Favoriet op te slaan",
"favourites.has_no_favourites": "Je hebt geen favorieten, sla een aantal berichten op als favoriet om ze hier te zien!",
"vote.not_logged_in.title": "Niet Ingelogd",
"vote.not_logged_in.message": "Log a.u.b. in om te kunnen stemmen",
"vote.cant_vote_self.title": "Ongeldige Stem",
"vote.cant_vote_self.message": "Je kan niet op je eigen berichten stemmen",
"loading_more_posts": "Meer Berichten Laden",
"move_topic": "Onderwerp Verplaatsen",
"move_post": "Bericht Verplaatsen",
"fork_topic": "Onderwerp Forken",
"topic_will_be_moved_to": "Dit onderwerp zal verplaatst worden naar de categorie",
"fork_topic_instruction": "Klik op de berichten die je wilt forken",
"fork_no_pids": "Geen berichten geselecteerd!",
"fork_success": "Onderwerp is met succes geforkt!",
"reputation": "Reputatie",
"posts": "Berichten",
"composer.title_placeholder": "Vul de titel voor het onderwerp hier in...",
"composer.write": "Schrijven",
"composer.preview": "Voorbeeld",
"composer.discard": "Annuleren",
"composer.submit": "Opslaan",
"composer.replying_to": "Reageren op",
"composer.new_topic": "Nieuw Onderwerp",
"composer.drag_and_drop_images": "Drag and Drop Images Here",
"composer.content_is_parsed_with": "Content is parsed with",
"composer.upload_instructions": "Upload images by dragging & dropping them."
}

@ -0,0 +1,6 @@
{
"title": "Ongelezen",
"no_unread_topics": "Er zijn geen ongelezen onderwerpen",
"mark_all_read": "Alles markeren als Gelezen",
"load_more": "Meer Laden"
}

@ -0,0 +1,47 @@
{
"banned": "Verbannen",
"offline": "Offline",
"username": "Gebruikersnaam",
"email": "Email",
"fullname": "Volledige Naam",
"website": "Website",
"location": "Locatie",
"age": "Leeftijd",
"joined": "Geregistreerd",
"lastonline": "Laatst Online",
"profile": "Profiel",
"profile_views": "Profiel weergaven",
"reputation": "Reputatie",
"posts": "Berichten",
"favourites": "Favorieten",
"followers": "Volgers",
"following": "Volgend",
"signature": "Handtekening",
"gravatar": "Gravatar",
"birthday": "Verjaardag",
"chat": "Chat",
"follow": "Follow",
"unfollow": "Unfollow",
"change_picture": "Afbeelding Aanpassen",
"edit": "Aanpassen",
"uploaded_picture": "Afbeelding Uploaden",
"upload_new_picture": "Nieuwe Afbeelding Uploaden",
"current_password": "Current Password",
"change_password": "Wachtwoord Aanpassen",
"confirm_password": "Bevestig Wachtwoord",
"password": "Wachtwoord",
"upload_picture": "Afbeelding Uploaden",
"upload_a_picture": "Upload een afbeelding",
"image_spec": "You may only upload PNG, JPG, or GIF files",
"max": "max.",
"settings": "Instellingen",
"show_email": "Laat Mijn Email Zien",
"has_no_follower": "Deze gebruiker heeft geen volgers :(",
"follows_no_one": "Deze gebruiker volgt niemand :(",
"has_no_posts": "Deze gebruiker heeft nog geen berichten geplaatst",
"email_hidden": "Email Verborgen",
"hidden": "verborgen",
"paginate_description": "Paginate topics and posts instead of using infinite scroll.",
"topics_per_page": "Topics per Page",
"posts_per_page": "Posts per Page"
}

@ -0,0 +1,9 @@
{
"latest_users": "Nieuwste Gebruikers",
"top_posters": "Meest Actief",
"most_reputation": "Meeste Reputatie",
"online": "Online",
"search": "Zoeken",
"enter_username": "Vul een gebruikersnaam in om te zoeken",
"load_more": "Meer Laden"
}

@ -10,6 +10,8 @@
"500.message": "Coś poszło nie tak.",
"register": "Zarejestruj się",
"login": "Zaloguj się",
"please_log_in": "Proszę się zalogować",
"posting_restriction_info": "Pisanie jest dostępne tylko dla zarejestrowanych członków forum, kliknij tutaj aby się zalogować.",
"welcome_back": "Witaj z powrotem!",
"you_have_successfully_logged_in": "Zostałeś pomyślnie zalogowany.",
"logout": "Wyloguj się",

@ -1,7 +1,7 @@
{
"home": "Strona główna",
"unread": "Nieprzeczytane wątki",
"popular": "Popular Topics",
"popular": "Popularne wątki",
"recent": "Ostatnie wątki",
"users": "Zarejestrowani użytkownicy",
"notifications": "Powiadomienia",

@ -20,6 +20,11 @@
"flag": "Zgłoś",
"flag_title": "Zgłoś post do moderacji",
"deleted_message": "Ten wątek został usunięty. Tylko użytkownicy z uprawnieniami do zarządzania wątkami mogą go widzieć.",
"following_topic.title": "Obserwujesz wątek",
"following_topic.message": "Będziesz otrzymywał powiadomienia, gdy ktoś odpowie w tym wątku.",
"not_following_topic.title": "Nie obserwujesz wątku",
"not_following_topic.message": "Nie będziesz otrzymywał więcej powiadomień z tego wątku.",
"login_to_subscribe": "Zaloguj się, aby subskrybować ten wątek.",
"watch": "Obserwuj",
"share_this_post": "Udostępnij",
"thread_tools.title": "Narzędzia wątków",
@ -61,5 +66,8 @@
"composer.discard": "Odrzuć",
"composer.submit": "Wyślij",
"composer.replying_to": "Odpowiadasz",
"composer.new_topic": "Nowy wątek"
"composer.new_topic": "Nowy wątek",
"composer.drag_and_drop_images": "Przeciągnij i upuść obrazek tutaj.",
"composer.content_is_parsed_with": "Tekst jest parsowany przy pomocy",
"composer.upload_instructions": "Prześlij obrazki przeciągając i upuszczając je."
}

@ -7,50 +7,52 @@
"404.title": "无法找到该页",
"404.message": "你所查找的页面并不存在,返回<a href='/'>主页</a>。",
"500.title": "内部错误",
"500.message": "不好!看来是哪里出错了!",
"500.message": "哎呀!看来是哪里出错了!",
"register": "注册",
"login": "登录",
"please_log_in": "请登录",
"posting_restriction_info": "发表目前仅限于注册会员,点击这里登录。",
"welcome_back": "欢迎回来",
"you_have_successfully_logged_in": "You have successfully logged in",
"you_have_successfully_logged_in": "你已经退出登录",
"logout": "退出",
"logout.title": "你已经退出。",
"logout.message": "你已经成功退出登录。",
"save_changes": "保存修改",
"close": "关闭",
"pagination": "Pagination",
"pagination": "分页",
"header.admin": "管理",
"header.recent": "最近",
"header.unread": "未读",
"header.popular": "Popular",
"header.popular": "流行",
"header.users": "用户",
"header.chats": "Chats",
"header.notifications": "Notifications",
"header.chats": "聊天",
"header.notifications": "通知",
"header.search": "搜索",
"header.profile": "设置",
"notifications.loading": "消息载入中",
"chats.loading": "聊天载入中",
"motd.welcome": "Welcome to NodeBB, the discussion platform of the future.",
"motd.get": "Get NodeBB",
"motd.fork": "Fork",
"motd.like": "",
"motd.welcome": "欢迎来到NodeBB未来的社区论坛平台。",
"motd.get": "获取NodeBB",
"motd.fork": "分支",
"motd.like": "",
"motd.follow": "关注",
"previouspage": "Previous Page",
"nextpage": "Next Page",
"alert.success": "Success",
"alert.error": "Error",
"alert.banned": "Banned",
"alert.banned.message": "You are banned you will be logged out!",
"alert.unfollow": "You are no longer following %1!",
"alert.follow": "You are now following %1!",
"posts": "Posts",
"views": "Views",
"posted": "posted",
"in": "in",
"recentposts": "Recent Posts",
"online": "Online",
"away": "Away",
"dnd": "Do not Disturb",
"invisible": "Invisible",
"offline": "Offline",
"privacy": "Privacy"
"previouspage": "上一页",
"nextpage": "下一页",
"alert.success": "成功",
"alert.error": "错误",
"alert.banned": "禁止",
"alert.banned.message": "你被禁止了将会退出登录。",
"alert.unfollow": "你不再是关注的那1%!",
"alert.follow": "你现在属于关注的1%!",
"posts": "帖子",
"views": "浏览",
"posted": "发布",
"in": "",
"recentposts": "最新发表",
"online": " 在线",
"away": "离开",
"dnd": "不打扰",
"invisible": "不可见",
"offline": "离线",
"privacy": "隐私"
}

@ -1,10 +1,10 @@
{
"title": "消息",
"no_notifs": "You have no new notifications",
"see_all": "See all Notifications",
"title": "通知",
"no_notifs": "你没有新的通知",
"see_all": "查看所有通知",
"back_to_home": "返回主页",
"outgoing_link": "站外链接",
"outgoing_link_message": "你正在离开本站",
"outgoing_link_message": "你正在离开本站",
"continue_to": "继续前往",
"return_to": "返回"
}

@ -1,13 +1,13 @@
{
"home": "Home",
"unread": "Unread Topics",
"popular": "Popular Topics",
"recent": "Recent Topics",
"users": "Registered Users",
"notifications": "Notifications",
"user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
"home": "主页",
"unread": "未读",
"popular": "受欢迎的主题",
"recent": "最新主题",
"users": "已注册用户",
"notifications": "提醒",
"user.edit": "编辑 \"%1\"",
"user.following": "%1的人关注",
"user.followers": "%1关注的人",
"user.favourites": "%1 喜爱的帖子",
"user.settings": "用户设置"
}

@ -1,7 +1,7 @@
{
"title": "Recent",
"title": "最近",
"day": "今日",
"week": "本周",
"month": "本月",
"no_recent_topics": "There are no recent topics."
"no_recent_topics": "没有最近的话题。"
}

@ -3,7 +3,7 @@
"help.email": "默认情况下,你的邮箱不会公开。",
"help.username_restrictions": "用户名由%1到%2个字符组成。其他人可以通过 @<span id='yourUsername'>用户名</span> 点名你。",
"help.minimum_password_length": "密码必须至少包含%1个字符。",
"email_address": "Email",
"email_address": "邮箱地址",
"email_address_placeholder": "输入邮箱地址",
"username": "用户名",
"username_placeholder": "输入用户名",
@ -13,6 +13,6 @@
"confirm_password_placeholder": "再次输入密码",
"register_now_button": "现在注册",
"alternative_registration": "其他方式注册",
"terms_of_use": "Terms of Use",
"agree_to_terms_of_use": "I agree to the Terms of Use"
"terms_of_use": "使用条款",
"agree_to_terms_of_use": "我同意使用条款"
}

@ -2,9 +2,9 @@
"topic": "主题",
"topics": "主题",
"no_topics_found": "没有找到主题!",
"no_posts_found": "No posts found!",
"no_posts_found": "没有找到帖子!",
"profile": "资料",
"posted_by": "Posted by",
"posted_by": "发表",
"chat": "聊天",
"notify_me": "该主题有新回复时通知我",
"quote": "引用",
@ -13,25 +13,30 @@
"delete": "删除",
"move": "移动",
"fork": "作为主题",
"banned": "禁",
"banned": "",
"link": "链接",
"share": "Share",
"tools": "Tools",
"flag": "Flag",
"flag_title": "Flag this post for moderation",
"deleted_message": "This thread has been deleted. Only users with thread management privileges can see it.",
"watch": "Watch",
"share_this_post": "Share this Post",
"share": "分享",
"tools": "工具",
"flag": "标志",
"flag_title": "标志受限的帖子",
"deleted_message": "这个帖子已经删除,只有帖子的拥有者才有权限去查看。",
"following_topic.title": "关注该主题",
"following_topic.message": "当有回复提交的时候你将会收到通知。",
"not_following_topic.title": "非关注主题",
"not_following_topic.message": "你将不再接受来自该帖子的通知。",
"login_to_subscribe": "请注册或登录以订阅该主题",
"watch": "查看",
"share_this_post": "分享帖子",
"thread_tools.title": "管理工具",
"thread_tools.markAsUnreadForAll": "Mark Unread",
"thread_tools.pin": "Pin Topic",
"thread_tools.unpin": "Unpin Topic",
"thread_tools.lock": "Lock Topic",
"thread_tools.unlock": "Unlock Topic",
"thread_tools.move": "Move Topic",
"thread_tools.fork": "Fork Topic",
"thread_tools.delete": "Delete Topic",
"thread_tools.restore": "Restore Topic",
"thread_tools.markAsUnreadForAll": "标记未读",
"thread_tools.pin": "置顶主题",
"thread_tools.unpin": "解除置顶",
"thread_tools.lock": "锁定主题",
"thread_tools.unlock": "解除锁定",
"thread_tools.move": "移动主题",
"thread_tools.fork": "分叉主题",
"thread_tools.delete": "删除主题",
"thread_tools.restore": "恢复主题",
"load_categories": "版面载入中",
"disabled_categories_note": "停用的版面为灰色",
"confirm_move": "移动",
@ -41,10 +46,10 @@
"favourites.not_logged_in.title": "未登录",
"favourites.not_logged_in.message": "收藏帖子之前请先登录。",
"favourites.has_no_favourites": "你还没有任何收藏,收藏的帖子将会出现在这里!",
"vote.not_logged_in.title": "Not Logged In",
"vote.not_logged_in.message": "Please log in in order to vote",
"vote.cant_vote_self.title": "Invalid Vote",
"vote.cant_vote_self.message": "You cannot vote for your own post",
"vote.not_logged_in.title": "未登录",
"vote.not_logged_in.message": "收藏帖子之前请先登录。",
"vote.cant_vote_self.title": "废票 ",
"vote.cant_vote_self.message": "你不能为自己的帖子投票",
"loading_more_posts": "载入更多帖子",
"move_topic": "移动主题",
"move_post": "移动帖子",
@ -55,11 +60,14 @@
"fork_success": "成功将帖子作为主题!",
"reputation": "声望",
"posts": "发帖数",
"composer.title_placeholder": "Enter your topic title here...",
"composer.write": "Write",
"composer.preview": "Preview",
"composer.discard": "Discard",
"composer.submit": "Submit",
"composer.replying_to": "Replying to",
"composer.new_topic": "New Topic"
"composer.title_placeholder": "在这里输入你的主题标题...",
"composer.write": "书写",
"composer.preview": "预览",
"composer.discard": "丢弃",
"composer.submit": "提交",
"composer.replying_to": "回复",
"composer.new_topic": "新主题",
"composer.drag_and_drop_images": "把图像拖到此处",
"composer.content_is_parsed_with": "内容已经被解析",
"composer.upload_instructions": "拖拽图片以上传"
}

@ -1,5 +1,5 @@
{
"title": "Unread",
"title": "未读",
"no_unread_topics": "没有未读主题。",
"mark_all_read": "标记全部为已读",
"load_more": "载入更多"

@ -68,7 +68,8 @@ define(['uploader'], function(uploader) {
$('#entry-container').sortable({
stop: function( event, ui ) {
updateCategoryOrders();
}
},
distance: 10
});
$('.blockclass').each(function() {
$(this).val(this.getAttribute('data-value'));

@ -139,6 +139,7 @@ define(['forum/admin/settings'], function(Settings) {
helper: function(e) {
return $(e.target).parents('.panel').clone().addClass('block').width($(e.target.parentNode).width());
},
distance: 10,
connectToSortable: ".widget-area"
});
@ -148,7 +149,8 @@ define(['forum/admin/settings'], function(Settings) {
target = target.attr('data-container-html') ? target : target.parents('[data-container-html]');
return target.clone().addClass('block').width(target.width()).css('opacity', '0.5');
}
},
distance: 10
});
function appendToggle(el) {

@ -1,6 +1,8 @@
define(['composer', 'forum/pagination'], function(composer, pagination) {
var Topic = {},
infiniteLoaderActive = false;
infiniteLoaderActive = false,
scrollingToPost = false,
currentUrl = '';
function showBottomPostBar() {
if($('#post-container .post-row').length > 1 || !$('#post-container li[data-index="0"]').length) {
@ -606,9 +608,10 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
socket.on('get_users_in_room', function(data) {
if(data && data.room.indexOf('topic') !== -1) {
var activeEl = $('.thread_active_users');
var activeEl = $('li.post-bar[data-index="0"] .thread_active_users');
function createUserIcon(uid, picture, userslug, username) {
if(!activeEl.find('[href="'+ RELATIVE_PATH +'/user/' + data.users[i].userslug + '"]').length) {
var userIcon = $('<img src="'+ picture +'"/>');
@ -643,7 +646,7 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
var i=0;
// add self
for(i = 0; i<data.users.length; ++i) {
if(data.users[i].uid == app.uid) {
if(parseInt(data.users[i].uid, 10) === parseInt(app.uid, 10)) {
var icon = createUserIcon(data.users[i].uid, data.users[i].picture, data.users[i].userslug, data.users[i].username);
activeEl.prepend(icon);
data.users.splice(i, 1);
@ -983,7 +986,6 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
};
function updateHeader() {
var paginationEl = $('#pagination');
$('.pagination-block a').off('click').on('click', function() {
return false;
@ -997,16 +999,10 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
app.scrollToBottom();
});
var windowHeight = jQuery(window).height();
var scrollTop = jQuery(window).scrollTop();
var scrollBottom = scrollTop + windowHeight;
var progressBar = $('.progress-bar');
var tid = templates.get('topic_id');
if(scrollTop > 50) {
$('#header-topic-title').html(templates.get('topic_name')).show();
if($(window).scrollTop() > 50) {
$('#header-topic-title').text(templates.get('topic_name')).show();
} else {
$('#header-topic-title').html('').hide();
$('#header-topic-title').text('').hide();
}
$($('.posts > .post-row').get().reverse()).each(function() {
@ -1017,20 +1013,35 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
if(index > Topic.postCount) {
index = Topic.postCount;
}
paginationEl.html(index + ' out of ' + Topic.postCount);
progressBar.width((index / Topic.postCount * 100) + '%');
$('#pagination').html(index + ' out of ' + Topic.postCount);
$('.progress-bar').width((index / Topic.postCount * 100) + '%');
return false;
}
});
$('.posts > .post-row').each(function() {
var el = $(this);
if (elementInView(el)) {
var index = parseInt(el.attr('data-index'), 10) + 1;
if(index === 0) {
localStorage.removeItem("topic:" + tid + ":bookmark");
localStorage.removeItem("topic:" + templates.get('topic_id') + ":bookmark");
} else {
localStorage.setItem("topic:" + tid + ":bookmark", el.attr('data-pid'));
localStorage.setItem("topic:" + templates.get('topic_id') + ":bookmark", el.attr('data-pid'));
if (!scrollingToPost) {
var newUrl = window.location.protocol + '//' + window.location.host + window.location.pathname + '#' + el.attr('data-pid')
if (newUrl !== currentUrl) {
if (history.replaceState) {
history.replaceState({
url: window.location.pathname.slice(1) + '#' + el.attr('data-pid')
}, null, newUrl);
} else {
location.hash = '#' + el.attr('data-pid');
}
currentUrl = newUrl;
}
}
}
return false;
}
@ -1038,7 +1049,7 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
}
function elementInView(el) {
var scrollTop = $(window).scrollTop();
var scrollTop = $(window).scrollTop() + $('#header-menu').height();
var scrollBottom = scrollTop + $(window).height();
var elTop = el.offset().top;
@ -1092,15 +1103,16 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
tid = $('#post-container').attr('data-tid');
function animateScroll() {
scrollingToPost = true;
$("html, body").animate({
scrollTop: (scrollTo.offset().top - $('#header-menu').height() - offset) + "px"
}, duration !== undefined ? duration : 400, function() {
updateHeader();
scrollingToPost = false;
if (highlight) {
scrollTo.parent().addClass('highlight');
scrollTo.parent().find('.topic-item').addClass('highlight');
setTimeout(function() {
scrollTo.parent().removeClass('highlight');
scrollTo.parent().find('.topic-item').removeClass('highlight');
}, 5000);
}
});

@ -130,6 +130,7 @@ define(['taskbar', 'string'], function(taskbar, S) {
stop:function() {
chatModal.find('#chat-message-input').focus();
},
distance: 10,
handle: '.modal-header'
});

@ -108,6 +108,18 @@
</div>
</div>
<!-- IF ips.length -->
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">[[global:recentips]]</h3>
</div>
<div class="panel-body">
<!-- BEGIN ips -->
{ips.ip}
<!-- END ips -->
</div>
</div>
<!-- ENDIF ips.length -->
</div>

@ -37,7 +37,7 @@
<script src="//code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script src="{relative_path}/src/utils.js"></script>
<link rel="stylesheet" type="text/css" href="{relative_path}/css/theme.css?{cache-buster}" />
<link rel="stylesheet" type="text/css" href="{relative_path}/stylesheet.css?{cache-buster}" />
</head>
<body class="admin">

@ -12,7 +12,7 @@
<ul class="plugins">
<!-- BEGIN plugins -->
<li data-plugin-id="{plugins.id}">
<h2>{plugins.name}</h2>
<h2><strong>{plugins.name}</strong></h2>
<div class="pull-right">
<button data-action="toggleActive" class="btn <!-- IF plugins.active -->btn-warning<!-- ELSE -->btn-success<!-- ENDIF plugins.active -->">{plugins.activeText}</button>
</div>

@ -6,7 +6,7 @@
<meta<!-- IF metaTags.name --> name="{metaTags.name}"<!-- ENDIF metaTags.name --><!-- IF metaTags.property --> property="{metaTags.property}"<!-- ENDIF metaTags.property --><!-- IF metaTags.content --> content="{metaTags.content}"<!-- ENDIF metaTags.content --> />
<!-- END metaTags -->
<link rel="stylesheet" href="{relative_path}/vendor/fontawesome/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="{relative_path}/css/theme.css?{cache-buster}" />
<link rel="stylesheet" type="text/css" href="{relative_path}/stylesheet.css?{cache-buster}" />
<!-- IF bootswatchCSS --><link href="{bootswatchCSS}" rel="stylesheet" media="screen"><!-- ENDIF bootswatchCSS -->
<!-- BEGIN linkTags -->
<link<!-- IF linkTags.link --> link="{linkTags.link}"<!-- ENDIF linkTags.link --><!-- IF linkTags.rel --> rel="{linkTags.rel}"<!-- ENDIF linkTags.rel --><!-- IF linkTags.type --> type="{linkTags.type}"<!-- ENDIF linkTags.type --><!-- IF linkTags.href --> href="{linkTags.href}"<!-- ENDIF linkTags.href --> />

@ -38,7 +38,7 @@
</a>
</div>
<div class="col-md-11 panel panel-default post-block">
<div class="col-md-11 panel panel-default post-block topic-item">
<a class="main-post avatar" href="{relative_path}/user/{posts.userslug}">
<img itemprop="image" src="{posts.picture}" align="left" class="img-thumbnail" width=150 height=150 />
@ -154,6 +154,7 @@
<div style="clear:both;"></div>
</li>
<!-- IF !posts.index -->
<li class="well post-bar" data-index="{posts.index}">
<div class="inline-block">
<small class="topic-stats">
@ -190,6 +191,7 @@
</div>
<div style="clear:both;"></div>
</li>
<!-- ENDIF !posts.index -->
<!-- END posts -->
</ul>

@ -424,6 +424,6 @@ var db = require('./database'),
Categories.addActiveUser(cid, uid, timestamp);
});
}
};
}(exports));

@ -153,24 +153,13 @@ var async = require('async'),
downvoted: function(next) {
db.isSetMember('pid:' + pid + ':downvote', uid, next);
}
}, function(err, results) {
callback(err, results)
});
}, callback);
};
Favourites.getVoteStatusByPostIDs = function(pids, uid, callback) {
var data = {};
function iterator(pid, next) {
Favourites.hasVoted(pid, uid, function(err, voteStatus) {
data[pid] = voteStatus;
next()
});
}
async.each(pids, iterator, function(err) {
callback(data);
});
async.map(pids, function(pid, next) {
Favourites.hasVoted(pid, uid, next);
}, callback);
};
Favourites.favourite = function (pid, room_id, uid, socket) {
@ -248,33 +237,15 @@ var async = require('async'),
};
Favourites.getFavouritesByPostIDs = function(pids, uid, callback) {
var data = {};
function iterator(pid, next) {
Favourites.hasFavourited(pid, uid, function(err, hasFavourited) {
data[pid] = hasFavourited;
next()
});
}
async.each(pids, iterator, function(err) {
callback(data);
});
async.map(pids, function(pid, next) {
Favourites.hasFavourited(pid, uid, next);
}, callback);
};
Favourites.getFavouritedUidsByPids = function(pids, callback) {
var data = {};
function getUids(pid, next) {
db.getSetMembers('pid:' + pid + ':users_favourited', function(err, uids) {
data[pid] = uids;
next();
});
}
async.each(pids, getUids, function(err) {
callback(data);
});
async.map(pids, function(pid, next) {
db.getSetMembers('pid:' + pid + ':users_favourited', next);
}, callback)
};
}(exports));

@ -223,6 +223,7 @@ var fs = require('fs'),
};
Meta.js = {
cache: undefined,
scripts: [
'vendor/jquery/js/jquery.js',
'vendor/jquery/js/jquery-ui-1.10.4.custom.js',
@ -240,7 +241,7 @@ var fs = require('fs'),
'src/translator.js',
'src/utils.js'
],
minFile: path.join(__dirname, '..', 'public/src/nodebb.min.js'),
minFile: nconf.get('relative_path') + 'nodebb.min.js',
get: function (callback) {
plugins.fireHook('filter:scripts.get', this.scripts, function(err, scripts) {
var ctime,
@ -266,42 +267,9 @@ var fs = require('fs'),
Meta.js.scripts = jsPaths.filter(function(path) { return path !== null });
if (process.env.NODE_ENV !== 'development') {
async.parallel({
ctime: function (next) {
async.map(jsPaths, fs.stat, function (err, stats) {
async.reduce(stats, 0, function (memo, item, next) {
if(item) {
ctime = +new Date(item.ctime);
next(null, ctime > memo ? ctime : memo);
} else {
next(null, memo);
}
}, next);
});
},
minFile: function (next) {
if (!fs.existsSync(Meta.js.minFile)) {
winston.info('No minified client-side library found');
return next(null, 0);
}
fs.stat(Meta.js.minFile, function (err, stat) {
next(err, +new Date(stat.ctime));
});
}
}, function (err, results) {
if (results.minFile > results.ctime) {
winston.info('No changes to client-side libraries -- skipping minification');
callback(null, [path.relative(path.join(__dirname, '../public'), Meta.js.minFile)]);
} else {
winston.info('Minifying client-side libraries -- please wait');
Meta.js.minify(function () {
callback(null, [
path.relative(path.join(__dirname, '../public'), Meta.js.minFile)
]);
});
}
});
callback(null, [
Meta.js.minFile
]);
} else {
callback(null, scripts);
}
@ -317,17 +285,8 @@ var fs = require('fs'),
}
minified = uglifyjs.minify(jsPaths);
fs.writeFile(Meta.js.minFile, minified.code, function (err) {
if (!err) {
if (process.env.NODE_ENV === 'development') {
winston.info('Minified client-side libraries');
}
callback();
} else {
winston.error('Problem minifying client-side libraries, exiting.');
process.exit();
}
});
this.cache = minified.code;
callback();
}
};
@ -337,6 +296,10 @@ var fs = require('fs'),
}
};
Meta.css = {
cache: undefined
};
Meta.restart = function() {
if (process.send) {
process.send('nodebb:restart');

@ -16,6 +16,7 @@ var fs = require('fs'),
Plugins.loadedHooks = {};
Plugins.staticDirs = {};
Plugins.cssFiles = [];
Plugins.lessFiles = [];
Plugins.initialized = false;
@ -221,6 +222,20 @@ var fs = require('fs'),
} else {
next();
}
},
function(next) {
// LESS files for plugins
if (pluginData.less && pluginData.less instanceof Array) {
if (global.env === 'development') {
winston.info('[plugins] Found ' + pluginData.less.length + ' LESS file(s) for plugin ' + pluginData.id);
}
Plugins.lessFiles = Plugins.lessFiles.concat(pluginData.less.map(function(file) {
return path.join(pluginData.id, file);
}));
}
next();
}
], function(err) {
if (!err) {

@ -0,0 +1,57 @@
var path = require('path'),
nconf = require('nconf'),
less = require('less'),
meta = require('../meta'),
db = require('../database'),
plugins = require('../plugins');
(function (Meta) {
Meta.createRoutes = function(app) {
app.get('/stylesheet.css', function(req, res) {
if (meta.css.cache) {
res.type('text/css').send(200, meta.css.cache);
return;
}
db.getObjectFields('config', ['theme:type', 'theme:id'], function(err, themeData) {
var themeId = (themeData['theme:id'] || 'nodebb-theme-vanilla'),
baseThemePath = path.join(nconf.get('themes_path'), (themeData['theme:type'] && themeData['theme:type'] === 'local' ? themeId : 'nodebb-theme-vanilla')),
paths = [baseThemePath, path.join(__dirname, '../../node_modules')],
source = '@import "./theme";',
x, numLESS;
// Add the imports for each LESS file
for(x=0,numLESS=plugins.lessFiles.length;x<numLESS;x++) {
source += '\n@import "./' + plugins.lessFiles[x] + '";';
}
var parser = new (less.Parser)({
paths: paths
});
parser.parse(source, function(err, tree) {
if (err) {
res.send(500, err.message);
return;
}
meta.css.cache = tree.toCSS({
compress: true
});
res.type('text/css').send(200, meta.css.cache);
});
});
});
app.get('/nodebb.min.js', function(req, res) {
if (meta.js.cache) {
res.type('text/javascript').send(meta.js.cache);
} else {
meta.js.minify(function() {
res.type('text/javascript').send(meta.js.cache);
});
}
});
};
})(exports);

@ -230,6 +230,7 @@ var fs = require('fs'),
app.get('/api/user/:userslug/posts', isAllowed, getUserPosts);
app.get('/api/user/uid/:uid', isAllowed, getUserData);
app.get('/api/user/:userslug', isAllowed, getUserProfile);
app.get('/api/users', isAllowed, getOnlineUsers);
app.get('/api/users/sort-posts', isAllowed, getUsersSortedByPosts);
app.get('/api/users/sort-reputation', isAllowed, getUsersSortedByReputation);
@ -590,6 +591,9 @@ var fs = require('fs'),
},
followStats: function(next) {
user.getFollowStats(uid, next);
},
ips: function(next) {
user.getIPs(uid, 4, next);
}
}, function(err, results) {
if(err || !results.userData) {
@ -599,6 +603,7 @@ var fs = require('fs'),
var userData = results.userData;
var userSettings = results.userSettings;
var isAdmin = results.isAdmin;
var self = parseInt(callerUID, 10) === parseInt(userData.uid, 10);
userData.joindate = utils.toISOString(userData.joindate);
if(userData.lastonline) {
@ -614,19 +619,23 @@ var fs = require('fs'),
}
function canSeeEmail() {
return isAdmin || parseInt(callerUID, 10) === parseInt(userData.uid, 10) || (userData.email && userSettings.showemail);
return ;
}
if (!canSeeEmail()) {
if (!(isAdmin || self || (userData.email && userSettings.showemail))) {
userData.email = "";
}
if (parseInt(callerUID, 10) === parseInt(userData.uid, 10) && !userSettings.showemail) {
if (self && !userSettings.showemail) {
userData.emailClass = "";
} else {
userData.emailClass = "hide";
}
if (isAdmin || self) {
userData.ips = results.ips;
}
userData.websiteName = userData.website.replace('http://', '').replace('https://', '');
userData.banned = parseInt(userData.banned, 10) === 1;
userData.uid = userData.uid;

@ -207,30 +207,38 @@ SocketPosts.getPrivileges = function(socket, pid, callback) {
SocketPosts.getFavouritedUsers = function(socket, pid, callback) {
favourites.getFavouritedUidsByPids([pid], function(data) {
favourites.getFavouritedUidsByPids([pid], function(err, data) {
if(err) {
return callback(err);
}
if(!Array.isArray(data) || !data.length) {
callback(null, "");
}
console.log(data);
var max = 5; //hardcoded
var usernames = "";
var pid_uids = data[pid];
var pid_uids = data[0];
var rest_amount = 0;
if (data.hasOwnProperty(pid) && pid_uids.length > 0) {
if (pid_uids.length > max) {
rest_amount = pid_uids.length - max;
pid_uids = pid_uids.slice(0, max);
}
user.getUsernamesByUids(pid_uids, function(err, result) {
if(err) {
return callback(err);
}
usernames = result.join(', ') + (rest_amount > 0
? " and " + rest_amount + (rest_amount > 1 ? " others" : " other")
: "");
callback(null, usernames);
});
} else {
callback(null, "");
if (pid_uids.length > max) {
rest_amount = pid_uids.length - max;
pid_uids = pid_uids.slice(0, max);
}
user.getUsernamesByUids(pid_uids, function(err, result) {
if(err) {
return callback(err);
}
usernames = result.join(', ') + (rest_amount > 0
? " and " + rest_amount + (rest_amount > 1 ? " others" : " other")
: "");
callback(null, usernames);
});
});
};

@ -350,12 +350,7 @@ var async = require('async'),
});
};
Topics.getTopicPosts = function(tid, start, end, current_user, reverse, callback) {
if (typeof reverse === 'function') {
callback = reverse;
reverse = false;
}
Topics.getTopicPosts = function(tid, start, end, uid, reverse, callback) {
posts.getPostsByTid(tid, start, end, reverse, function(err, postData) {
if(err) {
return callback(err);
@ -373,65 +368,34 @@ var async = require('async'),
return post.pid;
});
function getFavouritesData(next) {
favourites.getFavouritesByPostIDs(pids, current_user, function(fav_data) {
next(null, fav_data);
});
}
function getVoteStatusData(next) {
favourites.getVoteStatusByPostIDs(pids, current_user, function(vote_data) {
next(null, vote_data);
})
}
function addUserInfoToPosts(next) {
function iterator(post, callback) {
posts.addUserInfoToPost(post, function() {
callback(null);
});
}
async.each(postData, iterator, function(err) {
next(err, null);
});
}
function getPrivileges(next) {
var privs = {};
async.each(pids, getPostPrivileges, function(err) {
next(err, privs);
});
function getPostPrivileges(pid, next) {
postTools.privileges(pid, current_user, function(err, postPrivileges) {
if(err) {
return next(err);
}
privs[pid] = postPrivileges;
next();
});
async.parallel({
favourites : function(next) {
favourites.getFavouritesByPostIDs(pids, uid, next);
},
voteData : function(next) {
favourites.getVoteStatusByPostIDs(pids, uid, next);
},
userData : function(next) {
async.each(postData, posts.addUserInfoToPost, next);
},
privileges : function(next) {
async.map(pids, function (pid, next) {
postTools.privileges(pid, uid, next);
}, next);
}
}
async.parallel([getFavouritesData, addUserInfoToPosts, getPrivileges, getVoteStatusData], function(err, results) {
}, function(err, results) {
if(err) {
return callback(err);
}
var fav_data = results[0],
privileges = results[2],
voteStatus = results[3];
for (var i = 0; i < postData.length; ++i) {
var pid = postData[i].pid;
postData[i].favourited = fav_data[pid];
postData[i].upvoted = voteStatus[pid].upvoted;
postData[i].downvoted = voteStatus[pid].downvoted;
postData[i].favourited = results.favourites[i];
postData[i].upvoted = results.voteData[i].upvoted;
postData[i].downvoted = results.voteData[i].downvoted;
postData[i].votes = postData[i].votes || 0;
postData[i].display_moderator_tools = (current_user != 0) && privileges[pid].editable;
postData[i].display_move_tools = privileges[pid].move;
if(parseInt(postData[i].deleted, 10) === 1 && !privileges[pid].view_deleted) {
postData[i].display_moderator_tools = (uid != 0) && results.privileges[i].editable;
postData[i].display_move_tools = results.privileges[i].move;
if(parseInt(postData[i].deleted, 10) === 1 && !results.privileges[i].view_deleted) {
postData[i].content = 'This post is deleted!';
}
}
@ -696,7 +660,7 @@ var async = require('async'),
function isTopicVisible(topicData, topicInfo) {
var deleted = parseInt(topicData.deleted, 10) !== 0;
return !deleted || (deleted && topicInfo.privileges.view_deleted) || topicData.uid === current_user;
return !deleted || (deleted && topicInfo.privileges.view_deleted) || parseInt(topicData.uid, 10) === parseInt(current_user, 10);
}
function loadTopic(tid, next) {
@ -765,7 +729,7 @@ var async = require('async'),
}
function getTopicPosts(next) {
Topics.getTopicPosts(tid, start, end, current_user, next);
Topics.getTopicPosts(tid, start, end, current_user, false, next);
}
function getPrivileges(next) {
@ -958,9 +922,7 @@ var async = require('async'),
return callback(null, []);
}
async.map(tids, function(tid, next) {
Topics.getTeaser(tid, next);
}, callback);
async.map(tids, Topics.getTeaser, callback)
};
Topics.getTeaser = function(tid, callback) {
@ -1039,7 +1001,7 @@ var async = require('async'),
Topics.isLocked = function(tid, callback) {
Topics.getTopicField(tid, 'locked', function(err, locked) {
if(err) {
return callback(err, null);
return callback(err);
}
callback(null, parseInt(locked, 10) === 1);
});
@ -1074,16 +1036,18 @@ var async = require('async'),
function getUid(pid, next) {
posts.getPostField(pid, 'uid', function(err, uid) {
if (err)
if (err) {
return next(err);
}
uids[uid] = 1;
next(null);
next();
});
}
async.each(pids, getUid, function(err) {
if (err)
return callback(err, null);
if (err) {
return callback(err);
}
callback(null, Object.keys(uids));
});

@ -968,6 +968,18 @@ var bcrypt = require('bcryptjs'),
db.sortedSetAdd('uid:' + uid + ':ip', +new Date(), ip || 'Unknown');
};
User.getIPs = function(uid, end, callback) {
db.getSortedSetRevRange('uid:' + uid + ':ip', 0, end, function(err, ips) {
if(err) {
return callback(err);
}
callback(null, ips.map(function(ip) {
return {ip:ip};
}));
});
};
User.email = {
verify: function(uid, email) {
if (!plugins.hasListeners('action:email.send')) {

@ -22,16 +22,18 @@ var path = require('path'),
topics = require('./topics'),
ThreadTools = require('./threadTools'),
notifications = require('./notifications'),
admin = require('./routes/admin'),
userRoute = require('./routes/user'),
apiRoute = require('./routes/api'),
feedsRoute = require('./routes/feeds'),
auth = require('./routes/authentication'),
meta = require('./meta'),
plugins = require('./plugins'),
logger = require('./logger'),
templates = require('./../public/src/templates'),
translator = require('./../public/src/translator');
translator = require('./../public/src/translator'),
admin = require('./routes/admin'),
userRoute = require('./routes/user'),
apiRoute = require('./routes/api'),
feedsRoute = require('./routes/feeds'),
metaRoute = require('./routes/meta');
if(nconf.get('ssl')) {
server = require('https').createServer({
@ -322,13 +324,6 @@ process.on('uncaughtException', function(err) {
}
}
app.use(require('less-middleware')({
src: path.join(nconf.get('themes_path'), themeId),
dest: path.join(__dirname, '../public/css'),
prefix: nconf.get('relative_path') + '/css',
yuicompress: app.enabled('minification') ? true : false
}));
next();
} else {
// If not using a local theme (bootswatch, etc), drop back to vanilla
@ -487,8 +482,8 @@ process.on('uncaughtException', function(err) {
};
app.namespace(nconf.get('relative_path'), function () {
auth.registerApp(app);
metaRoute.createRoutes(app);
admin.createRoutes(app);
userRoute.createRoutes(app);
apiRoute.createRoutes(app);

Loading…
Cancel
Save