diff options
-rw-r--r-- | askbot/__init__.py | 2 | ||||
-rw-r--r-- | askbot/conf/email.py | 26 | ||||
-rw-r--r-- | askbot/const/__init__.py | 1 | ||||
-rw-r--r-- | askbot/forms.py | 68 | ||||
-rw-r--r-- | askbot/locale/en/LC_MESSAGES/django.mo | bin | 21637 -> 21637 bytes | |||
-rw-r--r-- | askbot/locale/en/LC_MESSAGES/django.po | 389 | ||||
-rw-r--r-- | askbot/locale/ro/LC_MESSAGES/django.mo | bin | 0 -> 87643 bytes | |||
-rw-r--r-- | askbot/locale/ro/LC_MESSAGES/django.po | 5727 | ||||
-rw-r--r-- | askbot/management/commands/post_emailed_questions.py | 207 | ||||
-rw-r--r-- | askbot/models/__init__.py | 12 | ||||
-rw-r--r-- | askbot/models/content.py | 41 | ||||
-rw-r--r-- | askbot/models/meta.py | 26 | ||||
-rw-r--r-- | askbot/models/question.py | 2 | ||||
-rw-r--r-- | askbot/models/tag.py | 13 | ||||
-rw-r--r-- | askbot/setup_templates/settings.py | 17 | ||||
-rw-r--r-- | askbot/tasks.py | 59 | ||||
-rw-r--r-- | askbot/tests/db_api_tests.py | 17 | ||||
-rw-r--r-- | askbot/tests/email_alert_tests.py | 70 | ||||
-rw-r--r-- | askbot/tests/form_tests.py | 79 | ||||
-rw-r--r-- | askbot/tests/skin_tests.py | 1 | ||||
-rw-r--r-- | askbot/tests/utils.py | 21 | ||||
-rw-r--r-- | askbot/utils/mail.py | 17 | ||||
-rw-r--r-- | setup.py | 2 |
23 files changed, 6594 insertions, 203 deletions
diff --git a/askbot/__init__.py b/askbot/__init__.py index d159c315..8d907571 100644 --- a/askbot/__init__.py +++ b/askbot/__init__.py @@ -11,7 +11,7 @@ import logging from askbot import patches from askbot.deployment.assertions import assert_package_compatibility -VERSION = (0, 6, 75) +VERSION = (0, 6, 76) #necessary for interoperability of django and coffin assert_package_compatibility() diff --git a/askbot/conf/email.py b/askbot/conf/email.py index e48a74f0..f18a554d 100644 --- a/askbot/conf/email.py +++ b/askbot/conf/email.py @@ -83,3 +83,29 @@ settings.register( help_text=_('Use this setting to control gravatar for email-less user') ) ) + +settings.register( + livesettings.BooleanValue( + EMAIL, + 'ALLOW_ASKING_BY_EMAIL', + default = False, + description=_('Allow posting questions by email'), + help_text=_( + 'Before enabling this setting - please fill out IMAP settings ' + 'in the settings.py file' + ) + ) +) + +settings.register( + livesettings.BooleanValue( + EMAIL, + 'REPLACE_SPACE_WITH_DASH_IN_EMAILED_TAGS', + default = True, + description = _('Replace space in emailed tags with dash'), + help_text = _( + 'This setting applies to tags written in the subject line ' + 'of questions asked by email' + ) + ) +) diff --git a/askbot/const/__init__.py b/askbot/const/__init__.py index f48c5c76..5a0781f0 100644 --- a/askbot/const/__init__.py +++ b/askbot/const/__init__.py @@ -84,6 +84,7 @@ UNANSWERED_QUESTION_MEANING_CHOICES = ( TAG_CHARS = '\w\+\.\-#' TAG_REGEX = r'^[%s]+$' % TAG_CHARS TAG_SPLIT_REGEX = r'[ ,]+' +EMAIL_REGEX = re.compile(r'\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b', re.I) TYPE_ACTIVITY_ASK_QUESTION=1 TYPE_ACTIVITY_ANSWER=2 diff --git a/askbot/forms.py b/askbot/forms.py index ff295fff..aa021370 100644 --- a/askbot/forms.py +++ b/askbot/forms.py @@ -8,6 +8,7 @@ from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType from django_countries import countries from askbot.utils.forms import NextUrlField, UserNameField +from askbot.utils.mail import extract_first_email_address from askbot.deps.recaptcha_django import ReCaptchaField from askbot.conf import settings as askbot_settings import logging @@ -548,6 +549,73 @@ class AskForm(forms.Form, FormWithHideableFields): self.cleaned_data['ask_anonymously'] = False return self.cleaned_data['ask_anonymously'] + +class AskByEmailForm(forms.Form): + """:class:`~askbot.forms.AskByEmailForm` + validates question data, where question was posted + by email. + + It is ivoked by the management command + :mod:`~askbot.management.commands.post_emailed_questions` + + Input is text data with attributes: + + * :attr:`~askbot.forms.AskByEmailForm.sender` - unparsed "from" data + * :attr:`~askbot.forms.AskByEmailForm.subject` - subject line + * :attr:`~askbot.forms.AskByEmailForm.body_text` - body text of the email + + Cleaned values are: + * ``email`` - email address + * ``title`` - question title + * ``tagnames`` - tag names all in one string + * ``body_text`` - body of question text - a pass-through, no extra validation + """ + sender = forms.CharField(max_length = 255) + subject = forms.CharField(max_length = 255) + body_text = EditorField() + + def clean_sender(self): + """Cleans the :attr:`~askbot.forms.AskByEmail.sender` attribute + + If the field is valid, cleaned data will receive value ``email`` + """ + raw_email = self.cleaned_data['sender'] + email = extract_first_email_address(raw_email) + if email is None: + raise forms.ValidationError('Could not extract email address') + self.cleaned_data['email'] = email + return self.cleaned_data['sender'] + + def clean_subject(self): + """Cleans the :attr:`~askbot.forms.AskByEmail.subject` attribute + + If the field is valid, cleaned data will receive values + ``tagnames`` and ``title`` + """ + raw_subject = self.cleaned_data['subject'].strip() + subject_re = re.compile(r'^\[([^]]+)\](.*)$') + match = subject_re.match(raw_subject) + if match: + #make raw tags comma-separated + tagnames = match.group(1).replace(';',',') + + #pre-process tags + tag_list = [tag.strip() for tag in tagnames.split(',')] + tag_list = [re.sub(r'\s+', ' ', tag) for tag in tag_list] + if askbot_settings.REPLACE_SPACE_WITH_DASH_IN_EMAILED_TAGS: + tag_list = [tag.replace(' ', '-') for tag in tag_list] + tagnames = ' '.join(tag_list)#todo: use tag separator char here + + #clean tags - may raise ValidationError + self.cleaned_data['tagnames'] = TagNamesField().clean(tagnames) + + #clean title - may raise ValidationError + title = match.group(2).strip() + self.cleaned_data['title'] = TitleField().clean(title) + else: + raise forms.ValidationError('could not parse subject line') + return self.cleaned_data['subject'] + class AnswerForm(forms.Form): text = EditorField() wiki = WikiField() diff --git a/askbot/locale/en/LC_MESSAGES/django.mo b/askbot/locale/en/LC_MESSAGES/django.mo Binary files differindex 86e60ab4..20542d6e 100644 --- a/askbot/locale/en/LC_MESSAGES/django.mo +++ b/askbot/locale/en/LC_MESSAGES/django.mo diff --git a/askbot/locale/en/LC_MESSAGES/django.po b/askbot/locale/en/LC_MESSAGES/django.po index 714c0993..5bb75eca 100644 --- a/askbot/locale/en/LC_MESSAGES/django.po +++ b/askbot/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-23 15:57-0500\n" +"POT-Creation-Date: 2011-04-10 15:12-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Evgeny Fadeev <evgeny.fadeev@gmail.com>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: exceptions.py:9 +#: exceptions.py:13 msgid "Sorry, but anonymous visitors cannot access this function" msgstr "" @@ -28,267 +28,267 @@ msgstr "" msgid "latest questions" msgstr "" -#: forms.py:72 +#: forms.py:73 msgid "select country" msgstr "" -#: forms.py:81 +#: forms.py:82 msgid "Country" msgstr "" -#: forms.py:89 +#: forms.py:90 msgid "Country field is required" msgstr "" -#: forms.py:102 skins/default/templates/blocks/answer_edit_tips.html:43 +#: forms.py:103 skins/default/templates/blocks/answer_edit_tips.html:43 #: skins/default/templates/blocks/answer_edit_tips.html:47 #: skins/default/templates/blocks/question_edit_tips.html:38 #: skins/default/templates/blocks/question_edit_tips.html:43 msgid "title" msgstr "" -#: forms.py:103 +#: forms.py:104 msgid "please enter a descriptive title for your question" msgstr "" -#: forms.py:108 +#: forms.py:109 msgid "title must be > 10 characters" msgstr "" -#: forms.py:117 +#: forms.py:118 msgid "content" msgstr "" -#: forms.py:123 +#: forms.py:124 msgid "question content must be > 10 characters" msgstr "" -#: forms.py:132 skins/default/templates/blocks/header.html:22 +#: forms.py:133 skins/default/templates/blocks/header.html:22 msgid "tags" msgstr "" -#: forms.py:134 +#: forms.py:135 msgid "" "Tags are short keywords, with no spaces within. Up to five tags can be used." msgstr "" -#: forms.py:141 skins/default/templates/question_retag.html:74 +#: forms.py:142 skins/default/templates/question_retag.html:60 msgid "tags are required" msgstr "" -#: forms.py:150 +#: forms.py:151 #, python-format msgid "please use %(tag_count)d tag or less" msgid_plural "please use %(tag_count)d tags or less" msgstr[0] "" msgstr[1] "" -#: forms.py:159 +#: forms.py:160 #, python-format msgid "each tag must be shorter than %(max_chars)d character" msgid_plural "each tag must be shorter than %(max_chars)d characters" msgstr[0] "" msgstr[1] "" -#: forms.py:167 +#: forms.py:168 msgid "use-these-chars-in-tags" msgstr "" -#: forms.py:202 +#: forms.py:203 msgid "community wiki (karma is not awarded & many others can edit wiki post)" msgstr "" -#: forms.py:203 +#: forms.py:204 msgid "" "if you choose community wiki option, the question and answer do not generate " "points and name of author will not be shown" msgstr "" -#: forms.py:219 +#: forms.py:220 msgid "update summary:" msgstr "" -#: forms.py:220 +#: forms.py:221 msgid "" "enter a brief summary of your revision (e.g. fixed spelling, grammar, " "improved style, this field is optional)" msgstr "" -#: forms.py:283 +#: forms.py:284 msgid "Enter number of points to add or subtract" msgstr "" -#: forms.py:297 const/__init__.py:224 +#: forms.py:298 const/__init__.py:225 msgid "approved" msgstr "" -#: forms.py:298 const/__init__.py:225 +#: forms.py:299 const/__init__.py:226 msgid "watched" msgstr "" -#: forms.py:299 const/__init__.py:226 +#: forms.py:300 const/__init__.py:227 msgid "suspended" msgstr "" -#: forms.py:300 const/__init__.py:227 +#: forms.py:301 const/__init__.py:228 msgid "blocked" msgstr "" -#: forms.py:302 const/__init__.py:223 +#: forms.py:303 const/__init__.py:224 msgid "moderator" msgstr "" -#: forms.py:322 +#: forms.py:323 msgid "Change status to" msgstr "" -#: forms.py:349 +#: forms.py:350 msgid "which one?" msgstr "" -#: forms.py:370 +#: forms.py:371 msgid "Cannot change own status" msgstr "" -#: forms.py:376 +#: forms.py:377 msgid "Cannot turn other user to moderator" msgstr "" -#: forms.py:383 +#: forms.py:384 msgid "Cannot change status of another moderator" msgstr "" -#: forms.py:389 +#: forms.py:390 #, python-format msgid "" "If you wish to change %(username)s's status, please make a meaningful " "selection." msgstr "" -#: forms.py:398 +#: forms.py:399 msgid "Subject line" msgstr "" -#: forms.py:405 +#: forms.py:406 msgid "Message text" msgstr "" -#: forms.py:488 +#: forms.py:489 msgid "Your name:" msgstr "" -#: forms.py:489 +#: forms.py:490 msgid "Email (not shared with anyone):" msgstr "" -#: forms.py:490 +#: forms.py:491 msgid "Your message:" msgstr "" -#: forms.py:527 +#: forms.py:528 msgid "ask anonymously" msgstr "" -#: forms.py:529 +#: forms.py:530 msgid "Check if you do not want to reveal your name when asking this question" msgstr "" -#: forms.py:604 +#: forms.py:672 msgid "" "You have asked this question anonymously, if you decide to reveal your " "identity, please check this box." msgstr "" -#: forms.py:608 +#: forms.py:676 msgid "reveal identity" msgstr "" -#: forms.py:666 +#: forms.py:734 msgid "" "Sorry, only owner of the anonymous question can reveal his or her identity, " "please uncheck the box" msgstr "" -#: forms.py:679 +#: forms.py:747 msgid "" "Sorry, apparently rules have just changed - it is no longer possible to ask " "anonymously. Please either check the \"reveal identity\" box or reload this " "page and try editing the question again." msgstr "" -#: forms.py:717 +#: forms.py:785 msgid "this email will be linked to gravatar" msgstr "" -#: forms.py:724 +#: forms.py:792 msgid "Real name" msgstr "" -#: forms.py:731 +#: forms.py:799 msgid "Website" msgstr "" -#: forms.py:738 +#: forms.py:806 msgid "City" msgstr "" -#: forms.py:747 +#: forms.py:815 msgid "Show country" msgstr "" -#: forms.py:752 +#: forms.py:820 msgid "Date of birth" msgstr "" -#: forms.py:753 +#: forms.py:821 msgid "will not be shown, used to calculate age, format: YYYY-MM-DD" msgstr "" -#: forms.py:759 +#: forms.py:827 msgid "Profile" msgstr "" -#: forms.py:768 +#: forms.py:836 msgid "Screen name" msgstr "" -#: forms.py:799 forms.py:800 +#: forms.py:867 forms.py:868 msgid "this email has already been registered, please use another one" msgstr "" -#: forms.py:807 +#: forms.py:875 msgid "Choose email tag filter" msgstr "" -#: forms.py:847 +#: forms.py:915 msgid "Asked by me" msgstr "" -#: forms.py:850 +#: forms.py:918 msgid "Answered by me" msgstr "" -#: forms.py:853 +#: forms.py:921 msgid "Individually selected" msgstr "" -#: forms.py:856 +#: forms.py:924 msgid "Entire forum (tag filtered)" msgstr "" -#: forms.py:860 +#: forms.py:928 msgid "Comments and posts mentioning me" msgstr "" -#: forms.py:930 +#: forms.py:998 msgid "okay, let's try!" msgstr "" -#: forms.py:931 +#: forms.py:999 msgid "no community email please, thanks" msgstr "no askbot email please, thanks" -#: forms.py:935 +#: forms.py:1003 msgid "please choose one of the options above" msgstr "" @@ -312,7 +312,7 @@ msgstr "" msgid "answers/" msgstr "" -#: urls.py:49 urls.py:75 urls.py:181 +#: urls.py:49 urls.py:75 urls.py:186 msgid "edit/" msgstr "" @@ -351,7 +351,7 @@ msgid "vote/" msgstr "" #: urls.py:132 skins/default/templates/question.html:436 -#: skins/default/templates/main_page/javascript.html:21 +#: skins/default/templates/main_page/javascript.html:18 msgid "question/" msgstr "" @@ -359,36 +359,36 @@ msgstr "" msgid "tags/" msgstr "" -#: urls.py:170 +#: urls.py:175 msgid "subscribe-for-tags/" msgstr "" -#: urls.py:175 urls.py:181 urls.py:186 -#: skins/default/templates/main_page/javascript.html:22 +#: urls.py:180 urls.py:186 urls.py:191 +#: skins/default/templates/main_page/javascript.html:19 msgid "users/" msgstr "" -#: urls.py:191 urls.py:196 +#: urls.py:196 urls.py:201 msgid "badges/" msgstr "" -#: urls.py:201 +#: urls.py:206 msgid "messages/" msgstr "" -#: urls.py:201 +#: urls.py:206 msgid "markread/" msgstr "" -#: urls.py:217 +#: urls.py:222 msgid "upload/" msgstr "" -#: urls.py:218 +#: urls.py:223 msgid "feedback/" msgstr "" -#: urls.py:219 setup_templates/settings.py:188 +#: urls.py:224 setup_templates/settings.py:201 #: skins/default/templates/authopenid/providers_javascript.html:7 msgid "account/" msgstr "" @@ -544,6 +544,32 @@ msgstr "" msgid "Use this setting to control gravatar for email-less user" msgstr "" +#: conf/email.py:92 +#, fuzzy +msgid "Allow posting questions by email" +msgstr "" +"<span class=\"strong big\">You are welcome to start submitting your question " +"anonymously</span>. When you submit the post, you will be redirected to the " +"login/signup page. Your question will be saved in the current session and " +"will be published after you log in. Login/signup process is very simple. " +"Login takes about 30 seconds, initial signup takes a minute or less." + +#: conf/email.py:94 +msgid "" +"Before enabling this setting - please fill out IMAP settings in the settings." +"py file" +msgstr "" + +#: conf/email.py:105 +msgid "Replace space in emailed tags with dash" +msgstr "" + +#: conf/email.py:107 +msgid "" +"This setting applies to tags written in the subject line of questions asked " +"by email" +msgstr "" + #: conf/external_keys.py:11 msgid "Keys to connect the site with external services like Facebook, etc." msgstr "" @@ -1426,151 +1452,151 @@ msgstr "" msgid "Question has no accepted answers" msgstr "" -#: const/__init__.py:112 +#: const/__init__.py:113 msgid "asked a question" msgstr "" -#: const/__init__.py:113 +#: const/__init__.py:114 msgid "answered a question" msgstr "" -#: const/__init__.py:114 +#: const/__init__.py:115 msgid "commented question" msgstr "" -#: const/__init__.py:115 +#: const/__init__.py:116 msgid "commented answer" msgstr "" -#: const/__init__.py:116 +#: const/__init__.py:117 msgid "edited question" msgstr "" -#: const/__init__.py:117 +#: const/__init__.py:118 msgid "edited answer" msgstr "" -#: const/__init__.py:118 +#: const/__init__.py:119 msgid "received award" msgstr "received badge" -#: const/__init__.py:119 +#: const/__init__.py:120 msgid "marked best answer" msgstr "" -#: const/__init__.py:120 +#: const/__init__.py:121 msgid "upvoted" msgstr "" -#: const/__init__.py:121 +#: const/__init__.py:122 msgid "downvoted" msgstr "" -#: const/__init__.py:122 +#: const/__init__.py:123 msgid "canceled vote" msgstr "" -#: const/__init__.py:123 +#: const/__init__.py:124 msgid "deleted question" msgstr "" -#: const/__init__.py:124 +#: const/__init__.py:125 msgid "deleted answer" msgstr "" -#: const/__init__.py:125 +#: const/__init__.py:126 msgid "marked offensive" msgstr "" -#: const/__init__.py:126 +#: const/__init__.py:127 msgid "updated tags" msgstr "" -#: const/__init__.py:127 +#: const/__init__.py:128 msgid "selected favorite" msgstr "" -#: const/__init__.py:128 +#: const/__init__.py:129 msgid "completed user profile" msgstr "" -#: const/__init__.py:129 +#: const/__init__.py:130 msgid "email update sent to user" msgstr "" -#: const/__init__.py:130 +#: const/__init__.py:131 msgid "mentioned in the post" msgstr "" -#: const/__init__.py:181 +#: const/__init__.py:182 msgid "question_answered" msgstr "answered question" -#: const/__init__.py:182 +#: const/__init__.py:183 msgid "question_commented" msgstr "commented question" -#: const/__init__.py:183 +#: const/__init__.py:184 msgid "answer_commented" msgstr "" -#: const/__init__.py:184 +#: const/__init__.py:185 msgid "answer_accepted" msgstr "" -#: const/__init__.py:188 +#: const/__init__.py:189 msgid "[closed]" msgstr "" -#: const/__init__.py:189 +#: const/__init__.py:190 msgid "[deleted]" msgstr "" -#: const/__init__.py:190 views/readers.py:578 +#: const/__init__.py:191 views/readers.py:561 msgid "initial version" msgstr "" -#: const/__init__.py:191 +#: const/__init__.py:192 msgid "retagged" msgstr "" -#: const/__init__.py:199 +#: const/__init__.py:200 msgid "off" msgstr "" -#: const/__init__.py:200 +#: const/__init__.py:201 msgid "exclude ignored" msgstr "" -#: const/__init__.py:201 +#: const/__init__.py:202 msgid "only selected" msgstr "" -#: const/__init__.py:205 +#: const/__init__.py:206 msgid "instantly" msgstr "" -#: const/__init__.py:206 +#: const/__init__.py:207 msgid "daily" msgstr "" -#: const/__init__.py:207 +#: const/__init__.py:208 msgid "weekly" msgstr "" -#: const/__init__.py:208 +#: const/__init__.py:209 msgid "no email" msgstr "" -#: const/__init__.py:245 skins/default/templates/badges.html:37 +#: const/__init__.py:246 skins/default/templates/badges.html:37 msgid "gold" msgstr "" -#: const/__init__.py:246 skins/default/templates/badges.html:46 +#: const/__init__.py:247 skins/default/templates/badges.html:46 msgid "silver" msgstr "" -#: const/__init__.py:247 skins/default/templates/badges.html:53 +#: const/__init__.py:248 skins/default/templates/badges.html:53 msgid "bronze" msgstr "" @@ -1693,7 +1719,7 @@ msgstr "sorry, there is no such user name" #: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:10 #: deps/django_authopenid/urls.py:11 deps/django_authopenid/urls.py:14 -#: deps/django_authopenid/urls.py:17 setup_templates/settings.py:188 +#: deps/django_authopenid/urls.py:17 setup_templates/settings.py:201 msgid "signin/" msgstr "" @@ -1862,33 +1888,33 @@ msgstr "" msgid "Sorry, this account recovery key has expired or is invalid" msgstr "" -#: deps/django_authopenid/views.py:574 +#: deps/django_authopenid/views.py:572 #, python-format msgid "Login method %(provider_name)s does not exist" msgstr "" -#: deps/django_authopenid/views.py:580 +#: deps/django_authopenid/views.py:578 msgid "Oops, sorry - there was some error - please try again" msgstr "" -#: deps/django_authopenid/views.py:671 +#: deps/django_authopenid/views.py:669 #, python-format msgid "Your %(provider)s login works fine" msgstr "" -#: deps/django_authopenid/views.py:978 deps/django_authopenid/views.py:984 +#: deps/django_authopenid/views.py:976 deps/django_authopenid/views.py:982 #, python-format msgid "your email needs to be validated see %(details_url)s" msgstr "" "Your email needs to be validated. Please see details <a " "id='validate_email_alert' href='%(details_url)s'>here</a>." -#: deps/django_authopenid/views.py:1005 +#: deps/django_authopenid/views.py:1003 #, python-format msgid "Recover your %(site)s account" msgstr "" -#: deps/django_authopenid/views.py:1070 +#: deps/django_authopenid/views.py:1069 msgid "Please check your email and visit the enclosed link." msgstr "" @@ -2025,6 +2051,37 @@ msgstr "" msgid "Congratulations, you are now an Administrator" msgstr "" +#: management/commands/post_emailed_questions.py:34 +msgid "" +"<p>To ask by email, please:</p>\n" +"<ul>\n" +" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n" +" <li>Type details of your question into the email body</li>\n" +"</ul>\n" +"<p>Note that tags may consist of more than one word, and tags\n" +"may be separated by a semicolon or a comma</p>\n" +msgstr "" + +#: management/commands/post_emailed_questions.py:54 +#, python-format +msgid "" +"<p>Sorry, there was an error posting your question please contact the %(site)" +"s administrator</p>" +msgstr "" + +#: management/commands/post_emailed_questions.py:60 +#, python-format +msgid "" +"<p>Sorry, in order to post questions on %(site)s by email, please <a href=\"%" +"(url)s\">register first</a></p>" +msgstr "" + +#: management/commands/post_emailed_questions.py:68 +msgid "" +"<p>Sorry, your question could not be posted due to insufficient privileges " +"of your user account</p>" +msgstr "" + #: management/commands/send_email_alerts.py:103 #, python-format msgid "\" and \"%s\"" @@ -2155,14 +2212,14 @@ msgid "" "uploading images is limited to users with >%(min_rep)s reputation points" msgstr "sorry, file uploading requires karma >%(min_rep)s" -#: models/__init__.py:401 models/__init__.py:468 models/__init__.py:2320 +#: models/__init__.py:401 models/__init__.py:468 models/__init__.py:2344 msgid "blocked users cannot post" msgstr "" "Sorry, your account appears to be blocked and you cannot make new posts " "until this issue is resolved. Please contact the forum administrator to " "reach a resolution." -#: models/__init__.py:402 models/__init__.py:2323 +#: models/__init__.py:402 models/__init__.py:2347 msgid "suspended users cannot post" msgstr "" "Sorry, your account appears to be suspended and you cannot make new posts " @@ -2358,93 +2415,93 @@ msgstr "" msgid "cannot revoke old vote" msgstr "sorry, but older votes cannot be revoked" -#: models/__init__.py:1354 +#: models/__init__.py:1370 msgid "Anonymous" msgstr "" -#: models/__init__.py:1440 views/users.py:362 +#: models/__init__.py:1456 views/users.py:362 msgid "Site Adminstrator" msgstr "" -#: models/__init__.py:1442 views/users.py:364 +#: models/__init__.py:1458 views/users.py:364 msgid "Forum Moderator" msgstr "" -#: models/__init__.py:1444 views/users.py:366 +#: models/__init__.py:1460 views/users.py:366 msgid "Suspended User" msgstr "" -#: models/__init__.py:1446 views/users.py:368 +#: models/__init__.py:1462 views/users.py:368 msgid "Blocked User" msgstr "" -#: models/__init__.py:1448 views/users.py:370 +#: models/__init__.py:1464 views/users.py:370 msgid "Registered User" msgstr "" -#: models/__init__.py:1450 +#: models/__init__.py:1466 msgid "Watched User" msgstr "" -#: models/__init__.py:1452 +#: models/__init__.py:1468 msgid "Approved User" msgstr "" -#: models/__init__.py:1508 +#: models/__init__.py:1524 #, python-format msgid "%(username)s karma is %(reputation)s" msgstr "" -#: models/__init__.py:1518 +#: models/__init__.py:1534 #, python-format msgid "one gold badge" msgid_plural "%(count)d gold badges" msgstr[0] "" msgstr[1] "" -#: models/__init__.py:1525 +#: models/__init__.py:1541 #, python-format msgid "one silver badge" msgid_plural "%(count)d silver badges" msgstr[0] "" msgstr[1] "" -#: models/__init__.py:1532 +#: models/__init__.py:1548 #, python-format msgid "one bronze badge" msgid_plural "%(count)d bronze badges" msgstr[0] "" msgstr[1] "" -#: models/__init__.py:1543 +#: models/__init__.py:1559 #, python-format msgid "%(item1)s and %(item2)s" msgstr "" -#: models/__init__.py:1547 +#: models/__init__.py:1563 #, python-format msgid "%(user)s has %(badges)s" msgstr "" -#: models/__init__.py:1920 models/__init__.py:1926 models/__init__.py:1931 -#: models/__init__.py:1936 +#: models/__init__.py:1936 models/__init__.py:1942 models/__init__.py:1947 +#: models/__init__.py:1952 #, python-format msgid "Re: \"%(title)s\"" msgstr "" -#: models/__init__.py:1941 models/__init__.py:1946 +#: models/__init__.py:1957 models/__init__.py:1962 #, python-format msgid "Question: \"%(title)s\"" msgstr "" -#: models/__init__.py:2116 +#: models/__init__.py:2140 #, python-format msgid "" "Congratulations, you have received a badge '%(badge_name)s'. Check out <a " "href=\"%(user_profile)s\">your profile</a>." msgstr "" -#: models/__init__.py:2295 views/commands.py:396 +#: models/__init__.py:2319 views/commands.py:409 msgid "Your tag subscription was saved, thanks!" msgstr "" @@ -2780,11 +2837,11 @@ msgid "" "question %(question_title)s" msgstr "" -#: models/tag.py:105 +#: models/tag.py:138 msgid "interesting" msgstr "" -#: models/tag.py:105 +#: models/tag.py:138 msgid "ignored" msgstr "" @@ -2949,8 +3006,8 @@ msgstr "" #: skins/default/templates/answer_edit.html:65 #: skins/default/templates/ask.html:43 skins/default/templates/ask.html:46 #: skins/default/templates/macros.html:592 +#: skins/default/templates/question.html:474 #: skins/default/templates/question.html:477 -#: skins/default/templates/question.html:480 #: skins/default/templates/question_edit.html:62 #: skins/default/templates/question_edit.html:65 msgid "hide preview" @@ -2958,12 +3015,12 @@ msgstr "" #: skins/default/templates/answer_edit.html:65 #: skins/default/templates/ask.html:46 -#: skins/default/templates/question.html:480 +#: skins/default/templates/question.html:477 #: skins/default/templates/question_edit.html:65 msgid "show preview" msgstr "" -#: skins/default/templates/ask.html:3 +#: skins/default/templates/ask.html:4 msgid "Ask a question" msgstr "" @@ -3524,19 +3581,19 @@ msgstr "" msgid "see questions tagged '%(tag)s'" msgstr "" -#: skins/default/templates/macros.html:352 views/readers.py:231 +#: skins/default/templates/macros.html:352 views/readers.py:219 msgid "vote" msgid_plural "votes" msgstr[0] "" msgstr[1] "" -#: skins/default/templates/macros.html:369 views/readers.py:234 +#: skins/default/templates/macros.html:369 views/readers.py:222 msgid "answer" msgid_plural "answers" msgstr[0] "" msgstr[1] "" -#: skins/default/templates/macros.html:380 views/readers.py:237 +#: skins/default/templates/macros.html:380 views/readers.py:225 msgid "view" msgid_plural "views" msgstr[0] "" @@ -3906,7 +3963,7 @@ msgstr "" msgid "tag editors receive special awards from the community" msgstr "" -#: skins/default/templates/question_retag.html:75 +#: skins/default/templates/question_retag.html:61 msgid "up to 5 tags, less than 20 characters each" msgstr "" @@ -4789,14 +4846,14 @@ msgstr "" msgid "rss feed" msgstr "" -#: skins/default/templates/main_page/headline.html:12 views/readers.py:131 +#: skins/default/templates/main_page/headline.html:12 views/readers.py:119 #, fuzzy, python-format msgid "%(q_num)s question, tagged" msgid_plural "%(q_num)s questions, tagged" msgstr[0] "Asked" msgstr[1] "Asked" -#: skins/default/templates/main_page/headline.html:14 views/readers.py:139 +#: skins/default/templates/main_page/headline.html:14 views/readers.py:127 #, python-format msgid "%(q_num)s question" msgid_plural "%(q_num)s questions" @@ -4844,20 +4901,20 @@ msgstr "" msgid "add tags and a query to focus your search" msgstr "" -#: skins/default/templates/main_page/javascript.html:16 -#: skins/default/templates/main_page/javascript.html:17 +#: skins/default/templates/main_page/javascript.html:13 +#: skins/default/templates/main_page/javascript.html:14 msgid "mark-tag/" msgstr "" -#: skins/default/templates/main_page/javascript.html:16 +#: skins/default/templates/main_page/javascript.html:13 msgid "interesting/" msgstr "" -#: skins/default/templates/main_page/javascript.html:17 +#: skins/default/templates/main_page/javascript.html:14 msgid "ignored/" msgstr "" -#: skins/default/templates/main_page/javascript.html:18 +#: skins/default/templates/main_page/javascript.html:15 msgid "unmark-tag/" msgstr "" @@ -5427,12 +5484,12 @@ msgstr "" msgid "email update frequency has been set to daily" msgstr "" -#: views/commands.py:400 +#: views/commands.py:413 #, python-format msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)." msgstr "" -#: views/commands.py:409 +#: views/commands.py:422 #, python-format msgid "Please sign in to subscribe for: %(tags)s" msgstr "" @@ -5449,14 +5506,14 @@ msgstr "" msgid "We look forward to hearing your feedback! Please, give it next time :)" msgstr "" -#: views/readers.py:177 +#: views/readers.py:165 #, python-format msgid "%(badge_count)d %(badge_level)s badge" msgid_plural "%(badge_count)d %(badge_level)s badges" msgstr[0] "" msgstr[1] "" -#: views/readers.py:403 +#: views/readers.py:388 msgid "" "Sorry, the comment you are looking for has been deleted and is no longer " "accessible" @@ -5518,43 +5575,43 @@ msgstr "" msgid "profile - email subscriptions" msgstr "" -#: views/writers.py:57 +#: views/writers.py:56 msgid "Sorry, anonymous users cannot upload files" msgstr "" -#: views/writers.py:67 +#: views/writers.py:66 #, python-format msgid "allowed file types are '%(file_types)s'" msgstr "" -#: views/writers.py:90 +#: views/writers.py:89 #, python-format msgid "maximum upload file size is %(file_size)sK" msgstr "" -#: views/writers.py:98 +#: views/writers.py:97 msgid "Error uploading file. Please contact the site administrator. Thank you." msgstr "" -#: views/writers.py:560 +#: views/writers.py:555 #, python-format msgid "" "Sorry, you appear to be logged out and cannot post comments. Please <a href=" "\"%(sign_in_url)s\">sign in</a>." msgstr "" -#: views/writers.py:605 +#: views/writers.py:600 msgid "Sorry, anonymous users cannot edit comments" msgstr "" -#: views/writers.py:613 +#: views/writers.py:608 #, python-format msgid "" "Sorry, you appear to be logged out and cannot delete comments. Please <a " "href=\"%(sign_in_url)s\">sign in</a>." msgstr "" -#: views/writers.py:634 +#: views/writers.py:629 msgid "sorry, we seem to have some technical difficulties" msgstr "" diff --git a/askbot/locale/ro/LC_MESSAGES/django.mo b/askbot/locale/ro/LC_MESSAGES/django.mo Binary files differnew file mode 100644 index 00000000..1f9109d8 --- /dev/null +++ b/askbot/locale/ro/LC_MESSAGES/django.mo diff --git a/askbot/locale/ro/LC_MESSAGES/django.po b/askbot/locale/ro/LC_MESSAGES/django.po new file mode 100644 index 00000000..abd8f70f --- /dev/null +++ b/askbot/locale/ro/LC_MESSAGES/django.po @@ -0,0 +1,5727 @@ +# Romanian translation for ubuntu-ro +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the ubuntu-ro package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: ubuntu-ro\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2011-03-23 15:57-0500\n" +"PO-Revision-Date: 2011-04-10 19:43+0000\n" +"Last-Translator: Adi Roiban <adi@roiban.ro>\n" +"Language-Team: Romanian <ro@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 " +"== 0) && (n != 0))) ? 2: 1));\n" +"X-Launchpad-Export-Date: 2011-04-10 19:44+0000\n" +"X-Generator: Launchpad (build 12757)\n" + +#: exceptions.py:9 +msgid "Sorry, but anonymous visitors cannot access this function" +msgstr "Vizitatorii anonimi nu pot accesa această funcție" + +#: feed.py:22 +msgid " - " +msgstr " - " + +#: feed.py:22 +msgid "latest questions" +msgstr "ultimele întrebări" + +#: forms.py:72 +msgid "select country" +msgstr "alegeți o țară" + +#: forms.py:81 +msgid "Country" +msgstr "Țară" + +#: forms.py:89 +msgid "Country field is required" +msgstr "Câmpul cu țara este obligatoriu" + +#: forms.py:102 skins/default/templates/blocks/answer_edit_tips.html:43 +#: skins/default/templates/blocks/answer_edit_tips.html:47 +#: skins/default/templates/blocks/question_edit_tips.html:38 +#: skins/default/templates/blocks/question_edit_tips.html:43 +msgid "title" +msgstr "titlu" + +#: forms.py:103 +msgid "please enter a descriptive title for your question" +msgstr "introduceți un titlu descriptiv pentru întrebare" + +#: forms.py:108 +msgid "title must be > 10 characters" +msgstr "titlul trebuie să fie mai lung decât 10 caractere" + +#: forms.py:117 +msgid "content" +msgstr "conținut" + +#: forms.py:123 +msgid "question content must be > 10 characters" +msgstr "conținutul întrebării trebuie să fie mai lung decât 10 caractere" + +#: forms.py:132 skins/default/templates/blocks/header.html:22 +msgid "tags" +msgstr "etichete" + +#: forms.py:134 +msgid "" +"Tags are short keywords, with no spaces within. Up to five tags can be used." +msgstr "" +"Etichetele sunt cuvinte cheie scurte, fără spații. Pot fi folosite până la " +"cinci etichete." + +#: forms.py:141 skins/default/templates/question_retag.html:74 +msgid "tags are required" +msgstr "etichetele sunt obligatorii" + +#: forms.py:150 +#, python-format +msgid "please use %(tag_count)d tag or less" +msgid_plural "please use %(tag_count)d tags or less" +msgstr[0] "vă rugăm să folosiți %(tag_count)d etichetă sau mai puțin" +msgstr[1] "vă rugăm să folosiți %(tag_count)d etichete sau mai puțin" +msgstr[2] "vă rugăm să folosiți %(tag_count)d de etichete sau mai puțin" + +#: forms.py:159 +#, python-format +msgid "each tag must be shorter than %(max_chars)d character" +msgid_plural "each tag must be shorter than %(max_chars)d characters" +msgstr[0] "" +"fiecare etichetă trebuie să fie mai scurtă de %(max_chars)d caracter" +msgstr[1] "" +"fiecare etichetă trebuie să fie mai scurtă de %(max_chars)d caractere" +msgstr[2] "" +"fiecare etichetă trebuie să fie mai scurtă de %(max_chars)d de caractere" + +#: forms.py:167 +msgid "use-these-chars-in-tags" +msgstr "folositi-aceste-caractere-in-etichete" + +#: forms.py:202 +msgid "" +"community wiki (karma is not awarded & many others can edit wiki post)" +msgstr "" +"wiki al comunității (nu se primesc puncte de reputație și mesajul poate fi " +"modificat de mai multe persoane)" + +#: forms.py:203 +msgid "" +"if you choose community wiki option, the question and answer do not generate " +"points and name of author will not be shown" +msgstr "" +"dacă alegeți opțiunea wiki al comunității, întrebarea și răspunsul nu vor " +"genera puncte iar numele autorului nu va fi afișat" + +#: forms.py:219 +msgid "update summary:" +msgstr "sumar actualizare:" + +#: forms.py:220 +msgid "" +"enter a brief summary of your revision (e.g. fixed spelling, grammar, " +"improved style, this field is optional)" +msgstr "" +"introduceți o descriere scurtă a reviziei (de ex. corectare ortografică, " +"gramaticală, stil îmbunătățit, câmp opțional)" + +#: forms.py:283 +msgid "Enter number of points to add or subtract" +msgstr "Introduceți numărul de puncte pentru a fi adăugate sau retrase" + +#: forms.py:297 const/__init__.py:224 +msgid "approved" +msgstr "aprobat" + +#: forms.py:298 const/__init__.py:225 +msgid "watched" +msgstr "urmărit" + +#: forms.py:299 const/__init__.py:226 +msgid "suspended" +msgstr "suspendat" + +#: forms.py:300 const/__init__.py:227 +msgid "blocked" +msgstr "blocat" + +#: forms.py:302 const/__init__.py:223 +msgid "moderator" +msgstr "moderator" + +#: forms.py:322 +msgid "Change status to" +msgstr "Schimbă starea în" + +#: forms.py:349 +msgid "which one?" +msgstr "care?" + +#: forms.py:370 +msgid "Cannot change own status" +msgstr "Nu se poate schimba propria stare" + +#: forms.py:376 +msgid "Cannot turn other user to moderator" +msgstr "Nu s-a putut schimba alt utilizator în moderator" + +#: forms.py:383 +msgid "Cannot change status of another moderator" +msgstr "Nu se poate schimba starea altui utilizator" + +#: forms.py:389 +#, python-format +msgid "" +"If you wish to change %(username)s's status, please make a meaningful " +"selection." +msgstr "" +"Dacă doriți să modificați statusul %(username)s alegeți ceva expresiv." + +#: forms.py:398 +msgid "Subject line" +msgstr "Linie subiect" + +#: forms.py:405 +msgid "Message text" +msgstr "Text mesaj" + +#: forms.py:488 +msgid "Your name:" +msgstr "Nume:" + +#: forms.py:489 +msgid "Email (not shared with anyone):" +msgstr "Email (nu este dezvăluit altor părți):" + +#: forms.py:490 +msgid "Your message:" +msgstr "Mesaj:" + +#: forms.py:527 +msgid "ask anonymously" +msgstr "întreabă anonim" + +#: forms.py:529 +msgid "" +"Check if you do not want to reveal your name when asking this question" +msgstr "" +"Bifați în cazul în care nu doriți să dezvăluiți numele vostru când puneți " +"această întrebare" + +#: forms.py:604 +msgid "" +"You have asked this question anonymously, if you decide to reveal your " +"identity, please check this box." +msgstr "" +"Ați răspuns la această întrebare anonim, dacă decideți să vă arătați " +"identitatea, marcați această căsuță." + +#: forms.py:608 +msgid "reveal identity" +msgstr "arată identitatea" + +#: forms.py:666 +msgid "" +"Sorry, only owner of the anonymous question can reveal his or her identity, " +"please uncheck the box" +msgstr "" +"Doar cel care a pus întrebarea anonimă poate dezvălui identitatea, debifați " +"căsuța" + +#: forms.py:679 +msgid "" +"Sorry, apparently rules have just changed - it is no longer possible to ask " +"anonymously. Please either check the \"reveal identity\" box or reload this " +"page and try editing the question again." +msgstr "" +"Aparent, regulile au fost schimbate - nu mai puteți întreba ca anonim. Vă " +"rugăm să marcați căsuța „arată identitatea” sau să reîncărcați pagina pentru " +"a încerca din nou să introduceți întrebarea." + +#: forms.py:717 +msgid "this email will be linked to gravatar" +msgstr "această adresă de email va fi conectată cu gravatarul" + +#: forms.py:724 +msgid "Real name" +msgstr "Nume real" + +#: forms.py:731 +msgid "Website" +msgstr "Pagină web" + +#: forms.py:738 +msgid "City" +msgstr "Oraș" + +#: forms.py:747 +msgid "Show country" +msgstr "Arată țara" + +#: forms.py:752 +msgid "Date of birth" +msgstr "Data nașterii" + +#: forms.py:753 +msgid "will not be shown, used to calculate age, format: YYYY-MM-DD" +msgstr "" +"nu va fi afișată, ci folosită doar pentru calcularea vârstei, format AAAA-LL-" +"ZZ" + +#: forms.py:759 +msgid "Profile" +msgstr "Profil" + +#: forms.py:768 +msgid "Screen name" +msgstr "Nume afișat" + +#: forms.py:799 forms.py:800 +msgid "this email has already been registered, please use another one" +msgstr "acest email este deja înregistrat, utilizați altul" + +#: forms.py:807 +msgid "Choose email tag filter" +msgstr "Alegeți filtru email etichete" + +#: forms.py:847 +msgid "Asked by me" +msgstr "Întrebate de mine" + +#: forms.py:850 +msgid "Answered by me" +msgstr "Răspunse de mine" + +#: forms.py:853 +msgid "Individually selected" +msgstr "Alese individual" + +#: forms.py:856 +msgid "Entire forum (tag filtered)" +msgstr "Toate întrebările (filtrate pe tag)" + +#: forms.py:860 +msgid "Comments and posts mentioning me" +msgstr "Comentarii și răspunsuri în care sunt menționat eu" + +#: forms.py:930 +msgid "okay, let's try!" +msgstr "Bine, să încercăm!" + +#: forms.py:931 +msgid "no community email please, thanks" +msgstr "fără emailuri de la comunitate, mulțumesc" + +#: forms.py:935 +msgid "please choose one of the options above" +msgstr "alegeți una dintre opțiunile de mai sus" + +#: urls.py:44 +msgid "about/" +msgstr "despre/" + +#: urls.py:45 conf/site_settings.py:79 +msgid "faq/" +msgstr "intrebari-frecvente/" + +#: urls.py:46 +msgid "privacy/" +msgstr "confidentialitate/" + +#: urls.py:47 +msgid "logout/" +msgstr "logout/" + +#: urls.py:49 urls.py:54 +msgid "answers/" +msgstr "raspunsuri/" + +#: urls.py:49 urls.py:75 urls.py:181 +msgid "edit/" +msgstr "edit/" + +#: urls.py:54 urls.py:105 +msgid "revisions/" +msgstr "revizii/" + +#: urls.py:60 urls.py:70 urls.py:75 urls.py:80 urls.py:85 urls.py:90 +#: urls.py:95 urls.py:100 urls.py:105 +#: skins/default/templates/question.html:438 +msgid "questions/" +msgstr "intrebari/" + +#: urls.py:70 +msgid "ask/" +msgstr "intreaba/" + +#: urls.py:80 +msgid "retag/" +msgstr "retag/" + +#: urls.py:85 +msgid "close/" +msgstr "inchide/" + +#: urls.py:90 +msgid "reopen/" +msgstr "redeschide/" + +#: urls.py:95 +msgid "answer/" +msgstr "raspuns/" + +#: urls.py:100 skins/default/templates/question.html:438 +msgid "vote/" +msgstr "vot/" + +#: urls.py:132 skins/default/templates/question.html:436 +#: skins/default/templates/main_page/javascript.html:21 +msgid "question/" +msgstr "intrebare/" + +#: urls.py:137 +msgid "tags/" +msgstr "etichete/" + +#: urls.py:170 +msgid "subscribe-for-tags/" +msgstr "abonare-etichete/" + +#: urls.py:175 urls.py:181 urls.py:186 +#: skins/default/templates/main_page/javascript.html:22 +msgid "users/" +msgstr "utilizatori/" + +#: urls.py:191 urls.py:196 +msgid "badges/" +msgstr "insigne/" + +#: urls.py:201 +msgid "messages/" +msgstr "mesaje/" + +#: urls.py:201 +msgid "markread/" +msgstr "macheaza-citit/" + +#: urls.py:217 +msgid "upload/" +msgstr "incarca/" + +#: urls.py:218 +msgid "feedback/" +msgstr "sugestii/" + +#: urls.py:219 setup_templates/settings.py:188 +#: skins/default/templates/authopenid/providers_javascript.html:7 +msgid "account/" +msgstr "cont/" + +#: conf/badges.py:12 +msgid "Badge settings" +msgstr "Configurări insigne" + +#: conf/badges.py:21 +msgid "Disciplined: minimum upvotes for deleted post" +msgstr "" + +#: conf/badges.py:30 +msgid "Peer Pressure: minimum downvotes for deleted post" +msgstr "" + +#: conf/badges.py:39 +msgid "Teacher: minimum upvotes for the answer" +msgstr "" + +#: conf/badges.py:48 +msgid "Nice Answer: minimum upvotes for the answer" +msgstr "" + +#: conf/badges.py:57 +msgid "Good Answer: minimum upvotes for the answer" +msgstr "" + +#: conf/badges.py:66 +msgid "Great Answer: minimum upvotes for the answer" +msgstr "" + +#: conf/badges.py:75 +msgid "Nice Question: minimum upvotes for the question" +msgstr "" + +#: conf/badges.py:84 +msgid "Good Question: minimum upvotes for the question" +msgstr "" + +#: conf/badges.py:93 +msgid "Great Question: minimum upvotes for the question" +msgstr "" + +#: conf/badges.py:102 +msgid "Popular Question: minimum views" +msgstr "" + +#: conf/badges.py:111 +msgid "Notable Question: minimum views" +msgstr "" + +#: conf/badges.py:120 +msgid "Famous Question: minimum views" +msgstr "" + +#: conf/badges.py:129 +msgid "Self-Learner: minimum answer upvotes" +msgstr "" + +#: conf/badges.py:138 +msgid "Civic Duty: minimum votes" +msgstr "" + +#: conf/badges.py:147 +msgid "Enlightened Duty: minimum upvotes" +msgstr "" + +#: conf/badges.py:156 +msgid "Guru: minimum upvotes" +msgstr "" + +#: conf/badges.py:165 +msgid "Necromancer: minimum upvotes" +msgstr "" + +#: conf/badges.py:174 +msgid "Necromancer: minimum delay in days" +msgstr "" + +#: conf/badges.py:183 +msgid "Associate Editor: minimum number of edits" +msgstr "" + +#: conf/badges.py:192 +msgid "Favorite Question: minimum stars" +msgstr "" + +#: conf/badges.py:201 +msgid "Stellar Question: minimum stars" +msgstr "" + +#: conf/badges.py:210 +msgid "Commentator: minimum comments" +msgstr "" + +#: conf/badges.py:219 +msgid "Taxonomist: minimum tag use count" +msgstr "" + +#: conf/badges.py:228 +msgid "Enthusiast: minimum days" +msgstr "" + +#: conf/email.py:14 +msgid "Email and email alert settings" +msgstr "Configurări email și alerte" + +#: conf/email.py:22 +msgid "Prefix for the email subject line" +msgstr "Prefixul liniei de subiect din email" + +#: conf/email.py:24 +msgid "" +"This setting takes default from the django settingEMAIL_SUBJECT_PREFIX. A " +"value entered here will overridethe default." +msgstr "" + +#: conf/email.py:36 +msgid "Maximum number of news entries in an email alert" +msgstr "Număr maxim de intrări întrun email de alerte" + +#: conf/email.py:46 +msgid "Default news notification frequency" +msgstr "Frecvența implicită a notificărilor de noutăți" + +#: conf/email.py:48 +msgid "" +"This option currently defines default frequency of emailed updates in the " +"following five categories: questions asked by user, answered by user, " +"individually selected, entire forum (per person tag filter applies) and " +"posts mentioning the user and comment responses" +msgstr "" + +#: conf/email.py:63 +msgid "Require email verification before allowing to post" +msgstr "" + +#: conf/email.py:64 +msgid "" +"Active email verification is done by sending a verification key in email" +msgstr "" + +#: conf/email.py:73 +msgid "Allow only one account per email address" +msgstr "" + +#: conf/email.py:82 +msgid "Fake email for anonymous user" +msgstr "" + +#: conf/email.py:83 +msgid "Use this setting to control gravatar for email-less user" +msgstr "" + +#: conf/external_keys.py:11 +msgid "Keys to connect the site with external services like Facebook, etc." +msgstr "" + +#: conf/external_keys.py:18 +msgid "Google site verification key" +msgstr "" + +#: conf/external_keys.py:20 +#, python-format +msgid "" +"This key helps google index your site please obtain is at <a " +"href=\"%(google_webmasters_tools_url)s\">google webmasters tools site</a>" +msgstr "" + +#: conf/external_keys.py:34 +msgid "Google Analytics key" +msgstr "" + +#: conf/external_keys.py:36 +#, python-format +msgid "" +"Obtain is at <a href=\"%(ga_site)s\">Google Analytics</a> site, if you wish " +"to use Google Analytics to monitor your site" +msgstr "" + +#: conf/external_keys.py:49 +msgid "Enable recaptcha (keys below are required)" +msgstr "" + +#: conf/external_keys.py:58 +msgid "Recaptcha public key" +msgstr "" + +#: conf/external_keys.py:66 +msgid "Recaptcha private key" +msgstr "" + +#: conf/external_keys.py:68 +msgid "" +"Recaptcha is a tool that helps distinguish real people from annoying spam " +"robots. Please get this and a public key at the <a " +"href=\"http://recaptcha.net\">recaptcha.net</a>" +msgstr "" + +#: conf/external_keys.py:80 +msgid "Facebook public API key" +msgstr "" + +#: conf/external_keys.py:82 +msgid "" +"Facebook API key and Facebook secret allow to use Facebook Connect login " +"method at your site. Please obtain these keys at <a " +"href=\"http://www.facebook.com/developers/createapp.php\">facebook create " +"app</a> site" +msgstr "" + +#: conf/external_keys.py:95 +msgid "Facebook secret key" +msgstr "" + +#: conf/external_keys.py:103 +msgid "Twitter consumer key" +msgstr "" + +#: conf/external_keys.py:105 conf/external_keys.py:126 +msgid "" +"Please register your forum at <a " +"href=\"http://dev.twitter.com/apps/\">twitter applications site</a>" +msgstr "" + +#: conf/external_keys.py:116 +msgid "Twitter consumer secret" +msgstr "" + +#: conf/external_keys.py:124 +msgid "LinkedIn consumer key" +msgstr "" + +#: conf/external_keys.py:137 +msgid "LinkedIn consumer secret" +msgstr "" + +#: conf/external_keys.py:145 +msgid "Use LDAP authentication for the password login" +msgstr "" + +#: conf/external_keys.py:154 +msgid "LDAP service provider name" +msgstr "" + +#: conf/external_keys.py:162 +msgid "URL for the LDAP service" +msgstr "" + +#: conf/external_keys.py:170 +msgid "Explain how to change LDAP password" +msgstr "" + +#: conf/flatpages.py:10 +msgid "Flatpages - about, privacy policy, etc." +msgstr "Pagini statice - despre, confidențialiate, etc" + +#: conf/flatpages.py:17 +msgid "Text of the Q&A forum About page (html format)" +msgstr "" + +#: conf/flatpages.py:20 +msgid "" +"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on " +"the \"about\" page to check your input." +msgstr "" + +#: conf/flatpages.py:30 +msgid "Text of the Q&A forum Privacy Policy (html format)" +msgstr "Textul pentru pagina politicii de confidențialitate (format html)" + +#: conf/flatpages.py:33 +msgid "" +"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on " +"the \"privacy\" page to check your input." +msgstr "" + +#: conf/forum_data_rules.py:11 +msgid "Settings for askbot data entry and display" +msgstr "" + +#: conf/forum_data_rules.py:19 +msgid "Check to enable community wiki feature" +msgstr "" + +#: conf/forum_data_rules.py:28 +msgid "Allow asking questions anonymously" +msgstr "" + +#: conf/forum_data_rules.py:30 +msgid "" +"Users do not accrue reputation for anonymous questions and their identity is " +"not revealed until they change their mind" +msgstr "" + +#: conf/forum_data_rules.py:42 +msgid "Maximum length of tag (number of characters)" +msgstr "" + +#: conf/forum_data_rules.py:51 +msgid "Force lowercase the tags" +msgstr "" + +#: conf/forum_data_rules.py:53 +msgid "" +"Attention: after checking this, please back up the database, and run a " +"management command: <code>python manage.py fix_question_tags</code> to " +"globally rename the tags" +msgstr "" + +#: conf/forum_data_rules.py:66 +msgid "Use wildcard tags" +msgstr "" + +#: conf/forum_data_rules.py:68 +msgid "" +"Wildcard tags can be used to follow or ignore many tags at once, a valid " +"wildcard tag has a single wildcard at the very end" +msgstr "" + +#: conf/forum_data_rules.py:81 +msgid "Default max number of comments to display under posts" +msgstr "" + +#: conf/forum_data_rules.py:92 +#, python-format +msgid "Maximum comment length, must be < %(max_len)s" +msgstr "" + +#: conf/forum_data_rules.py:102 +msgid "Limit time to edit comments" +msgstr "" + +#: conf/forum_data_rules.py:104 +msgid "If unchecked, there will be no time limit to edit the comments" +msgstr "" + +#: conf/forum_data_rules.py:115 +msgid "Minutes allowed to edit a comment" +msgstr "" + +#: conf/forum_data_rules.py:116 +msgid "To enable this setting, check the previous one" +msgstr "" + +#: conf/forum_data_rules.py:125 +msgid "Save comment by pressing <Enter> key" +msgstr "" + +#: conf/forum_data_rules.py:134 +msgid "Minimum length of search term for Ajax search" +msgstr "" + +#: conf/forum_data_rules.py:135 +msgid "Must match the corresponding database backend setting" +msgstr "" + +#: conf/forum_data_rules.py:144 +msgid "Do not make text query sticky in search" +msgstr "" + +#: conf/forum_data_rules.py:146 +msgid "" +"Check to disable the \"sticky\" behavior of the search query. This may be " +"useful if you want to move the search bar away from the default position or " +"do not like the default sticky behavior of the text search query." +msgstr "" + +#: conf/forum_data_rules.py:159 +msgid "Maximum number of tags per question" +msgstr "" + +#: conf/forum_data_rules.py:171 +msgid "Number of questions to list by default" +msgstr "" + +#: conf/forum_data_rules.py:181 +msgid "What should \"unanswered question\" mean?" +msgstr "" + +#: conf/login_providers.py:11 +msgid "Login provider setings" +msgstr "" + +#: conf/login_providers.py:19 +msgid "" +"Show alternative login provider buttons on the password \"Sign Up\" page" +msgstr "" + +#: conf/login_providers.py:28 +msgid "Always display local login form and hide \"Askbot\" button." +msgstr "" + +#: conf/login_providers.py:55 +#, python-format +msgid "Activate %(provider)s login" +msgstr "" + +#: conf/login_providers.py:60 +#, python-format +msgid "" +"Note: to really enable %(provider)s login some additional parameters will " +"need to be set in the \"External keys\" section" +msgstr "" + +#: conf/markup.py:15 +msgid "Markup formatting" +msgstr "" + +#: conf/markup.py:22 +msgid "Enable code-friendly Markdown" +msgstr "" + +#: conf/markup.py:24 +msgid "" +"If checked, underscore characters will not trigger italic or bold formatting " +"- bold and italic text can still be marked up with asterisks. Note that " +"\"MathJax support\" implicitly turns this feature on, because underscores " +"are heavily used in LaTeX input." +msgstr "" + +#: conf/markup.py:39 +msgid "Mathjax support (rendering of LaTeX)" +msgstr "" + +#: conf/markup.py:41 +#, python-format +msgid "" +"If you enable this feature, <a href=\"%(url)s\">mathjax</a> must be " +"installed on your server in its own directory." +msgstr "" + +#: conf/markup.py:55 +msgid "Base url of MathJax deployment" +msgstr "" + +#: conf/markup.py:57 +msgid "" +"Note - <strong>MathJax is not included with askbot</strong> - you should " +"deploy it yourself, preferably at a separate domain and enter url pointing " +"to the \"mathjax\" directory (for example: http://mysite.com/mathjax)" +msgstr "" + +#: conf/minimum_reputation.py:11 +msgid "Minimum reputation required to perform actions" +msgstr "" + +#: conf/minimum_reputation.py:20 +msgid "Upvote" +msgstr "" + +#: conf/minimum_reputation.py:29 +msgid "Downvote" +msgstr "" + +#: conf/minimum_reputation.py:38 +msgid "Flag offensive" +msgstr "Marchează ofensiv" + +#: conf/minimum_reputation.py:47 +msgid "Leave comments" +msgstr "" + +#: conf/minimum_reputation.py:56 +msgid "Delete comments posted by others" +msgstr "" + +#: conf/minimum_reputation.py:65 +msgid "Delete questions and answers posted by others" +msgstr "" + +#: conf/minimum_reputation.py:74 +msgid "Upload files" +msgstr "" + +#: conf/minimum_reputation.py:83 +msgid "Close own questions" +msgstr "" + +#: conf/minimum_reputation.py:92 +msgid "Retag questions posted by other people" +msgstr "" + +#: conf/minimum_reputation.py:101 +msgid "Reopen own questions" +msgstr "" + +#: conf/minimum_reputation.py:110 +msgid "Edit community wiki posts" +msgstr "" + +#: conf/minimum_reputation.py:119 +msgid "Edit posts authored by other people" +msgstr "" + +#: conf/minimum_reputation.py:128 +msgid "View offensive flags" +msgstr "" + +#: conf/minimum_reputation.py:137 +msgid "Close questions asked by others" +msgstr "" + +#: conf/minimum_reputation.py:146 +msgid "Lock posts" +msgstr "" + +#: conf/minimum_reputation.py:155 +msgid "Remove rel=nofollow from own homepage" +msgstr "" + +#: conf/minimum_reputation.py:157 +msgid "" +"When a search engine crawler will see a rel=nofollow attribute on a link - " +"the link will not count towards the rank of the users personal site." +msgstr "" + +#: conf/reputation_changes.py:12 +msgid "Reputation loss and gain rules" +msgstr "" + +#: conf/reputation_changes.py:21 +msgid "Maximum daily reputation gain per user" +msgstr "" + +#: conf/reputation_changes.py:30 +msgid "Gain for receiving an upvote" +msgstr "" + +#: conf/reputation_changes.py:39 +msgid "Gain for the author of accepted answer" +msgstr "" + +#: conf/reputation_changes.py:48 +msgid "Gain for accepting best answer" +msgstr "" + +#: conf/reputation_changes.py:57 +msgid "Gain for post owner on canceled downvote" +msgstr "" + +#: conf/reputation_changes.py:66 +msgid "Gain for voter on canceling downvote" +msgstr "" + +#: conf/reputation_changes.py:76 +msgid "Loss for voter for canceling of answer acceptance" +msgstr "" + +#: conf/reputation_changes.py:86 +msgid "Loss for author whose answer was \"un-accepted\"" +msgstr "" + +#: conf/reputation_changes.py:96 +msgid "Loss for giving a downvote" +msgstr "" + +#: conf/reputation_changes.py:106 +msgid "Loss for owner of post that was flagged offensive" +msgstr "" + +#: conf/reputation_changes.py:116 +msgid "Loss for owner of post that was downvoted" +msgstr "" + +#: conf/reputation_changes.py:126 +msgid "Loss for owner of post that was flagged 3 times per same revision" +msgstr "" + +#: conf/reputation_changes.py:136 +msgid "Loss for owner of post that was flagged 5 times per same revision" +msgstr "" + +#: conf/reputation_changes.py:146 +msgid "Loss for post owner when upvote is canceled" +msgstr "" + +#: conf/site_settings.py:13 +msgid "Q&A forum website parameters and urls" +msgstr "" + +#: conf/site_settings.py:21 +msgid "Site title for the Q&A forum" +msgstr "" + +#: conf/site_settings.py:30 +msgid "Comma separated list of Q&A site keywords" +msgstr "Listă separată de virgule pentru cuvintele cheie ale siteului" + +#: conf/site_settings.py:40 +msgid "Copyright message to show in the footer" +msgstr "" + +#: conf/site_settings.py:50 +msgid "Site description for the search engines" +msgstr "" + +#: conf/site_settings.py:59 +msgid "Short name for your Q&A forum" +msgstr "" + +#: conf/site_settings.py:69 +msgid "Base URL for your Q&A forum, must start with http or https" +msgstr "" + +#: conf/site_settings.py:82 +msgid "Link shown in the greeting message shown to the anonymous user" +msgstr "" + +#: conf/site_settings.py:85 +msgid "" +"If you change this url from the default - then you will also probably want " +"to adjust translation of the following string: " +msgstr "" + +#: conf/site_settings.py:98 +msgid "Feedback site URL" +msgstr "URL site pentru feedback" + +#: conf/site_settings.py:100 +msgid "If left empty, a simple internal feedback form will be used instead" +msgstr "Dacă este lăsat gol, se va folosi un formular intern de feedback" + +#: conf/skin_counter_settings.py:11 +msgid "Skin: view, vote and answer counters" +msgstr "" + +#: conf/skin_counter_settings.py:19 +msgid "Vote counter value to give \"full color\"" +msgstr "" + +#: conf/skin_counter_settings.py:29 +msgid "Background color for votes = 0" +msgstr "" + +#: conf/skin_counter_settings.py:30 conf/skin_counter_settings.py:41 +#: conf/skin_counter_settings.py:52 conf/skin_counter_settings.py:62 +#: conf/skin_counter_settings.py:72 conf/skin_counter_settings.py:85 +#: conf/skin_counter_settings.py:106 conf/skin_counter_settings.py:117 +#: conf/skin_counter_settings.py:128 conf/skin_counter_settings.py:138 +#: conf/skin_counter_settings.py:148 conf/skin_counter_settings.py:163 +#: conf/skin_counter_settings.py:186 conf/skin_counter_settings.py:196 +#: conf/skin_counter_settings.py:206 conf/skin_counter_settings.py:216 +#: conf/skin_counter_settings.py:228 conf/skin_counter_settings.py:239 +#: conf/skin_counter_settings.py:252 conf/skin_counter_settings.py:262 +msgid "HTML color name or hex value" +msgstr "" + +#: conf/skin_counter_settings.py:40 +msgid "Foreground color for votes = 0" +msgstr "" + +#: conf/skin_counter_settings.py:51 +msgid "Background color for votes" +msgstr "" + +#: conf/skin_counter_settings.py:61 +msgid "Foreground color for votes" +msgstr "" + +#: conf/skin_counter_settings.py:71 +msgid "Background color for votes = MAX" +msgstr "" + +#: conf/skin_counter_settings.py:84 +msgid "Foreground color for votes = MAX" +msgstr "" + +#: conf/skin_counter_settings.py:95 +msgid "View counter value to give \"full color\"" +msgstr "" + +#: conf/skin_counter_settings.py:105 +msgid "Background color for views = 0" +msgstr "" + +#: conf/skin_counter_settings.py:116 +msgid "Foreground color for views = 0" +msgstr "" + +#: conf/skin_counter_settings.py:127 +msgid "Background color for views" +msgstr "" + +#: conf/skin_counter_settings.py:137 +msgid "Foreground color for views" +msgstr "" + +#: conf/skin_counter_settings.py:147 +msgid "Background color for views = MAX" +msgstr "" + +#: conf/skin_counter_settings.py:162 +msgid "Foreground color for views = MAX" +msgstr "" + +#: conf/skin_counter_settings.py:173 +msgid "Answer counter value to give \"full color\"" +msgstr "" + +#: conf/skin_counter_settings.py:185 +msgid "Background color for answers = 0" +msgstr "" + +#: conf/skin_counter_settings.py:195 +msgid "Foreground color for answers = 0" +msgstr "" + +#: conf/skin_counter_settings.py:205 +msgid "Background color for answers" +msgstr "" + +#: conf/skin_counter_settings.py:215 +msgid "Foreground color for answers" +msgstr "" + +#: conf/skin_counter_settings.py:227 +msgid "Background color for answers = MAX" +msgstr "" + +#: conf/skin_counter_settings.py:238 +msgid "Foreground color for answers = MAX" +msgstr "" + +#: conf/skin_counter_settings.py:251 +msgid "Background color for accepted" +msgstr "" + +#: conf/skin_counter_settings.py:261 +msgid "Foreground color for accepted answer" +msgstr "" + +#: conf/skin_general_settings.py:14 +msgid "Skin and User Interface settings" +msgstr "" + +#: conf/skin_general_settings.py:21 +msgid "Q&A site logo" +msgstr "" + +#: conf/skin_general_settings.py:23 +msgid "To change the logo, select new file, then submit this whole form." +msgstr "" + +#: conf/skin_general_settings.py:37 +msgid "Show logo" +msgstr "" + +#: conf/skin_general_settings.py:39 +msgid "" +"Check if you want to show logo in the forum header or uncheck in the case " +"you do not want the logo to appear in the default location" +msgstr "" + +#: conf/skin_general_settings.py:51 +msgid "Site favicon" +msgstr "" + +#: conf/skin_general_settings.py:53 +#, python-format +msgid "" +"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the " +"browser user interface. Please find more information about favicon at <a " +"href=\"%(favicon_info_url)s\">this page</a>." +msgstr "" + +#: conf/skin_general_settings.py:70 +msgid "Password login button" +msgstr "" + +#: conf/skin_general_settings.py:72 +msgid "" +"An 88x38 pixel image that is used on the login screen for the password login " +"button." +msgstr "" + +#: conf/skin_general_settings.py:87 +msgid "Show all UI functions to all users" +msgstr "" + +#: conf/skin_general_settings.py:89 +msgid "" +"If checked, all forum functions will be shown to users, regardless of their " +"reputation. However to use those functions, moderation rules, reputation and " +"other limits will still apply." +msgstr "" + +#: conf/skin_general_settings.py:104 +msgid "Select skin" +msgstr "" + +#: conf/skin_general_settings.py:113 +msgid "Skin media revision number" +msgstr "" + +#: conf/skin_general_settings.py:115 +msgid "" +"Increment this number when you change image in skin media or stylesheet. " +"This helps avoid showing your users outdated images from their browser cache." +msgstr "" + +#: conf/skin_general_settings.py:128 +msgid "Customize HTML <HEAD>" +msgstr "" + +#: conf/skin_general_settings.py:137 +msgid "Custom portion of the HTML <HEAD>" +msgstr "" + +#: conf/skin_general_settings.py:139 +msgid "" +"<strong>To use this option</strong>, check \"Customize HTML <HEAD>\" " +"above. Contents of this box will be inserted into the <HEAD> portion " +"of the HTML output, where elements such as <script>, <link>, " +"<meta> may be added. Please, keep in mind that adding external " +"javascript to the <HEAD> is not recommended because it slows loading " +"of the pages. Instead, it will be more efficient to place links to the " +"javascript files into the footer. <strong>Note:</strong> if you do use this " +"setting, please test the site with the W3C HTML validator service." +msgstr "" + +#: conf/skin_general_settings.py:159 +msgid "Site footer mode" +msgstr "" + +#: conf/skin_general_settings.py:161 +msgid "" +"Footer is the bottom portion of the content, which is common to all pages. " +"You can disable, customize, or use the default footer." +msgstr "" + +#: conf/skin_general_settings.py:178 +msgid "Custom footer (HTML format)" +msgstr "" + +#: conf/skin_general_settings.py:180 +msgid "" +"<strong>To enable this function</strong>, please select option 'customize' " +"in the \"Site footer mode\" above. Use this area to enter contents of the " +"footer in the HTML format. When customizing the site footer (as well as the " +"HTML <HEAD>), use the HTML validation service to make sure that your " +"input is valid and works well in all browsers." +msgstr "" + +#: conf/skin_general_settings.py:195 +msgid "Apply custom style sheet (CSS)" +msgstr "" + +#: conf/skin_general_settings.py:197 +msgid "" +"Check if you want to change appearance of your form by adding custom style " +"sheet rules (please see the next item)" +msgstr "" + +#: conf/skin_general_settings.py:209 +msgid "Custom style sheet (CSS)" +msgstr "" + +#: conf/skin_general_settings.py:211 +msgid "" +"<strong>To use this function</strong>, check \"Apply custom style sheet\" " +"option above. The CSS rules added in this window will be applied after the " +"default style sheet rules. The custom style sheet will be served dynamically " +"at url \"<forum url>/custom.css\", where the \"<forum url> part " +"depends (default is empty string) on the url configuration in your urls.py." +msgstr "" + +#: conf/skin_general_settings.py:227 +msgid "Add custom javascript" +msgstr "" + +#: conf/skin_general_settings.py:230 +msgid "Check to enable javascript that you can enter in the next field" +msgstr "" + +#: conf/skin_general_settings.py:240 +msgid "Custom javascript" +msgstr "" + +#: conf/skin_general_settings.py:242 +msgid "" +"Type or paste plain javascript that you would like to run on your site. Link " +"to the script will be inserted at the bottom of the HTML output and will be " +"served at the url \"<forum url>/custom.js\". Please, bear in mind that " +"your javascript code may break other functionalities of the site and that " +"the behavior may not be consistent across different browsers (<strong>to " +"enable your custom code</strong>, check \"Add custom javascript\" option " +"above)." +msgstr "" + +#: conf/social_sharing.py:10 +msgid "Sharing content on social networks" +msgstr "" + +#: conf/social_sharing.py:18 +msgid "Check to enable sharing of questions on Twitter and Facebook" +msgstr "" + +#: conf/user_settings.py:10 +msgid "User policy settings" +msgstr "" + +#: conf/user_settings.py:18 +msgid "Allow editing user screen name" +msgstr "" + +#: conf/user_settings.py:28 +msgid "Minimum allowed length for screen name" +msgstr "" + +#: conf/user_settings.py:37 +msgid "Name for the Anonymous user" +msgstr "" + +#: conf/vote_rules.py:13 +msgid "Limits applicable to votes and moderation flags" +msgstr "" + +#: conf/vote_rules.py:22 +msgid "Number of votes a user can cast per day" +msgstr "" + +#: conf/vote_rules.py:31 +msgid "Maximum number of flags per user per day" +msgstr "" + +#: conf/vote_rules.py:40 +msgid "Threshold for warning about remaining daily votes" +msgstr "" + +#: conf/vote_rules.py:49 +msgid "Number of days to allow canceling votes" +msgstr "" + +#: conf/vote_rules.py:58 +msgid "Number of flags required to automatically hide posts" +msgstr "" + +#: conf/vote_rules.py:67 +msgid "Number of flags required to automatically delete posts" +msgstr "" + +#: const/__init__.py:9 +msgid "duplicate question" +msgstr "întrebare duplicat" + +#: const/__init__.py:10 +msgid "question is off-topic or not relevant" +msgstr "întrebarea este off-topic sau nu este relevantă" + +#: const/__init__.py:11 +msgid "too subjective and argumentative" +msgstr "prea subiectivă și argumentativă" + +#: const/__init__.py:12 +msgid "not a real question" +msgstr "nu este de fapt o întrebare" + +#: const/__init__.py:13 +msgid "the question is answered, right answer was accepted" +msgstr "întrebarea a căpătat un răspuns, răspunsul a fost acceptat" + +#: const/__init__.py:14 +msgid "question is not relevant or outdated" +msgstr "întrebarea nu este relevantă sau este veche" + +#: const/__init__.py:15 +msgid "question contains offensive or malicious remarks" +msgstr "întrebarea conține remarci ofensatoare sau răutăcioase" + +#: const/__init__.py:16 +msgid "spam or advertising" +msgstr "spam sau reclamă" + +#: const/__init__.py:17 +msgid "too localized" +msgstr "prea localizată" + +#: const/__init__.py:40 +msgid "newest" +msgstr "cele mai noi" + +#: const/__init__.py:41 skins/default/templates/users.html:25 +#: skins/default/templates/users.html:26 +msgid "oldest" +msgstr "mai vechi" + +#: const/__init__.py:42 +msgid "active" +msgstr "activ" + +#: const/__init__.py:43 +msgid "inactive" +msgstr "inactiv" + +#: const/__init__.py:44 +msgid "hottest" +msgstr "cele mai interesante" + +#: const/__init__.py:45 +msgid "coldest" +msgstr "mai reci" + +#: const/__init__.py:46 +msgid "most voted" +msgstr "cele mai votate" + +#: const/__init__.py:47 +msgid "least voted" +msgstr "cele mai puțin votate" + +#: const/__init__.py:48 skins/default/templates/main_page/tab_bar.html:29 +msgid "relevance" +msgstr "relevanță" + +#: const/__init__.py:55 skins/default/templates/main_page/tab_bar.html:10 +#: skins/default/templates/user_profile/user_inbox.html:50 +msgid "all" +msgstr "toate" + +#: const/__init__.py:56 skins/default/templates/main_page/tab_bar.html:15 +msgid "unanswered" +msgstr "fără răspuns" + +#: const/__init__.py:57 skins/default/templates/main_page/tab_bar.html:21 +msgid "favorite" +msgstr "favorite" + +#: const/__init__.py:71 +msgid "Question has no answers" +msgstr "Întrebarea nu are răspuns" + +#: const/__init__.py:72 +msgid "Question has no accepted answers" +msgstr "Întrebarea nu are un răspuns acceptat" + +#: const/__init__.py:112 +msgid "asked a question" +msgstr "a pus o întrebare" + +#: const/__init__.py:113 +msgid "answered a question" +msgstr "a răspuns unei întrebări" + +#: const/__init__.py:114 +msgid "commented question" +msgstr "întrebare comentată" + +#: const/__init__.py:115 +msgid "commented answer" +msgstr "răspuns comentat" + +#: const/__init__.py:116 +msgid "edited question" +msgstr "întrebare editată" + +#: const/__init__.py:117 +msgid "edited answer" +msgstr "răspuns editat" + +#: const/__init__.py:118 +msgid "received award" +msgstr "recompensă primită" + +#: const/__init__.py:119 +msgid "marked best answer" +msgstr "marcat ca cel mai bun răspuns" + +#: const/__init__.py:120 +msgid "upvoted" +msgstr "votat pozitiv" + +#: const/__init__.py:121 +msgid "downvoted" +msgstr "votat negativ" + +#: const/__init__.py:122 +msgid "canceled vote" +msgstr "vot anulat" + +#: const/__init__.py:123 +msgid "deleted question" +msgstr "întrebare ștearsă" + +#: const/__init__.py:124 +msgid "deleted answer" +msgstr "răspuns șters" + +#: const/__init__.py:125 +msgid "marked offensive" +msgstr "marcat ca ofensator" + +#: const/__init__.py:126 +msgid "updated tags" +msgstr "etichete actualizate" + +#: const/__init__.py:127 +msgid "selected favorite" +msgstr "" + +#: const/__init__.py:128 +msgid "completed user profile" +msgstr "profil utilizator complet" + +#: const/__init__.py:129 +msgid "email update sent to user" +msgstr "e-mail actualizat trimis utilizatorului" + +#: const/__init__.py:130 +msgid "mentioned in the post" +msgstr "menționat în postare" + +#: const/__init__.py:181 +msgid "question_answered" +msgstr "întrebare_cu_răspuns" + +#: const/__init__.py:182 +msgid "question_commented" +msgstr "întrebare_comentată" + +#: const/__init__.py:183 +msgid "answer_commented" +msgstr "răspuns_comentat" + +#: const/__init__.py:184 +msgid "answer_accepted" +msgstr "răspuns_acceptat" + +#: const/__init__.py:188 +msgid "[closed]" +msgstr "[închis]" + +#: const/__init__.py:189 +msgid "[deleted]" +msgstr "[șters]" + +#: const/__init__.py:190 views/readers.py:578 +msgid "initial version" +msgstr "versiune inițială" + +#: const/__init__.py:191 +msgid "retagged" +msgstr "reetichetat" + +#: const/__init__.py:199 +msgid "off" +msgstr "dezactivat" + +#: const/__init__.py:200 +msgid "exclude ignored" +msgstr "exclude cele ignorate" + +#: const/__init__.py:201 +msgid "only selected" +msgstr "doar cele selectate" + +#: const/__init__.py:205 +msgid "instantly" +msgstr "instant" + +#: const/__init__.py:206 +msgid "daily" +msgstr "zilnic" + +#: const/__init__.py:207 +msgid "weekly" +msgstr "săptămânal" + +#: const/__init__.py:208 +msgid "no email" +msgstr "fără e-mail" + +#: const/__init__.py:245 skins/default/templates/badges.html:37 +msgid "gold" +msgstr "aur" + +#: const/__init__.py:246 skins/default/templates/badges.html:46 +msgid "silver" +msgstr "argint" + +#: const/__init__.py:247 skins/default/templates/badges.html:53 +msgid "bronze" +msgstr "bronz" + +#: const/message_keys.py:19 +#, python-format +msgid "First time here? Check out the <a href=\"%s\">FAQ</a>!" +msgstr "" +"Prima dată aici? Consultați <a href=\"%s\">Întrebările frecvente</a>!" + +#: const/message_keys.py:22 skins/default/templates/main_page/tab_bar.html:27 +msgid "most relevant questions" +msgstr "cele mai relevante întrebări" + +#: const/message_keys.py:23 skins/default/templates/main_page/tab_bar.html:28 +msgid "click to see most relevant questions" +msgstr "efectuați clic pentru a vedea cele mai relevante întrebări" + +#: const/message_keys.py:24 +msgid "by relevance" +msgstr "după relevanță" + +#: const/message_keys.py:25 +msgid "click to see the oldest questions" +msgstr "clic pentru a vedea cele mai vechi întrebări" + +#: const/message_keys.py:26 +msgid "by date" +msgstr "după dată" + +#: const/message_keys.py:27 +msgid "click to see the newest questions" +msgstr "efectuați clic pentru a vedea cele mai noi întrebări" + +#: const/message_keys.py:28 +msgid "click to see the least recently updated questions" +msgstr "clic pentru a vedea cel mai puțin recent actualizate întrebări" + +#: const/message_keys.py:29 +msgid "by activity" +msgstr "după activitate" + +#: const/message_keys.py:30 +msgid "click to see the most recently updated questions" +msgstr "clic pentru a vedea cele mai recent actualizate întrebări" + +#: const/message_keys.py:31 +msgid "click to see the least answered questions" +msgstr "" +"efectuați clic pentru a vedea întrebările cu cele mai puține răspunsuri" + +#: const/message_keys.py:32 +msgid "by answers" +msgstr "după răspunsuri" + +#: const/message_keys.py:33 +msgid "click to see the most answered questions" +msgstr "" +"efectuați clic pentru a vedea întrebările cu cele mai multe răspunsuri" + +#: const/message_keys.py:34 +msgid "click to see least voted questions" +msgstr "efectuați clic pentru a vedea întrebările cu cele mai puține voturi" + +#: const/message_keys.py:35 +msgid "by votes" +msgstr "după voturi" + +#: const/message_keys.py:36 +msgid "click to see most voted questions" +msgstr "efectuați clic pentru a vedea întrebările cu cele mai multe voturi" + +#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:134 +msgid "i-names are not supported" +msgstr "" + +#: deps/django_authopenid/forms.py:231 +#, python-format +msgid "Please enter your %(username_token)s" +msgstr "Introduceți %(username_token)s" + +#: deps/django_authopenid/forms.py:257 +msgid "Please, enter your user name" +msgstr "Introduceți numele de utilizator" + +#: deps/django_authopenid/forms.py:261 +msgid "Please, enter your password" +msgstr "Introduceți parola" + +#: deps/django_authopenid/forms.py:268 deps/django_authopenid/forms.py:272 +msgid "Please, enter your new password" +msgstr "Introduceți noua parolă" + +#: deps/django_authopenid/forms.py:283 +msgid "Passwords did not match" +msgstr "Parolele nu se potrivesc" + +#: deps/django_authopenid/forms.py:295 +#, python-format +msgid "Please choose password > %(len)s characters" +msgstr "Alegeți o parolă mai mare decât %(len)s caractere" + +#: deps/django_authopenid/forms.py:330 +msgid "Current password" +msgstr "Parolă curentă" + +#: deps/django_authopenid/forms.py:341 +msgid "" +"Old password is incorrect. Please enter the correct " +"password." +msgstr "Parola veche nu este corectă. Introduceți o parolă corectă." + +#: deps/django_authopenid/forms.py:394 +msgid "Sorry, we don't have this email address in the database" +msgstr "Această adreasă de e-mail nu se regăsește în baza noastră de date" + +#: deps/django_authopenid/forms.py:430 +msgid "Your user name (<i>required</i>)" +msgstr "Numele de utilizator este (<i>obligatoriu</i>)" + +#: deps/django_authopenid/forms.py:445 +msgid "Incorrect username." +msgstr "Nume de utilizator incorect" + +#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:10 +#: deps/django_authopenid/urls.py:11 deps/django_authopenid/urls.py:14 +#: deps/django_authopenid/urls.py:17 setup_templates/settings.py:188 +msgid "signin/" +msgstr "autentificare/" + +#: deps/django_authopenid/urls.py:10 +msgid "newquestion/" +msgstr "" + +#: deps/django_authopenid/urls.py:11 +msgid "newanswer/" +msgstr "" + +#: deps/django_authopenid/urls.py:12 +msgid "signout/" +msgstr "" + +#: deps/django_authopenid/urls.py:14 +msgid "complete/" +msgstr "" + +#: deps/django_authopenid/urls.py:17 +msgid "complete-oauth/" +msgstr "" + +#: deps/django_authopenid/urls.py:21 +msgid "register/" +msgstr "" + +#: deps/django_authopenid/urls.py:23 +msgid "signup/" +msgstr "" + +#: deps/django_authopenid/urls.py:31 +msgid "recover/" +msgstr "" + +#: deps/django_authopenid/util.py:193 +#, python-format +msgid "%(site)s user name and password" +msgstr "" + +#: deps/django_authopenid/util.py:199 +#: skins/default/templates/authopenid/signin.html:99 +msgid "Create a password-protected account" +msgstr "Creați un cont protejat prin parolă" + +#: deps/django_authopenid/util.py:200 +msgid "Change your password" +msgstr "Schimbați parola" + +#: deps/django_authopenid/util.py:262 +msgid "Sign in with Yahoo" +msgstr "Autentificare cu Yahoo" + +#: deps/django_authopenid/util.py:269 +msgid "AOL screen name" +msgstr "nume utilizator AOL" + +#: deps/django_authopenid/util.py:277 +msgid "OpenID url" +msgstr "URL OpenID" + +#: deps/django_authopenid/util.py:294 +msgid "MyOpenid user name" +msgstr "nume utilizator MyOpenid" + +#: deps/django_authopenid/util.py:302 +msgid "Flickr user name" +msgstr "nume utilizator Flickr" + +#: deps/django_authopenid/util.py:310 +msgid "Technorati user name" +msgstr "nume utilizator Technorati" + +#: deps/django_authopenid/util.py:318 +msgid "WordPress blog name" +msgstr "nume blog WordPress" + +#: deps/django_authopenid/util.py:326 +msgid "Blogger blog name" +msgstr "nume blog Blogger" + +#: deps/django_authopenid/util.py:334 +msgid "LiveJournal blog name" +msgstr "nume blog LiveJournal" + +#: deps/django_authopenid/util.py:342 +msgid "ClaimID user name" +msgstr "nume utilizator ClaimID" + +#: deps/django_authopenid/util.py:350 +msgid "Vidoop user name" +msgstr "nume utilizator Vidoop" + +#: deps/django_authopenid/util.py:358 +msgid "Verisign user name" +msgstr "nume utilizator Verisign" + +#: deps/django_authopenid/util.py:382 +#, python-format +msgid "Change your %(provider)s password" +msgstr "Modificați parola pentru %(provider)s" + +#: deps/django_authopenid/util.py:386 +#, python-format +msgid "" +"Click to see if your %(provider)s signin still works for %(site_name)s" +msgstr "" +"Efectuați clic pentru a verifica dacă autentificarea pentru %(provider)s " +"încă funcționează pe %(site_name)s" + +#: deps/django_authopenid/util.py:395 +#, python-format +msgid "Create password for %(provider)s" +msgstr "Creați parolă pentru %(provider)s" + +#: deps/django_authopenid/util.py:399 +#, python-format +msgid "Connect your %(provider)s account to %(site_name)s" +msgstr "Conectați contul %(provider)s la %(site_name)s" + +#: deps/django_authopenid/util.py:408 +#, python-format +msgid "Signin with %(provider)s user name and password" +msgstr "Autentificați-vă cu numele de utilizator și parola %(provider)s" + +#: deps/django_authopenid/util.py:415 +#, python-format +msgid "Sign in with your %(provider)s account" +msgstr "Autentificați-vă cu contul de %(provider)s" + +#: deps/django_authopenid/views.py:141 +#, python-format +msgid "OpenID %(openid_url)s is invalid" +msgstr "Legătura OpenID %(openid_url)s este nevalidă" + +#: deps/django_authopenid/views.py:253 deps/django_authopenid/views.py:395 +#: deps/django_authopenid/views.py:423 +#, python-format +msgid "" +"Unfortunately, there was some problem when connecting to %(provider)s, " +"please try again or use another provider" +msgstr "" +"Din păcate există o problemă la conectarea la %(provider)s, reîncercați sau " +"utilizați un alt furnizor" + +#: deps/django_authopenid/views.py:345 +msgid "Your new password saved" +msgstr "Noua parolă a fost salvată" + +#: deps/django_authopenid/views.py:507 +msgid "Please click any of the icons below to sign in" +msgstr "" +"Pentru a vă autentifica efectuați clic pe oricare din iconițele de mai jos" + +#: deps/django_authopenid/views.py:509 +msgid "Account recovery email sent" +msgstr "E-mail-ul pentru recuperarea contului a fost trimis" + +#: deps/django_authopenid/views.py:512 +msgid "Please add one or more login methods." +msgstr "Adăugați una sau mai multe metode de autentificare" + +#: deps/django_authopenid/views.py:514 +msgid "If you wish, please add, remove or re-validate your login methods" +msgstr "" +"Dacă doriți, adăugați, ștergeți sau revalidați metodele de autentificare" + +#: deps/django_authopenid/views.py:516 +msgid "Please wait a second! Your account is recovered, but ..." +msgstr "Așteptați puțin! Contul dumneavoastră este recuperat, dar..." + +#: deps/django_authopenid/views.py:518 +msgid "Sorry, this account recovery key has expired or is invalid" +msgstr "" +"Ne pare rău, cheia pentru recuperarea contului a expirat sau nu mai este " +"validă" + +#: deps/django_authopenid/views.py:574 +#, python-format +msgid "Login method %(provider_name)s does not exist" +msgstr "Metoda de autentificare pentru %(provider_name)s nu există" + +#: deps/django_authopenid/views.py:580 +msgid "Oops, sorry - there was some error - please try again" +msgstr "Oauu, scuze - a apărut o eroare - încercați mai târziu" + +#: deps/django_authopenid/views.py:671 +#, python-format +msgid "Your %(provider)s login works fine" +msgstr "Autentificarea pentru %(provider)s este funcțională" + +#: deps/django_authopenid/views.py:978 deps/django_authopenid/views.py:984 +#, python-format +msgid "your email needs to be validated see %(details_url)s" +msgstr "" +"adresa dumneavoastră de e-mail trebuie validată, consultați %(details_url)s" + +#: deps/django_authopenid/views.py:1005 +#, python-format +msgid "Recover your %(site)s account" +msgstr "Recuperați contul %(site)s" + +#: deps/django_authopenid/views.py:1070 +msgid "Please check your email and visit the enclosed link." +msgstr "Verificați-vă e-mail-ul și mergeți la legătura inclusă" + +#: deps/livesettings/models.py:101 deps/livesettings/models.py:140 +msgid "Site" +msgstr "Pagină web" + +#: deps/livesettings/values.py:106 +msgid "Base Settings" +msgstr "Configurări de bază" + +#: deps/livesettings/values.py:213 +msgid "Default value: \"\"" +msgstr "Valoare implicită: \"\"" + +#: deps/livesettings/values.py:220 +msgid "Default value: " +msgstr "Valoare implicită: " + +#: deps/livesettings/values.py:223 +#, python-format +msgid "Default value: %s" +msgstr "Valoare implicită: %s" + +#: deps/livesettings/values.py:588 +#, python-format +msgid "Allowed image file types are %(types)s" +msgstr "Tipurile de fișiere imagine permise sunt %(types)s" + +#: deps/livesettings/templates/livesettings/_admin_site_views.html:4 +msgid "Sites" +msgstr "Pagini web" + +#: deps/livesettings/templates/livesettings/group_settings.html:11 +#: deps/livesettings/templates/livesettings/site_settings.html:23 +msgid "Documentation" +msgstr "Documentație" + +#: deps/livesettings/templates/livesettings/group_settings.html:11 +#: deps/livesettings/templates/livesettings/site_settings.html:23 +#: skins/default/templates/authopenid/signin.html:117 +msgid "Change password" +msgstr "Schimbă parola" + +#: deps/livesettings/templates/livesettings/group_settings.html:11 +#: deps/livesettings/templates/livesettings/site_settings.html:23 +msgid "Log out" +msgstr "Ieșire" + +#: deps/livesettings/templates/livesettings/group_settings.html:14 +#: deps/livesettings/templates/livesettings/site_settings.html:26 +msgid "Home" +msgstr "Acasă" + +#: deps/livesettings/templates/livesettings/group_settings.html:15 +msgid "Edit Group Settings" +msgstr "Editare configurări de grup" + +#: deps/livesettings/templates/livesettings/group_settings.html:22 +#: deps/livesettings/templates/livesettings/site_settings.html:50 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Corectați eroarea de mai jos" +msgstr[1] "Corectați erorile de mai jos" +msgstr[2] "Corectați erorile de mai jos" + +#: deps/livesettings/templates/livesettings/group_settings.html:28 +#, python-format +msgid "Settings included in %(name)s." +msgstr "Configurări incluse în %(name)s." + +#: deps/livesettings/templates/livesettings/group_settings.html:62 +#: deps/livesettings/templates/livesettings/site_settings.html:97 +msgid "You don't have permission to edit values." +msgstr "Nu aveți permisiunea de a edita valorile" + +#: deps/livesettings/templates/livesettings/group_settings.html:68 +msgid "Setting groups" +msgstr "Configurare grup" + +#: deps/livesettings/templates/livesettings/site_settings.html:27 +msgid "Edit Site Settings" +msgstr "Editați configurările site-ului" + +#: deps/livesettings/templates/livesettings/site_settings.html:43 +msgid "Livesettings are disabled for this site." +msgstr "Configurările live sunt dezactivate pentru acest site" + +#: deps/livesettings/templates/livesettings/site_settings.html:44 +msgid "All configuration options must be edited in the site settings.py file" +msgstr "" +"Toate opțiunile de configurare trebuie editate în fișierul site-ului " +"settings.py" + +#: deps/livesettings/templates/livesettings/site_settings.html:66 +#, python-format +msgid "Group settings: %(name)s" +msgstr "Configurări grup: %(name)s" + +#: deps/livesettings/templates/livesettings/site_settings.html:93 +msgid "Uncollapse all" +msgstr "Restrânge tot" + +#: deps/recaptcha_django/__init__.py:19 deps/recaptcha_django/__init__.py:80 +msgid "Unknown error." +msgstr "Eroare necunoscută." + +#: deps/recaptcha_django/__init__.py:20 deps/recaptcha_django/__init__.py:21 +msgid "ReCAPTCHA is wrongly configured." +msgstr "ReCAPTCHA este configurat greșit." + +#: deps/recaptcha_django/__init__.py:22 +msgid "Bad reCAPTCHA challenge parameter." +msgstr "Parametru șir reCAPTCHA eronat." + +#: deps/recaptcha_django/__init__.py:23 +msgid "The CAPTCHA solution was incorrect." +msgstr "Soluția CAPTCHA a fost incorectă." + +#: deps/recaptcha_django/__init__.py:24 +msgid "Bad reCAPTCHA verification parameters." +msgstr "Parametri verificare reCAPTCHA eronați." + +#: deps/recaptcha_django/__init__.py:25 +msgid "Provided reCAPTCHA API keys are not valid for this domain." +msgstr "Cheile reCAPTCHA API furnizate nu sunt valide pentru acest domeniu." + +#: deps/recaptcha_django/__init__.py:26 +msgid "ReCAPTCHA could not be reached." +msgstr "ReCAPTCHA nu poate fi lansat." + +#: deps/recaptcha_django/__init__.py:73 +msgid "Invalid request" +msgstr "Cerere nevalidă" + +#: importers/stackexchange/management/commands/load_stackexchange.py:128 +msgid "Congratulations, you are now an Administrator" +msgstr "Felicitări, de acum sunteți un administrator" + +#: management/commands/send_email_alerts.py:103 +#, python-format +msgid "\" and \"%s\"" +msgstr "\" și \"%s\"" + +#: management/commands/send_email_alerts.py:106 +msgid "\" and more" +msgstr "\" și în plus" + +#: management/commands/send_email_alerts.py:111 +#, python-format +msgid "%(question_count)d updated question about %(topics)s" +msgid_plural "%(question_count)d updated questions about %(topics)s" +msgstr[0] "%(question_count)d întrebare actualizată despre %(topics)s" +msgstr[1] "%(question_count)d întrebări actualizate despre %(topics)s" +msgstr[2] "%(question_count)d de întrebări actualizate despre %(topics)s" + +#: management/commands/send_email_alerts.py:484 +#, python-format +msgid "%(name)s, this is an update message header for %(num)d question" +msgid_plural "" +"%(name)s, this is an update message header for %(num)d questions" +msgstr[0] "" +"%(name)s, acesta este un antet de mesaj actualizat pentru %(num)d întrebare" +msgstr[1] "" +"%(name)s, acesta este un antet de mesaj actualizat pentru %(num)d întrebări" +msgstr[2] "" +"%(name)s, acesta este un antet de mesaj actualizat pentru %(num)d de " +"întrebări" + +#: management/commands/send_email_alerts.py:501 +msgid "new question" +msgstr "întrebare nouă" + +#: management/commands/send_email_alerts.py:518 +msgid "" +"Please visit the askbot and see what's new! Could you spread the word about " +"it - can somebody you know help answering those questions or benefit from " +"posting one?" +msgstr "" +"Vizitați pagina askbot pentru a afla noutățile! Puteți duce vestea mai " +"departe - poate că cineva cunoscut are răspunsuri pentru aceste întrebări " +"sau dorește să posteze o întrebare." + +#: management/commands/send_email_alerts.py:530 +msgid "" +"Your most frequent subscription setting is 'daily' on selected questions. If " +"you are receiving more than one email per dayplease tell about this issue to " +"the askbot administrator." +msgstr "" +"Frecvența aleasă de dumneavoastră pentru a primi întrebările selectate este " +"„zilnic”. Dacă primiți mai mult de un e-mail pe zi, adresați-vă " +"administratorului paginii askbot pentru a raporta problema." + +#: management/commands/send_email_alerts.py:536 +msgid "" +"Your most frequent subscription setting is 'weekly' if you are receiving " +"this email more than once a week please report this issue to the askbot " +"administrator." +msgstr "" +"Frecvența aleasă de dumneavoastră pentru a primi întrebările selectate este " +"„săptămânal”. Dacă primiți mai mult de un e-mail pe săptămână, adresați-vă " +"administratorului paginii askbot pentru a raporta problema." + +#: management/commands/send_email_alerts.py:542 +msgid "" +"There is a chance that you may be receiving links seen before - due to a " +"technicality that will eventually go away. " +msgstr "" +"Există posibilitatea unele legături pe care le-ați primit deja să vă fie din " +"nou trimise - cauza este de natură tehnică și va fi remediată. " + +#: management/commands/send_email_alerts.py:548 +#, python-format +msgid "" +"go to %(email_settings_link)s to change frequency of email updates or " +"%(admin_email)s administrator" +msgstr "" +"mergeți la %(email_settings_link)s pentru a modifica frecvența e-mail-urilor " +"cu actualizări sau %(admin_email)s de administrare" + +#: models/__init__.py:299 +msgid "" +"Sorry, you cannot accept or unaccept best answers because your account is " +"blocked" +msgstr "" +"Nu puteți accepta sau refuza cele mai bune răspunsuri deoarece contul " +"dumneavoastră este blocat" + +#: models/__init__.py:304 +msgid "" +"Sorry, you cannot accept or unaccept best answers because your account is " +"suspended" +msgstr "" +"Nu puteți accepta sau refuza cele mai bune răspunsuri deoarece contul " +"dumneavoastră este suspendat" + +#: models/__init__.py:310 +msgid "" +"Sorry, you cannot accept or unaccept your own answer to your own question" +msgstr "" +"Nu se poate accepta sau revoca acceptarea pentru propriul răspuns la propria " +"întrebare" + +#: models/__init__.py:317 +#, python-format +msgid "" +"Sorry, only original author of the question - %(username)s - can accept the " +"best answer" +msgstr "" +"Numai autorul original al întrebării - %(username)s - poate accepta cel mai " +"bun răspuns" + +#: models/__init__.py:340 +msgid "cannot vote for own posts" +msgstr "nu se pot vota mesajele proprii" + +#: models/__init__.py:343 +msgid "Sorry your account appears to be blocked " +msgstr "Contul dumneavoastră pare a fi blocat " + +#: models/__init__.py:348 +msgid "Sorry your account appears to be suspended " +msgstr "Contul dumneavoastră pare a fi suspendat " + +#: models/__init__.py:358 +#, python-format +msgid ">%(points)s points required to upvote" +msgstr "Sunt necesare >%(points)s puncte pentru a vota pozitiv" + +#: models/__init__.py:364 +#, python-format +msgid ">%(points)s points required to downvote" +msgstr "sunt necesare %(points)s puncte pentru a dezaprova" + +#: models/__init__.py:379 +msgid "Sorry, blocked users cannot upload files" +msgstr "Utilizatorii blocați nu pot încărca fișiere" + +#: models/__init__.py:380 +msgid "Sorry, suspended users cannot upload files" +msgstr "Utilizatorii suspendați nu pot încărca fișiere" + +#: models/__init__.py:382 +#, python-format +msgid "" +"uploading images is limited to users with >%(min_rep)s reputation points" +msgstr "" +"încărcarea de imagini este limitată utilizatorilor cu mai mult de " +"%(min_rep)s puncte de reputație" + +#: models/__init__.py:401 models/__init__.py:468 models/__init__.py:2320 +msgid "blocked users cannot post" +msgstr "utilizatorii blocați nu pot introduce postări" + +#: models/__init__.py:402 models/__init__.py:2323 +msgid "suspended users cannot post" +msgstr "utilizatorii suspendați nu pot introduce postări" + +#: models/__init__.py:429 +#, python-format +msgid "" +"Sorry, comments (except the last one) are editable only within %(minutes)s " +"minute from posting" +msgid_plural "" +"Sorry, comments (except the last one) are editable only within %(minutes)s " +"minutes from posting" +msgstr[0] "" +"Comentariile (cu excepția ultimului) pot fi modificate numai într-un " +"interval de %(minutes)s minut de la postare" +msgstr[1] "" +"Comentariile (cu excepția ultimului) pot fi modificate numai într-un " +"interval de %(minutes)s minute de la postare" +msgstr[2] "" +"Comentariile (cu excepția ultimului) pot fi modificate numai într-un " +"interval de %(minutes)s de minute de la postare" + +#: models/__init__.py:441 +msgid "Sorry, but only post owners or moderators can edit comments" +msgstr "" +"Doar cel care a adăugat mesajul și moderatorii pot modifica comentariile" + +#: models/__init__.py:454 +msgid "" +"Sorry, since your account is suspended you can comment only your own posts" +msgstr "" +"Deoarece contul dumneavoastră este suspendat, puteți comenta numai postările " +"proprii" + +#: models/__init__.py:458 +#, python-format +msgid "" +"Sorry, to comment any post a minimum reputation of %(min_rep)s points is " +"required. You can still comment your own posts and answers to your questions" +msgstr "" +"Ne pare rău, pentru a comenta la un mesaj este necesar un minim de " +"%(min_rep)s puncte de reputație. Puteți în continuare să comentați mesajele " +"și răspunsurile pentru întrebările proprii" + +#: models/__init__.py:486 +msgid "" +"This post has been deleted and can be seen only by post owners, site " +"administrators and moderators" +msgstr "" +"Această postare a fost ștearsă și poate fi văzută numai de către " +"proprietari, administratorii site-ului și moderatori" + +#: models/__init__.py:503 +msgid "" +"Sorry, only moderators, site administrators and post owners can edit deleted " +"posts" +msgstr "" +"Numai moderatorii, administratorii site-ului și proprietarii postării pot " +"modifica postările șterse" + +#: models/__init__.py:518 +msgid "Sorry, since your account is blocked you cannot edit posts" +msgstr "" +"Deoarece contul dumneavoastră este blocat, nu puteți modifica postările" + +#: models/__init__.py:522 +msgid "" +"Sorry, since your account is suspended you can edit only your own posts" +msgstr "" +"Deoarece contul dumneavoastră este suspendat, puteți modifica numai " +"postările proprii" + +#: models/__init__.py:527 +#, python-format +msgid "" +"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required" +msgstr "" +"Pentru a modifica wiki-ul, este necesar un minim de %(min_rep)s puncte de " +"reputație" + +#: models/__init__.py:534 +#, python-format +msgid "" +"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is " +"required" +msgstr "" +"Ne pare rău, pentru a modifica mesajele altor utilizatori este nevoie de un " +"minim de %(min_rep)s puncte de reputație" + +#: models/__init__.py:597 +msgid "" +"Sorry, cannot delete your question since it has an upvoted answer posted by " +"someone else" +msgid_plural "" +"Sorry, cannot delete your question since it has some upvoted answers posted " +"by other users" +msgstr[0] "" +"Nu puteți șterge întrebarea deoarece beneficiază de un răspuns votat pozitiv " +"de altcineva." +msgstr[1] "" +"Nu puteți șterge întrebarea deoarece beneficiază de răspunsuri votate " +"pozitiv de alți utilizatori." +msgstr[2] "" +"Nu puteți șterge întrebarea deoarece beneficiază de răspunsuri votate " +"pozitiv de alți utilizatori." + +#: models/__init__.py:612 +msgid "Sorry, since your account is blocked you cannot delete posts" +msgstr "Deoarece contul dumneavoastră este blocat, nu puteți șterge postări" + +#: models/__init__.py:616 +msgid "" +"Sorry, since your account is suspended you can delete only your own posts" +msgstr "" +"Deoarece contul dumneavoastră este suspendat, puteți șterge numai postările " +"proprii" + +#: models/__init__.py:620 +#, python-format +msgid "" +"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s " +"is required" +msgstr "" +"Ne pare rău, pentru a șterge mesajele altor utilizatori este nevoie de un " +"minim de %(min_rep)s puncte de reputație" + +#: models/__init__.py:640 +msgid "Sorry, since your account is blocked you cannot close questions" +msgstr "" +"Deoarece contul dumneavoastră este blocat, nu puteți închide întrebări" + +#: models/__init__.py:644 +msgid "Sorry, since your account is suspended you cannot close questions" +msgstr "" +"Deoarece contul dumneavoastră este suspendat, nu puteți închide întrebări" + +#: models/__init__.py:648 +#, python-format +msgid "" +"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is " +"required" +msgstr "" +"Ne pare rău, pentru a închide mesajele altor utilizatori este nevoie de un " +"minim de %(min_rep)s puncte de reputație" + +#: models/__init__.py:657 +#, python-format +msgid "" +"Sorry, to close own question a minimum reputation of %(min_rep)s is required" +msgstr "" +"Ne pare rău, pentru a închide propria întrebare este nevoie de un minim de " +"%(min_rep)s puncte de reputație" + +#: models/__init__.py:681 +#, python-format +msgid "" +"Sorry, only administrators, moderators or post owners with reputation > " +"%(min_rep)s can reopen questions." +msgstr "" +"Ne pare rău, doar administratorii, moderatorii și proprietarii mesajelor cu " +"o reputație de minim %(min_rep)s puncte de reputație pot redeschide " +"întrebări." + +#: models/__init__.py:687 +#, python-format +msgid "" +"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required" +msgstr "" +"Ne pare rău, pentru a redesche propria întrebare este nevoie de un minim de " +"%(min_rep)s puncte de reputație" + +#: models/__init__.py:707 +msgid "cannot flag message as offensive twice" +msgstr "nu se poate marca ofensiv de mai multe ori" + +#: models/__init__.py:712 +msgid "blocked users cannot flag posts" +msgstr "utilizatorii blocați nu pot marca postări" + +#: models/__init__.py:714 +msgid "suspended users cannot flag posts" +msgstr "utilizatorii suspendați nu pot marca postări" + +#: models/__init__.py:716 +#, python-format +msgid "need > %(min_rep)s points to flag spam" +msgstr "" +"este nevoie de mai mult de %(min_rep)s puncte pentru a marca drept spam" + +#: models/__init__.py:735 +#, python-format +msgid "%(max_flags_per_day)s exceeded" +msgstr "ați depășit %(max_flags_per_day)s" + +#: models/__init__.py:750 +msgid "" +"Sorry, only question owners, site administrators and moderators can retag " +"deleted questions" +msgstr "" +"Numai proprietarii întrebării, administratorii site-ului și moderatorii pot " +"reeticheta întrebările șterse" + +#: models/__init__.py:757 +msgid "Sorry, since your account is blocked you cannot retag questions" +msgstr "" +"Deoarece contul dumneavoastră este blocat, nu puteți reeticheta întrebări" + +#: models/__init__.py:761 +msgid "" +"Sorry, since your account is suspended you can retag only your own questions" +msgstr "" +"Deoarece contul dumneavoastră este suspendat, puteți reeticheta numai " +"întrebările proprii" + +#: models/__init__.py:765 +#, python-format +msgid "" +"Sorry, to retag questions a minimum reputation of %(min_rep)s is required" +msgstr "" +"Ne pare rău, pentru a reeticheta întrebări este nevoie de un minim de " +"%(min_rep)s puncte de reputație" + +#: models/__init__.py:784 +msgid "Sorry, since your account is blocked you cannot delete comment" +msgstr "" +"Deoarece contul dumneavoastră este blocat, nu puteți șterge comentarii" + +#: models/__init__.py:788 +msgid "" +"Sorry, since your account is suspended you can delete only your own comments" +msgstr "" +"Deoarece contul dumneavoastră este suspendat, puteți șterge numai propriile " +"comentarii" + +#: models/__init__.py:792 +#, python-format +msgid "Sorry, to delete comments reputation of %(min_rep)s is required" +msgstr "" +"Ne pare rău, pentru a șterge un comentariu este nevoie de un minim de " +"%(min_rep)s puncte de reputație" + +#: models/__init__.py:815 +msgid "cannot revoke old vote" +msgstr "voturile vechi nu pot fi revocate" + +#: models/__init__.py:1354 +msgid "Anonymous" +msgstr "Anonim" + +#: models/__init__.py:1440 views/users.py:362 +msgid "Site Adminstrator" +msgstr "Administrator" + +#: models/__init__.py:1442 views/users.py:364 +msgid "Forum Moderator" +msgstr "Moderator" + +#: models/__init__.py:1444 views/users.py:366 +msgid "Suspended User" +msgstr "Utilizator suspendat" + +#: models/__init__.py:1446 views/users.py:368 +msgid "Blocked User" +msgstr "Utilizator blocat" + +#: models/__init__.py:1448 views/users.py:370 +msgid "Registered User" +msgstr "Utilizator înregistrat" + +#: models/__init__.py:1450 +msgid "Watched User" +msgstr "Utilizator urmărit" + +#: models/__init__.py:1452 +msgid "Approved User" +msgstr "Utilizator aprobat" + +#: models/__init__.py:1508 +#, python-format +msgid "%(username)s karma is %(reputation)s" +msgstr "%(username)s are %(reputation)s puncte de reputație" + +#: models/__init__.py:1518 +#, python-format +msgid "one gold badge" +msgid_plural "%(count)d gold badges" +msgstr[0] "o insignă de aur" +msgstr[1] "%(count)d insigne de aur" +msgstr[2] "%(count)d de insigne de aur" + +#: models/__init__.py:1525 +#, python-format +msgid "one silver badge" +msgid_plural "%(count)d silver badges" +msgstr[0] "o insignă de argint" +msgstr[1] "%(count)d insigne de argint" +msgstr[2] "%(count)d de insigne de argint" + +#: models/__init__.py:1532 +#, python-format +msgid "one bronze badge" +msgid_plural "%(count)d bronze badges" +msgstr[0] "o insignă de bronz" +msgstr[1] "%(count)d insigne de bronz" +msgstr[2] "%(count)d de insigne de bronz" + +#: models/__init__.py:1543 +#, python-format +msgid "%(item1)s and %(item2)s" +msgstr "%(item1)s și %(item2)s" + +#: models/__init__.py:1547 +#, python-format +msgid "%(user)s has %(badges)s" +msgstr "%(user)s are %(badges)s" + +#: models/__init__.py:1920 models/__init__.py:1926 models/__init__.py:1931 +#: models/__init__.py:1936 +#, python-format +msgid "Re: \"%(title)s\"" +msgstr "Re: \"%(title)s\"" + +#: models/__init__.py:1941 models/__init__.py:1946 +#, python-format +msgid "Question: \"%(title)s\"" +msgstr "Întrebare: „%(title)s”" + +#: models/__init__.py:2116 +#, python-format +msgid "" +"Congratulations, you have received a badge '%(badge_name)s'. Check out <a " +"href=\"%(user_profile)s\">your profile</a>." +msgstr "" +"Felicitări, ați obținut o insignă „%(badge_name)s”. Verificați <a " +"href=\"%(user_profile)s\">profilul propriu</a>." + +#: models/__init__.py:2295 views/commands.py:396 +msgid "Your tag subscription was saved, thanks!" +msgstr "Abonarea la etichetă a fost salvată!" + +#: models/answer.py:105 +msgid "" +"Sorry, the answer you are looking for is no longer available, because the " +"parent question has been removed" +msgstr "" +"Ne pare rău, răspunsul pe care îl cautați nu mai etse disponibil deoarece " +"întrebarea asociată a fost ștearsă" + +#: models/answer.py:112 +msgid "Sorry, this answer has been removed and is no longer accessible" +msgstr "" +"Ne pară rău, această întrebarea a fost ștearsă și nu mai este accesibilă" + +#: models/badges.py:129 +#, python-format +msgid "Deleted own post with %(votes)s or more upvotes" +msgstr "A șters mesajul propriu cu %(votes)s sau mai multe voturi" + +#: models/badges.py:133 +msgid "Disciplined" +msgstr "Disciplinat" + +#: models/badges.py:151 +#, python-format +msgid "Deleted own post with %(votes)s or more downvotes" +msgstr "A șters propriul mesaj cu %(votes)s sau mai multe voturi negative" + +#: models/badges.py:155 +msgid "Peer Pressure" +msgstr "Presat de colegi" + +#: models/badges.py:174 +#, python-format +msgid "Received at least %(votes)s upvote for an answer for the first time" +msgstr "" +"A primit cel puțin %(votes)s voturi pozitive pentru un răspuns pentru prima " +"dată" + +#: models/badges.py:178 +msgid "Teacher" +msgstr "Profesor" + +#: models/badges.py:218 +msgid "Supporter" +msgstr "Suporter" + +#: models/badges.py:219 +msgid "First upvote" +msgstr "Primul vot pozitiv" + +#: models/badges.py:227 +msgid "Critic" +msgstr "Critic" + +#: models/badges.py:228 +msgid "First downvote" +msgstr "Primul vot negativ" + +#: models/badges.py:237 +msgid "Civic Duty" +msgstr "Datoria civică" + +#: models/badges.py:238 +#, python-format +msgid "Voted %(num)s times" +msgstr "A votat de %(num)s de ori" + +#: models/badges.py:252 +#, python-format +msgid "Answered own question with at least %(num)s up votes" +msgstr "A răspuns proprieri întrebări cu cel puțin %(num)s voturi pozitive" + +#: models/badges.py:256 +msgid "Self-Learner" +msgstr "Autodidact" + +#: models/badges.py:304 +msgid "Nice Answer" +msgstr "Răspuns frumos" + +#: models/badges.py:309 models/badges.py:321 models/badges.py:333 +#, python-format +msgid "Answer voted up %(num)s times" +msgstr "Răspuns votat pozitiv de %(num)s de ori" + +#: models/badges.py:316 +msgid "Good Answer" +msgstr "Răspuns bun" + +#: models/badges.py:328 +msgid "Great Answer" +msgstr "Răspuns grozav" + +#: models/badges.py:340 +msgid "Nice Question" +msgstr "Întrebare frumoasă" + +#: models/badges.py:345 models/badges.py:357 models/badges.py:369 +#, python-format +msgid "Question voted up %(num)s times" +msgstr "Întrebare votată pozitiv de %(num)s de ori" + +#: models/badges.py:352 +msgid "Good Question" +msgstr "Întrebare bună" + +#: models/badges.py:364 +msgid "Great Question" +msgstr "Întrebare grozavă" + +#: models/badges.py:376 +msgid "Student" +msgstr "Student" + +#: models/badges.py:381 +msgid "Asked first question with at least one up vote" +msgstr "A întrebat prima întrebare cu cel puțin un vot pozitiv" + +#: models/badges.py:414 +msgid "Popular Question" +msgstr "Întrebare populară" + +#: models/badges.py:418 models/badges.py:429 models/badges.py:441 +#, python-format +msgid "Asked a question with %(views)s views" +msgstr "A pus o întrebare cu %(views)s vizualizări" + +#: models/badges.py:425 +msgid "Notable Question" +msgstr "Întrebare notabilă" + +#: models/badges.py:436 +msgid "Famous Question" +msgstr "Întrebare faimoasă" + +#: models/badges.py:450 +msgid "Asked a question and accepted an answer" +msgstr "A pus o întrebare și a acceptat răspunsul" + +#: models/badges.py:453 +msgid "Scholar" +msgstr "Elev" + +#: models/badges.py:495 +msgid "Enlightened" +msgstr "Luminat" + +#: models/badges.py:499 +#, python-format +msgid "First answer was accepted with %(num)s or more votes" +msgstr "Primul răspuns a fost acceptat cu %(num)s sau mai multe voturi" + +#: models/badges.py:507 +msgid "Guru" +msgstr "Guru" + +#: models/badges.py:510 +#, python-format +msgid "Answer accepted with %(num)s or more votes" +msgstr "Răspuns acceptat cu %(num)s sau mai multe voturi" + +#: models/badges.py:518 +#, python-format +msgid "" +"Answered a question more than %(days)s days later with at least %(votes)s " +"votes" +msgstr "" +"A răspuns unei întrebări mai mult de %(days)s zile mai târziu cu cel puțin " +"%(votes)s voturi" + +#: models/badges.py:525 +msgid "Necromancer" +msgstr "" + +#: models/badges.py:548 +msgid "Citizen Patrol" +msgstr "Patrula comunitară" + +#: models/badges.py:551 +msgid "First flagged post" +msgstr "Primul mesaj marcat ca ofensiv" + +#: models/badges.py:563 +msgid "Cleanup" +msgstr "Curățenie" + +#: models/badges.py:566 +msgid "First rollback" +msgstr "Prima revenire la o versiune anterioară" + +#: models/badges.py:577 +msgid "Pundit" +msgstr "Cărturar" + +#: models/badges.py:580 +msgid "Left 10 comments with score of 10 or more" +msgstr "A lăsat 10 comentarii cu scorul de 10 sau mai mult" + +#: models/badges.py:612 +msgid "Editor" +msgstr "Editor" + +#: models/badges.py:615 +msgid "First edit" +msgstr "Prima modificare" + +#: models/badges.py:623 +msgid "Associate Editor" +msgstr "Editor asociat" + +#: models/badges.py:627 +#, python-format +msgid "Edited %(num)s entries" +msgstr "A modificat %(num)s intrări" + +#: models/badges.py:634 +msgid "Organizer" +msgstr "Organizator" + +#: models/badges.py:637 +msgid "First retag" +msgstr "Prima reetichetare" + +#: models/badges.py:644 +msgid "Autobiographer" +msgstr "Autobiograf" + +#: models/badges.py:647 +msgid "Completed all user profile fields" +msgstr "A completat toate câmpurile din profil" + +#: models/badges.py:663 +#, python-format +msgid "Question favorited by %(num)s users" +msgstr "Întrebare favorită pentru %(num)s utilizatori" + +#: models/badges.py:689 +msgid "Stellar Question" +msgstr "Întrebare stelară" + +#: models/badges.py:698 +msgid "Favorite Question" +msgstr "Întrebare favorită" + +#: models/badges.py:710 +msgid "Enthusiast" +msgstr "Entuziast" + +#: models/badges.py:714 +#, python-format +msgid "Visited site every day for %(num)s days in a row" +msgstr "A vizitat siteul în fiecare zi pentru %(num)s zile consecutive" + +#: models/badges.py:732 +msgid "Commentator" +msgstr "Comentator" + +#: models/badges.py:736 +#, python-format +msgid "Posted %(num_comments)s comments" +msgstr "A adăugat %(num_comments)s comentarii" + +#: models/badges.py:752 +msgid "Taxonomist" +msgstr "Taxonomist" + +#: models/badges.py:756 +#, python-format +msgid "Created a tag used by %(num)s questions" +msgstr "A creat o etichetă folosită în %(num)s întrebări" + +#: models/badges.py:776 +msgid "Expert" +msgstr "Expert" + +#: models/badges.py:779 +msgid "Very active in one tag" +msgstr "Foarte activ pe o anumită etichetă" + +#: models/meta.py:111 +msgid "" +"Sorry, the comment you are looking for is no longer accessible, because the " +"parent question has been removed" +msgstr "" +"Ne pare rău, comentariu pe care îl cautați nu mai este accesibil deoarece " +"întrebarea asociată a fost ștearsă" + +#: models/meta.py:118 +msgid "" +"Sorry, the comment you are looking for is no longer accessible, because the " +"parent answer has been removed" +msgstr "" +"Ne pare rău, comentariul pe care îl cautați nu mai este accesibil deoarece " +"răspunsul asociat a fost șters" + +#: models/question.py:387 +msgid "Sorry, this question has been deleted and is no longer accessible" +msgstr "" +"Ne pare rău, această întrebare a fost ștearsă și nu mai este accesibilă" + +#: models/question.py:815 +#, python-format +msgid "%(author)s modified the question" +msgstr "%(author)s a modificat întrebarea" + +#: models/question.py:819 +#, python-format +msgid "%(people)s posted %(new_answer_count)s new answers" +msgstr "%(people)s au adăugat %(new_answer_count)s întrebări noi" + +#: models/question.py:824 +#, python-format +msgid "%(people)s commented the question" +msgstr "%(people)s au comentat întrebările" + +#: models/question.py:829 +#, python-format +msgid "%(people)s commented answers" +msgstr "%(people)s au comentat răspunsurile" + +#: models/question.py:831 +#, python-format +msgid "%(people)s commented an answer" +msgstr "%(people)s au comentat un răspuns" + +#: models/repute.py:142 +#, python-format +msgid "<em>Changed by moderator. Reason:</em> %(reason)s" +msgstr "<em>Schimbat de moderator. Motiv:</em> %(reason)s" + +#: models/repute.py:153 +#, python-format +msgid "" +"%(points)s points were added for %(username)s's contribution to question " +"%(question_title)s" +msgstr "" +"%(points)s puncte au fost adăugate pentru contribuția utilizatorului " +"%(username)s la întrebarea %(question_title)s" + +#: models/repute.py:158 +#, python-format +msgid "" +"%(points)s points were subtracted for %(username)s's contribution to " +"question %(question_title)s" +msgstr "" +"%(points)s puncte au fost retrase pentru contribuția utilizatorului " +"%(username)s la întrebarea %(question_title)s" + +#: models/tag.py:105 +msgid "interesting" +msgstr "interesant" + +#: models/tag.py:105 +msgid "ignored" +msgstr "ignorat" + +#: models/user.py:261 +msgid "Entire forum" +msgstr "Toate întrebările" + +#: models/user.py:262 +msgid "Questions that I asked" +msgstr "Întrebările pe care le-am pus" + +#: models/user.py:263 +msgid "Questions that I answered" +msgstr "Întrebările la care am răspuns" + +#: models/user.py:264 +msgid "Individually selected questions" +msgstr "Întrebări selectate individual" + +#: models/user.py:265 +msgid "Mentions and comment responses" +msgstr "Mențiuni și răspunsuri la comentarii" + +#: models/user.py:268 +msgid "Instantly" +msgstr "Imediat" + +#: models/user.py:269 +msgid "Daily" +msgstr "Zilnic" + +#: models/user.py:270 +msgid "Weekly" +msgstr "Săptămânal" + +#: models/user.py:271 +msgid "No email" +msgstr "Fără email" + +#: skins/default/templates/404.jinja.html:3 +#: skins/default/templates/404.jinja.html:10 +msgid "Page not found" +msgstr "Pagina nu a fost găsită" + +#: skins/default/templates/404.jinja.html:13 +msgid "Sorry, could not find the page you requested." +msgstr "Ne pare rău, pagina cerută nu a putut fi găsită." + +#: skins/default/templates/404.jinja.html:15 +msgid "This might have happened for the following reasons:" +msgstr "Acest lucru s-a întâmplat probabil din următoarele motive:" + +#: skins/default/templates/404.jinja.html:17 +msgid "this question or answer has been deleted;" +msgstr "acestă întrebare sau răspuns a fost ștearsă;" + +#: skins/default/templates/404.jinja.html:18 +msgid "url has error - please check it;" +msgstr "legătura conține erori - verificați;" + +#: skins/default/templates/404.jinja.html:19 +msgid "" +"the page you tried to visit is protected or you don't have sufficient " +"points, see" +msgstr "" +"pagina pe care ați încercat să o vizitați este protejată și nu aveți " +"suficiente puncte, vezi" + +#: skins/default/templates/404.jinja.html:19 +#: skins/default/templates/blocks/footer.html:6 +#: skins/default/templates/blocks/header_meta_links.html:13 +#: skins/default/templates/blocks/question_edit_tips.html:15 +msgid "faq" +msgstr "întrebări frecvente" + +#: skins/default/templates/404.jinja.html:20 +msgid "if you believe this error 404 should not have occured, please" +msgstr "" +"în cazul în care considerați că acestă eroare 404 nu ar trebui să apară, vă " +"rugăm" + +#: skins/default/templates/404.jinja.html:21 +msgid "report this problem" +msgstr "raportați acestă problemă" + +#: skins/default/templates/404.jinja.html:30 +#: skins/default/templates/500.jinja.html:11 +msgid "back to previous page" +msgstr "mergeți înapoi la pagina anterioară" + +#: skins/default/templates/404.jinja.html:31 +#: skins/default/templates/main_page/tab_bar.html:9 +msgid "see all questions" +msgstr "vezi toate întrebările" + +#: skins/default/templates/404.jinja.html:32 +msgid "see all tags" +msgstr "vezi toate etichetele" + +#: skins/default/templates/500.jinja.html:3 +#: skins/default/templates/500.jinja.html:5 +msgid "Internal server error" +msgstr "Eroare server internă" + +#: skins/default/templates/500.jinja.html:8 +msgid "system error log is recorded, error will be fixed as soon as possible" +msgstr "eroarea a fost înregistrată și va fi rezolvată cât de curând posibil" + +#: skins/default/templates/500.jinja.html:9 +msgid "please report the error to the site administrators if you wish" +msgstr "puteți raporta eroarea administratorilor acestui site" + +#: skins/default/templates/500.jinja.html:12 +msgid "see latest questions" +msgstr "vezi cele mai recente întrebări" + +#: skins/default/templates/500.jinja.html:13 +msgid "see tags" +msgstr "vezi etichetele" + +#: skins/default/templates/about.html:3 skins/default/templates/about.html:5 +#, python-format +msgid "About %(site_name)s" +msgstr "Despre %(site_name)s" + +#: skins/default/templates/answer_edit.html:4 +#: skins/default/templates/answer_edit.html:10 +msgid "Edit answer" +msgstr "Modifică răspuns" + +#: skins/default/templates/answer_edit.html:10 +#: skins/default/templates/question_edit.html:9 +#: skins/default/templates/question_retag.html:5 +#: skins/default/templates/revisions.html:7 +msgid "back" +msgstr "înapoi" + +#: skins/default/templates/answer_edit.html:15 +#: skins/default/templates/question_edit.html:11 +msgid "revision" +msgstr "revizie" + +#: skins/default/templates/answer_edit.html:18 +#: skins/default/templates/question_edit.html:16 +msgid "select revision" +msgstr "alege revizia" + +#: skins/default/templates/answer_edit.html:22 +#: skins/default/templates/question_edit.html:20 +msgid "Save edit" +msgstr "Salvează modificările" + +#: skins/default/templates/answer_edit.html:23 +#: skins/default/templates/close.html:16 +#: skins/default/templates/feedback.html:42 +#: skins/default/templates/question_edit.html:21 +#: skins/default/templates/question_retag.html:23 +#: skins/default/templates/reopen.html:27 +#: skins/default/templates/subscribe_for_tags.html:16 +#: skins/default/templates/authopenid/changeemail.html:38 +#: skins/default/templates/user_profile/user_edit.html:84 +msgid "Cancel" +msgstr "Anulează" + +#: skins/default/templates/answer_edit.html:62 +#: skins/default/templates/answer_edit.html:65 +#: skins/default/templates/ask.html:43 skins/default/templates/ask.html:46 +#: skins/default/templates/macros.html:592 +#: skins/default/templates/question.html:477 +#: skins/default/templates/question.html:480 +#: skins/default/templates/question_edit.html:62 +#: skins/default/templates/question_edit.html:65 +msgid "hide preview" +msgstr "ascunde previzualizarea" + +#: skins/default/templates/answer_edit.html:65 +#: skins/default/templates/ask.html:46 +#: skins/default/templates/question.html:480 +#: skins/default/templates/question_edit.html:65 +msgid "show preview" +msgstr "arată previzualizarea" + +#: skins/default/templates/ask.html:3 +msgid "Ask a question" +msgstr "Puneți o întrebare" + +#: skins/default/templates/badge.html:4 skins/default/templates/badge.html:8 +#: skins/default/templates/user_profile/user_recent.html:16 +#: skins/default/templates/user_profile/user_stats.html:106 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: skins/default/templates/badge.html:4 +msgid "Badge" +msgstr "Insignă" + +#: skins/default/templates/badge.html:6 +#, python-format +msgid "Badge \"%(name)s\"" +msgstr "Insigna „%(name)s”" + +#: skins/default/templates/badge.html:8 +#: skins/default/templates/user_profile/user_recent.html:16 +#: skins/default/templates/user_profile/user_stats.html:106 +#, python-format +msgid "%(description)s" +msgstr "%(description)s" + +#: skins/default/templates/badge.html:13 +msgid "user received this badge:" +msgid_plural "users received this badge:" +msgstr[0] "utilizator care a primit această insignă:" +msgstr[1] "utilizatorii care au primit acestă insignă:" +msgstr[2] "utilizatorii care au primit acestă insignă:" + +#: skins/default/templates/badges.html:3 +msgid "Badges summary" +msgstr "Sumar insigne" + +#: skins/default/templates/badges.html:5 +msgid "Badges" +msgstr "Insigne" + +#: skins/default/templates/badges.html:7 +msgid "Community gives you awards for your questions, answers and votes." +msgstr "" +"Comunitatea vă recompensează pentru întrebările, răspunsurile și voturile " +"dumneavoastră." + +#: skins/default/templates/badges.html:8 +#, python-format +msgid "" +"Below is the list of available badges and number \n" +"of times each type of badge has been awarded. Give us feedback at " +"%(feedback_faq_url)s.\n" +msgstr "" +"Mai jos este lista insignelor disponibile și numărul \n" +"de ori fiecare dintre ele a fost obținuntă. Puteți trimite sugestiile " +"voastre la %(feedback_faq_url)s.\n" + +#: skins/default/templates/badges.html:35 +msgid "Community badges" +msgstr "Insigne ale comunității" + +#: skins/default/templates/badges.html:37 +msgid "gold badge: the highest honor and is very rare" +msgstr "insignă de aur: cea mai înaltă onoare ... și foarte rară" + +#: skins/default/templates/badges.html:40 +msgid "gold badge description" +msgstr "descriere insignă de aur" + +#: skins/default/templates/badges.html:45 +msgid "" +"silver badge: occasionally awarded for the very high quality contributions" +msgstr "" +"insignă de argint: acordată ocazional pentru contribuții de cea mai bună " +"calitate" + +#: skins/default/templates/badges.html:49 +msgid "silver badge description" +msgstr "descriere insignă de argint" + +#: skins/default/templates/badges.html:52 +msgid "bronze badge: often given as a special honor" +msgstr "" +"insignă de argint: acordată adesea pentru a onora pe cineva într-un mod " +"special" + +#: skins/default/templates/badges.html:56 +msgid "bronze badge description" +msgstr "descriere insignă de bronz" + +#: skins/default/templates/close.html:3 skins/default/templates/close.html:5 +msgid "Close question" +msgstr "Închide întrebarea" + +#: skins/default/templates/close.html:6 +msgid "Close the question" +msgstr "Închide întrebarea" + +#: skins/default/templates/close.html:11 +msgid "Reasons" +msgstr "Motive" + +#: skins/default/templates/close.html:15 +msgid "OK to close" +msgstr "Ok pentru închidere" + +#: skins/default/templates/faq.html:3 skins/default/templates/faq.html.py:5 +msgid "FAQ" +msgstr "Întrebări frecvente" + +#: skins/default/templates/faq.html:5 +msgid "Frequently Asked Questions " +msgstr "Întrebări frecvente " + +#: skins/default/templates/faq.html:6 +msgid "What kinds of questions can I ask here?" +msgstr "Ce fel de întrebări pot întreba aici?" + +#: skins/default/templates/faq.html:7 +msgid "" +"Most importanly - questions should be <strong>relevant</strong> to this " +"community." +msgstr "" +"Cel mai important - întrebările trebuie să fie <strong>relevante</strong> " +"pentru această comunitate." + +#: skins/default/templates/faq.html:8 +msgid "" +"Before asking the question - please make sure to use search to see whether " +"your question has alredy been answered." +msgstr "" +"Înainte de a pune o întrebare vă rugăm să căutați acestă întrebare pentru a " +"vă asigura că nu are deja un răspuns." + +#: skins/default/templates/faq.html:10 +msgid "What questions should I avoid asking?" +msgstr "Ce întrebări ar trebui să evit a pune?" + +#: skins/default/templates/faq.html:11 +msgid "" +"Please avoid asking questions that are not relevant to this community, too " +"subjective and argumentative." +msgstr "" +"Vă rugăm să evitați a pune întrebări care nu sunt relevante pentru această " +"comunitate, prea subiective și argumentative." + +#: skins/default/templates/faq.html:13 +msgid "What should I avoid in my answers?" +msgstr "Ce ar trebui să evit în răspunsurile mele?" + +#: skins/default/templates/faq.html:14 +msgid "" +"is a Q&A site, not a discussion group. Therefore - please avoid having " +"discussions in your answers, comment facility allows some space for brief " +"discussions." +msgstr "" +"Este un site pentru întrebări și răspunsuri, nu un grup de discuții. De " +"aceea evitați purtarea unor discuții în răspunsurile dumneavoastră, mai ales " +"că funcția pentru comentarii permite ceva spațiu pentru discuții scurte." + +#: skins/default/templates/faq.html:15 +msgid "Who moderates this community?" +msgstr "Cine moderează această comunitate?" + +#: skins/default/templates/faq.html:16 +msgid "The short answer is: <strong>you</strong>." +msgstr "Răspunsul scurt este: <strong>dumneavoastră</strong>." + +#: skins/default/templates/faq.html:17 +msgid "This website is moderated by the users." +msgstr "Acest site web este moderat de utilizatori." + +#: skins/default/templates/faq.html:18 +msgid "" +"The reputation system allows users earn the authorization to perform a " +"variety of moderation tasks." +msgstr "" +"Sistemul de reputație permite utilizatorilor să câștige autoritate pe care o " +"folosesc la realizarea mai multor sarcini de moderare." + +#: skins/default/templates/faq.html:20 +msgid "How does reputation system work?" +msgstr "Cum funcționează sistemul de reputație?" + +#: skins/default/templates/faq.html:21 +msgid "Rep system summary" +msgstr "Sumar al sistemului de reputație" + +#: skins/default/templates/faq.html:22 +#, python-format +msgid "" +"For example, if you ask an interesting question or give a helpful answer, " +"your input will be upvoted. On the other hand if the answer is misleading - " +"it will be downvoted. Each vote in favor will generate " +"<strong>%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against " +"will subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. " +"There is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> " +"points that can be accumulated for a question or answer per day. The table " +"below explains reputation point requirements for each type of moderation " +"task." +msgstr "" +"De exemplu, dacă puneți o întrebare interesantă sau dacă oferiți un răspuns " +"util, veți fi apreciat cu voturi pozitive. Pe de altă parte, dacă răspunsul " +"este greșit, va fi votat negativ. Fiecare vot pozitiv va genera puncte " +"<strong>%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, fiecare vot " +"negativ va șterge puncte " +"<strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong>. Există o limită a " +"punctelor <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> pe care le " +"puteți acumula pentru o întrebare sau un răspuns în decursul unei zile. " +"Tabelul de mai jos explică necesarul de puncte de reputație necesare pentru " +"fiecare tip de sarcină de moderare." + +#: skins/default/templates/faq.html:32 +#: skins/default/templates/user_profile/user_votes.html:13 +msgid "upvote" +msgstr "vot pozitiv" + +#: skins/default/templates/faq.html:37 +msgid "use tags" +msgstr "utilizează etichete" + +#: skins/default/templates/faq.html:42 +msgid "add comments" +msgstr "adaugă comentarii" + +#: skins/default/templates/faq.html:46 +#: skins/default/templates/user_profile/user_votes.html:15 +msgid "downvote" +msgstr "vot negativ" + +#: skins/default/templates/faq.html:49 +msgid "open and close own questions" +msgstr "deschide și închide propriile întrebări" + +#: skins/default/templates/faq.html:53 +msgid "retag other's questions" +msgstr "reetichetează întrebările altora" + +#: skins/default/templates/faq.html:58 +msgid "edit community wiki questions" +msgstr "modifică întrebările wiki-ului comunității" + +#: skins/default/templates/faq.html:63 +msgid "\"edit any answer" +msgstr "\"modifică orice răspuns" + +#: skins/default/templates/faq.html:67 +msgid "\"delete any comment" +msgstr "\"șterge orice comentariu" + +#: skins/default/templates/faq.html:70 +msgid "what is gravatar" +msgstr "ce este gravatarul" + +#: skins/default/templates/faq.html:71 +msgid "gravatar faq info" +msgstr "informații utile despre gravatar" + +#: skins/default/templates/faq.html:72 +msgid "To register, do I need to create new password?" +msgstr "Pentru a mă înregistra trebuie să creez o parolă nouă?" + +#: skins/default/templates/faq.html:73 +msgid "" +"No, you don't have to. You can login through any service that supports " +"OpenID, e.g. Google, Yahoo, AOL, etc.\"" +msgstr "" +"Nu, nu trebuie neapărat. Vă puteți autentifica prin orice serviciu care " +"recunoaște OpenID, de ex. Google, Yahoo, AOL, etc.\"" + +#: skins/default/templates/faq.html:74 +msgid "\"Login now!\"" +msgstr "\"Autentifică acum!\"" + +#: skins/default/templates/faq.html:76 +msgid "Why other people can edit my questions/answers?" +msgstr "De ce alții pot modifica întrebările/răspunsurile mele?" + +#: skins/default/templates/faq.html:77 +msgid "Goal of this site is..." +msgstr "Scopul acestui site este..." + +#: skins/default/templates/faq.html:77 +msgid "" +"So questions and answers can be edited like wiki pages by experienced users " +"of this site and this improves the overall quality of the knowledge base " +"content." +msgstr "" +"Întrebările și răspunsurile pot fi modifica asemănător paginilor wiki de " +"către utilizatori cu experineță în acest fel îmbunătățindu-se calitatea " +"bazei de cunoștințe." + +#: skins/default/templates/faq.html:78 +msgid "If this approach is not for you, we respect your choice." +msgstr "" +"Dacă această abordare nu este pe placul dumneavoastră, vă respectăm alegerea." + +#: skins/default/templates/faq.html:80 +msgid "Still have questions?" +msgstr "Aveți și alte întrebări?" + +#: skins/default/templates/faq.html:81 +#, python-format +msgid "" +"Please ask your question at %(ask_question_url)s, help make our community " +"better!" +msgstr "" +"Răspundeți întrebărilor la %(ask_question_url)s, ajutând astfel comunitatea " +"să devină mai bună!" + +#: skins/default/templates/feedback.html:3 +msgid "Feedback" +msgstr "Sugestii" + +#: skins/default/templates/feedback.html:5 +msgid "Give us your feedback!" +msgstr "Trimite sugestia ta!" + +#: skins/default/templates/feedback.html:9 +#, python-format +msgid "" +"\n" +" <span class='big strong'>Dear %(user_name)s</span>, we look forward " +"to hearing your feedback. \n" +" Please type and send us your message below.\n" +" " +msgstr "" +"\n" +" <span class='big strong'>%(user_name)s</span> așteptăm cu intereset " +"sugestiile tale. \n" +"Introduceți mai jos mesajul sugestiei.\n" +" " + +#: skins/default/templates/feedback.html:16 +msgid "" +"\n" +" <span class='big strong'>Dear visitor</span>, we look forward to " +"hearing your feedback.\n" +" Please type and send us your message below.\n" +" " +msgstr "" +"\n" +" <span class='big strong'>Stimate vizitator(user_name)s</span> " +"așteptăm cu intereset sugestiile tale. \n" +"Introduceți mai jos mesajul sugestiei.\n" +" " + +#: skins/default/templates/feedback.html:25 +msgid "(please enter a valid email)" +msgstr "(introduceți o adresă de e-mail validă)" + +#: skins/default/templates/feedback.html:33 +msgid "(this field is required)" +msgstr "(acest câmp este obligatoriu)" + +#: skins/default/templates/feedback.html:41 +msgid "Send Feedback" +msgstr "Trimite sugestia" + +#: skins/default/templates/feedback_email.txt:3 +#, python-format +msgid "" +"\n" +"Hello, this is a %(site_title)s forum feedback message\n" +msgstr "" +"\n" +"Salut, acesta este un mesaj de sugestii pentru %(site_title)s\n" + +#: skins/default/templates/feedback_email.txt:9 +msgid "Sender is" +msgstr "Expenditorul este" + +#: skins/default/templates/feedback_email.txt:11 +#: skins/default/templates/feedback_email.txt:14 +msgid "email" +msgstr "email" + +#: skins/default/templates/feedback_email.txt:13 +msgid "anonymous" +msgstr "anonim" + +#: skins/default/templates/feedback_email.txt:19 +msgid "Message body:" +msgstr "Corp mesaj:" + +#: skins/default/templates/import_data.html:2 +#: skins/default/templates/import_data.html:4 +msgid "Import StackExchange data" +msgstr "Importă date StackExchange" + +#: skins/default/templates/import_data.html:13 +msgid "" +"<em>Warning:</em> if your database is not empty, please back it up\n" +" before attempting this operation." +msgstr "" +"<em>Avertisment:</em> dacă baza de date nu este goală, creați o copie de " +"siguranță\n" +" înainte de a începe această operație." + +#: skins/default/templates/import_data.html:16 +msgid "" +"Upload your stackexchange dump .zip file, then wait until\n" +" the data import completes. This process may take several minutes.\n" +" Please note that feedback will be printed in plain text.\n" +" " +msgstr "" +"Încărcați fișierul dump .zip stackexchange, apoi așteptați până ce\n" +" se termină importul datelor. Procesul poate dura câteva minute.\n" +" Rețineți că feedback-ul va fi afișat în text simplu.\n" +" " + +#: skins/default/templates/import_data.html:25 +msgid "Import data" +msgstr "Import date" + +#: skins/default/templates/import_data.html:27 +msgid "" +"In the case you experience any difficulties in using this import tool,\n" +" please try importing your data via command line: <code>python " +"manage.py load_stackexchange path/to/your-data.zip</code>" +msgstr "" +"În cazul în care întâmpinați dificultăți în utilizarea acestei unelte pentru " +"import,\n" +" încercați să importați datele utilizând linia de comandă : " +"<code>python manage.py load_stackexchange calea/către/datele-" +"dumneavoastră.zip</code>" + +#: skins/default/templates/instant_notification.html:1 +#, python-format +msgid "<p>Dear %(receiving_user_name)s,</p>" +msgstr "<p>%(receiving_user_name)s,</p>" + +#: skins/default/templates/instant_notification.html:3 +#, python-format +msgid "" +"\n" +"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new " +"comment</a>:</p>\n" +msgstr "" +"\n" +"<p>%(update_author_name)s a lăsat un <a href=\"%(post_url)s\">comentariu " +"nou</a>:</p>\n" + +#: skins/default/templates/instant_notification.html:8 +#, python-format +msgid "" +"\n" +"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new " +"comment</a></p>\n" +msgstr "" +"\n" +"<p>%(update_author_name)s a lăsat un <a href=\"%(post_url)s\">comentariu " +"nou</a></p>\n" + +#: skins/default/templates/instant_notification.html:13 +#, python-format +msgid "" +"\n" +"<p>%(update_author_name)s answered a question \n" +"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n" +msgstr "" +"\n" +"<p>%(update_author_name)s a răspuns unei întrebări \n" +"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n" + +#: skins/default/templates/instant_notification.html:19 +#, python-format +msgid "" +"\n" +"<p>%(update_author_name)s posted a new question \n" +"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n" +msgstr "" +"\n" +"<p>%(update_author_name)s a postat o întrebare nouă \n" +"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n" + +#: skins/default/templates/instant_notification.html:25 +#, python-format +msgid "" +"\n" +"<p>%(update_author_name)s updated an answer to the question\n" +"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n" +msgstr "" +"\n" +"<p>%(update_author_name)s a actualizat un răspuns la întrebarea\n" +"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n" + +#: skins/default/templates/instant_notification.html:31 +#, python-format +msgid "" +"\n" +"<p>%(update_author_name)s updated a question \n" +"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n" +msgstr "" +"\n" +"<p>%(update_author_name)s a actualizat o întrebare \n" +"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n" + +#: skins/default/templates/instant_notification.html:37 +#, python-format +msgid "" +"\n" +"<div>%(content_preview)s</div>\n" +"<p>Please note - you can easily <a " +"href=\"%(user_subscriptions_url)s\">change</a>\n" +"how often you receive these notifications or unsubscribe. Thank you for your " +"interest in our forum!</p>\n" +msgstr "" +"\n" +"<div>%(content_preview)s</div>\n" +"<p>Rețineți că puteți <a href=\"%(user_subscriptions_url)s\">modifica</a> cu " +"ușurință\n" +"frecvența cu care primiți aceste notificări sau chiar anula abonamentul. Vă " +"mulțumim pentru interesul acordat forumului nostru!</p>\n" + +#: skins/default/templates/instant_notification.html:42 +msgid "<p>Sincerely,<br/>Forum Administrator</p>" +msgstr "<p>Cu stimă,<br/>Administrator forum</p>" + +#: skins/default/templates/logout.html:3 skins/default/templates/logout.html:5 +msgid "Logout" +msgstr "Ieșire" + +#: skins/default/templates/logout.html:6 +msgid "" +"As a registered user you can login with your OpenID, log out of the site or " +"permanently remove your account." +msgstr "" +"Ca utilizator înregistrat vă puteți autentifica cu OpenID-ul dumneavoastră, " +"vă puteți deautentifica sau vă puteți șterge contul definitiv." + +#: skins/default/templates/logout.html:7 +msgid "Logout now" +msgstr "Ieșiți acum" + +#: skins/default/templates/macros.html:26 +msgid "karma:" +msgstr "reputație:" + +#: skins/default/templates/macros.html:30 +msgid "badges:" +msgstr "insigne:" + +#: skins/default/templates/macros.html:82 +#: skins/default/templates/macros.html:83 +msgid "previous" +msgstr "precedentă" + +#: skins/default/templates/macros.html:94 +msgid "current page" +msgstr "pagiona curentă" + +#: skins/default/templates/macros.html:96 +#: skins/default/templates/macros.html:103 +#, python-format +msgid "page number %(num)s" +msgstr "număr pagină %(num)s" + +#: skins/default/templates/macros.html:107 +msgid "next page" +msgstr "pagina următoare" + +#: skins/default/templates/macros.html:118 +msgid "posts per page" +msgstr "postări pe pagină" + +#: skins/default/templates/macros.html:150 templatetags/extra_tags.py:43 +#, python-format +msgid "%(username)s gravatar image" +msgstr "imagine gravatat %(username)s" + +#: skins/default/templates/macros.html:159 +#, python-format +msgid "%(username)s's website is %(url)s" +msgstr "Pagina web pentru %(username)s este %(url)s" + +#: skins/default/templates/macros.html:171 +msgid "anonymous user" +msgstr "utilizator anonim" + +#: skins/default/templates/macros.html:199 +msgid "this post is marked as community wiki" +msgstr "acest text este marca drep un wiki al comunității" + +#: skins/default/templates/macros.html:202 +#, python-format +msgid "" +"This post is a wiki.\n" +" Anyone with karma >%(wiki_min_rep)s is welcome to improve it." +msgstr "" +"Acesta este o pagină wiki.\n" +" Oricine cu o reputație mai mare decât %(wiki_min_rep)s este binevenit " +"să o imbunătățească." + +#: skins/default/templates/macros.html:208 +msgid "asked" +msgstr "întrebat" + +#: skins/default/templates/macros.html:210 +msgid "answered" +msgstr "răspuns" + +#: skins/default/templates/macros.html:212 +msgid "posted" +msgstr "adăugat" + +#: skins/default/templates/macros.html:242 +msgid "updated" +msgstr "actualizat" + +#: skins/default/templates/macros.html:309 +#, python-format +msgid "see questions tagged '%(tag)s'" +msgstr "afișează întrebările etichetate „%(tag)s”" + +#: skins/default/templates/macros.html:352 views/readers.py:231 +msgid "vote" +msgid_plural "votes" +msgstr[0] "vot" +msgstr[1] "voturi" +msgstr[2] "de voturi" + +#: skins/default/templates/macros.html:369 views/readers.py:234 +msgid "answer" +msgid_plural "answers" +msgstr[0] "răspuns" +msgstr[1] "răspunsuri" +msgstr[2] "de răspunsuri" + +#: skins/default/templates/macros.html:380 views/readers.py:237 +msgid "view" +msgid_plural "views" +msgstr[0] "afișare" +msgstr[1] "afișări" +msgstr[2] "de afișări" + +#: skins/default/templates/macros.html:409 +#: skins/default/templates/question.html:93 +#: skins/default/templates/question.html:249 +#: skins/default/templates/revisions.html:37 +msgid "edit" +msgstr "modifică" + +#: skins/default/templates/macros.html:413 +msgid "delete this comment" +msgstr "șterge acest comentariu" + +#: skins/default/templates/macros.html:431 +#: skins/default/templates/macros.html:439 +#: skins/default/templates/question.html:439 +msgid "add comment" +msgstr "adaugă comentariu" + +#: skins/default/templates/macros.html:432 +#, python-format +msgid "see <strong>%(counter)s</strong> more" +msgid_plural "see <strong>%(counter)s</strong> more" +msgstr[0] "afișează încă <strong>%(counter)s</strong>" +msgstr[1] "afișează încă <strong>%(counter)s</strong>" +msgstr[2] "afișează încă <strong>%(counter)s</strong>" + +#: skins/default/templates/macros.html:434 +#, python-format +msgid "see <strong>%(counter)s</strong> more comment" +msgid_plural "" +"see <strong>%(counter)s</strong> more comments\n" +" " +msgstr[0] "afișează încă <strong>%(counter)s</strong> comentariu" +msgstr[1] "afișează încă <strong>%(counter)s</strong> comentarii" +msgstr[2] "afișează încă <strong>%(counter)s</strong> de comentarii" + +#: skins/default/templates/macros.html:569 +msgid "(required)" +msgstr "(obligatoriu)" + +#: skins/default/templates/macros.html:590 +msgid "Toggle the real time Markdown editor preview" +msgstr "Comută previzualizare în timp real pentru textul Markdown" + +#: skins/default/templates/macros.html:602 +#, python-format +msgid "responses for %(username)s" +msgstr "răspunsuri pentru %(username)s" + +#: skins/default/templates/macros.html:605 +#, python-format +msgid "you have a new response" +msgid_plural "you have %(response_count)s new responses" +msgstr[0] "ai un răspuns nou" +msgstr[1] "ai %(response_count)s răspunsuri noi" +msgstr[2] "ai %(response_count)s de răspunsuri noi" + +#: skins/default/templates/macros.html:608 +msgid "no new responses yet" +msgstr "încă nici un răspuns nou" + +#: skins/default/templates/macros.html:623 +#: skins/default/templates/macros.html:624 +#, python-format +msgid "%(new)s new flagged posts and %(seen)s previous" +msgstr "%(new)s postări noi marcate și %(seen)s anterioare" + +#: skins/default/templates/macros.html:626 +#: skins/default/templates/macros.html:627 +#, python-format +msgid "%(new)s new flagged posts" +msgstr "%(new)s postări noi marcate" + +#: skins/default/templates/macros.html:632 +#: skins/default/templates/macros.html:633 +#, python-format +msgid "%(seen)s flagged posts" +msgstr "%(seen)s (de) postări marcate" + +#: skins/default/templates/main_page.html:11 +msgid "Questions" +msgstr "Întrebări" + +#: skins/default/templates/privacy.html:3 +#: skins/default/templates/privacy.html:5 +msgid "Privacy policy" +msgstr "Politica de confidențialitate" + +#: skins/default/templates/question.html:27 +#: skins/default/templates/question.html:28 +#: skins/default/templates/question.html:43 +#: skins/default/templates/question.html:45 +msgid "i like this post (click again to cancel)" +msgstr "îmi place această postare (efectuați clic din nou pentru a anula)" + +#: skins/default/templates/question.html:30 +#: skins/default/templates/question.html:47 +#: skins/default/templates/question.html:200 +msgid "current number of votes" +msgstr "număr actual de voturi" + +#: skins/default/templates/question.html:39 +#: skins/default/templates/question.html:40 +#: skins/default/templates/question.html:52 +#: skins/default/templates/question.html:53 +msgid "i dont like this post (click again to cancel)" +msgstr "nu îmi place această postare (efectuați clic din nou pentru a anula)" + +#: skins/default/templates/question.html:57 +#: skins/default/templates/question.html:58 +msgid "mark this question as favorite (click again to cancel)" +msgstr "" +"marchează această întrebare ca favorită (efectuați clic din nou pentru a " +"anula)" + +#: skins/default/templates/question.html:64 +#: skins/default/templates/question.html:65 +msgid "remove favorite mark from this question (click again to restore mark)" +msgstr "" +"șterge această întrebare din grupul favoritelor (efectuați clic din nou " +"pentru a anula)" + +#: skins/default/templates/question.html:71 +msgid "Share this question on twitter" +msgstr "Partajează această întrebare pe twitter" + +#: skins/default/templates/question.html:72 +msgid "Share this question on facebook" +msgstr "Partajează această întrebare pe facebook" + +#: skins/default/templates/question.html:96 +msgid "retag" +msgstr "reetichetează" + +#: skins/default/templates/question.html:103 +msgid "reopen" +msgstr "redeschide" + +#: skins/default/templates/question.html:107 +msgid "close" +msgstr "închide" + +#: skins/default/templates/question.html:112 +#: skins/default/templates/question.html:253 +msgid "" +"report as offensive (i.e containing spam, advertising, malicious text, etc.)" +msgstr "" +"raportează ca ofensatoare (de ex. conține spam, reclame, texte rău-voitoare, " +"etc.)" + +#: skins/default/templates/question.html:113 +#: skins/default/templates/question.html:254 +msgid "flag offensive" +msgstr "marchează ofensiv" + +#: skins/default/templates/question.html:120 +#: skins/default/templates/question.html:264 +msgid "undelete" +msgstr "recuperează" + +#: skins/default/templates/question.html:120 +#: skins/default/templates/question.html:264 +#: skins/default/templates/authopenid/signin.html:149 +msgid "delete" +msgstr "șterge" + +#: skins/default/templates/question.html:157 +#, python-format +msgid "" +"The question has been closed for the following reason \"%(close_reason)s\" by" +msgstr "" +"Această întrebare a fost închisă din următoarele motive \"%(close_reason)s\" " +"de către" + +#: skins/default/templates/question.html:159 +#, python-format +msgid "close date %(closed_at)s" +msgstr "data închiderii %(closed_at)s" + +#: skins/default/templates/question.html:165 +#, python-format +msgid "" +"\n" +" %(counter)s Answer:\n" +" " +msgid_plural "" +"\n" +" %(counter)s Answers:\n" +" " +msgstr[0] "" +"\n" +" %(counter)s răspuns:\n" +" " +msgstr[1] "" +"\n" +" %(counter)s răspunsuri:\n" +" " +msgstr[2] "" +"\n" +" %(counter)s de răspunsuri:\n" +" " + +#: skins/default/templates/question.html:173 +msgid "oldest answers will be shown first" +msgstr "răspunsurile mai vechi vor fi afișate întâi" + +#: skins/default/templates/question.html:174 +msgid "oldest answers" +msgstr "cele mai vechi întrebări" + +#: skins/default/templates/question.html:176 +msgid "newest answers will be shown first" +msgstr "răspunsurile mai noi vor fi afișate întâi" + +#: skins/default/templates/question.html:177 +msgid "newest answers" +msgstr "cele mai noi răspunsuri" + +#: skins/default/templates/question.html:179 +msgid "most voted answers will be shown first" +msgstr "cele mai votate răspunsuri vor fi afișate întâi" + +#: skins/default/templates/question.html:180 +msgid "popular answers" +msgstr "răspunsuri populare" + +#: skins/default/templates/question.html:198 +#: skins/default/templates/question.html:199 +msgid "i like this answer (click again to cancel)" +msgstr "îmi place acest răspuns (efectuați clic din nou pentru a anula)" + +#: skins/default/templates/question.html:209 +#: skins/default/templates/question.html:210 +msgid "i dont like this answer (click again to cancel)" +msgstr "nu îmi place acest răspuns (efectuați clic din nou pentru a anula)" + +#: skins/default/templates/question.html:218 +#: skins/default/templates/question.html:219 +msgid "mark this answer as favorite (click again to undo)" +msgstr "" +"marchează acest răspuns ca favorit (efectuați clic din nou pentru a anula)" + +#: skins/default/templates/question.html:228 +#: skins/default/templates/question.html:229 +#, python-format +msgid "%(question_author)s has selected this answer as correct" +msgstr "%(question_author)s a ales acest răspuns ca fiind cel corect" + +#: skins/default/templates/question.html:244 +msgid "answer permanent link" +msgstr "legătură permanentă întrebare" + +#: skins/default/templates/question.html:245 +msgid "permanent link" +msgstr "legătură permanentă" + +#: skins/default/templates/question.html:314 +#: skins/default/templates/question.html:316 +msgid "Notify me once a day when there are any new answers" +msgstr "Notifică-mă o dată pe zi când apar răspunsuri noi" + +#: skins/default/templates/question.html:318 +msgid "Notify me weekly when there are any new answers" +msgstr "Notifică-mă o dată pe săptămână când apar răspunsuri noi" + +#: skins/default/templates/question.html:320 +msgid "Notify me immediately when there are any new answers" +msgstr "Notifică-mă imediat ce apar răspunsuri noi" + +#: skins/default/templates/question.html:323 +#, python-format +msgid "" +"You can always adjust frequency of email updates from your %(profile_url)s" +msgstr "" +"Puteți oricând să modificați frecvența notificărilor mergând la pagina " +"%(profile_url)s" + +#: skins/default/templates/question.html:328 +msgid "once you sign in you will be able to subscribe for any updates here" +msgstr "" +"odată ce vă veți autentifica, aici vă veți putea abona la orice actualizare" + +#: skins/default/templates/question.html:338 +msgid "Your answer" +msgstr "Răspunsul tău" + +#: skins/default/templates/question.html:340 +msgid "Be the first one to answer this question!" +msgstr "Fi primul care răspunde acestei întrebări!" + +#: skins/default/templates/question.html:346 +msgid "you can answer anonymously and then login" +msgstr "puteți răspunde anonim și vă puteți autentifica după aceea" + +#: skins/default/templates/question.html:350 +msgid "answer your own question only to give an answer" +msgstr "răspunde propriei întrebări doar pentru a oferi un răspuns" + +#: skins/default/templates/question.html:352 +msgid "please only give an answer, no discussions" +msgstr "vă rugăm să dați doar răspunsul, fără discuții" + +#: skins/default/templates/question.html:359 +msgid "Login/Signup to Post Your Answer" +msgstr "Autentifică-te / înregistrează-te pentru a adăuga răspunsul" + +#: skins/default/templates/question.html:362 +msgid "Answer Your Own Question" +msgstr "Răspunde propriei întrebări" + +#: skins/default/templates/question.html:364 +msgid "Answer the question" +msgstr "Răspunde întrebării" + +#: skins/default/templates/question.html:380 +msgid "Question tags" +msgstr "Etichete întrebare" + +#: skins/default/templates/question.html:397 +msgid "question asked" +msgstr "întrebare cu răspuns" + +#: skins/default/templates/question.html:400 +msgid "question was seen" +msgstr "întrebarea a fost văzută de" + +#: skins/default/templates/question.html:400 +msgid "times" +msgstr "ori" + +#: skins/default/templates/question.html:403 +msgid "last updated" +msgstr "ultima actualizare" + +#: skins/default/templates/question.html:410 +msgid "Related questions" +msgstr "Întrebări similare" + +#: skins/default/templates/question_edit.html:4 +#: skins/default/templates/question_edit.html:9 +msgid "Edit question" +msgstr "Modifică întrebarea" + +#: skins/default/templates/question_retag.html:3 +#: skins/default/templates/question_retag.html:5 +msgid "Change tags" +msgstr "Schimbă etichetele" + +#: skins/default/templates/question_retag.html:22 +msgid "Retag" +msgstr "Reetichetează" + +#: skins/default/templates/question_retag.html:30 +msgid "Why use and modify tags?" +msgstr "De ce să folosiți și să modificați etichetele?" + +#: skins/default/templates/question_retag.html:32 +msgid "Tags help to keep the content better organized and searchable" +msgstr "Etichetele ajută la organizarea și căutarea conținutului" + +#: skins/default/templates/question_retag.html:34 +msgid "tag editors receive special awards from the community" +msgstr "" +"cei care modifică etichetele primesc recompense speciale din partea " +"comunității" + +#: skins/default/templates/question_retag.html:75 +msgid "up to 5 tags, less than 20 characters each" +msgstr "până la 5 etichete, mai puțin de 20 de caractere pentru fiecare" + +#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5 +msgid "Reopen question" +msgstr "Redeschide întrebarea" + +#: skins/default/templates/reopen.html:6 +msgid "Title" +msgstr "Titlu" + +#: skins/default/templates/reopen.html:11 +#, python-format +msgid "" +"This question has been closed by \n" +" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n" +msgstr "" +"Această întrebare a fost închisă de \n" +" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n" + +#: skins/default/templates/reopen.html:16 +msgid "Close reason:" +msgstr "Motiv închidere:" + +#: skins/default/templates/reopen.html:19 +msgid "When:" +msgstr "Când:" + +#: skins/default/templates/reopen.html:22 +msgid "Reopen this question?" +msgstr "Redeschide această întrebare?" + +#: skins/default/templates/reopen.html:26 +msgid "Reopen this question" +msgstr "Redeschide această întrebare" + +#: skins/default/templates/revisions.html:4 +#: skins/default/templates/revisions.html:7 +msgid "Revision history" +msgstr "Istoric revizii" + +#: skins/default/templates/revisions.html:23 +msgid "click to hide/show revision" +msgstr "clic pentru a arătă/a ascunde revizia" + +#: skins/default/templates/revisions.html:29 +#, python-format +msgid "revision %(number)s" +msgstr "revizia %(number)s" + +#: skins/default/templates/subscribe_for_tags.html:3 +#: skins/default/templates/subscribe_for_tags.html:5 +msgid "Subscribe for tags" +msgstr "Abonare etichete" + +#: skins/default/templates/subscribe_for_tags.html:6 +msgid "Please, subscribe for the following tags:" +msgstr "Abonați-vă la următoarele etichete:" + +#: skins/default/templates/subscribe_for_tags.html:15 +msgid "Subscribe" +msgstr "Abonare" + +#: skins/default/templates/tags.html:4 skins/default/templates/tags.html:8 +msgid "Tag list" +msgstr "Listă etichete" + +#: skins/default/templates/tags.html:14 +msgid "sorted alphabetically" +msgstr "ordonate alfabetic" + +#: skins/default/templates/tags.html:15 +msgid "by name" +msgstr "după nume" + +#: skins/default/templates/tags.html:20 +msgid "sorted by frequency of tag use" +msgstr "ordonate după frecvența folosirii etichetei" + +#: skins/default/templates/tags.html:21 +msgid "by popularity" +msgstr "după popularitate" + +#: skins/default/templates/tags.html:26 +#, python-format +msgid "" +"All tags matching '<span class=\"darkred\"><strong>%(stag)s</strong></span>'" +msgstr "" +"Toate etichetele echivalente cu '<span " +"class=\"darkred\"><strong>%(stag)s</strong></span>'" + +#: skins/default/templates/tags.html:29 +msgid "Nothing found" +msgstr "Nu a fost găsit nimic" + +#: skins/default/templates/users.html:4 skins/default/templates/users.html:7 +msgid "Users" +msgstr "Utilizatori" + +#: skins/default/templates/users.html:13 skins/default/templates/users.html:14 +#: skins/default/templates/user_profile/user_info.html:25 +msgid "reputation" +msgstr "reputație" + +#: skins/default/templates/users.html:19 skins/default/templates/users.html:20 +msgid "recent" +msgstr "recent" + +#: skins/default/templates/users.html:31 skins/default/templates/users.html:32 +msgid "by username" +msgstr "după nume de utilizator" + +#: skins/default/templates/users.html:37 +#, python-format +msgid "users matching query %(suser)s:" +msgstr "" + +#: skins/default/templates/users.html:40 +msgid "Nothing found." +msgstr "Nu s-a găsit nimic." + +#: skins/default/templates/authopenid/changeemail.html:2 +#: skins/default/templates/authopenid/changeemail.html:8 +#: skins/default/templates/authopenid/changeemail.html:36 +msgid "Change email" +msgstr "Schimbare email" + +#: skins/default/templates/authopenid/changeemail.html:10 +msgid "Save your email address" +msgstr "Salvați adresa de email" + +#: skins/default/templates/authopenid/changeemail.html:15 +#, python-format +msgid "change %(email)s info" +msgstr "modifică informațiile despre %(email)s" + +#: skins/default/templates/authopenid/changeemail.html:17 +#, python-format +msgid "here is why email is required, see %(gravatar_faq_url)s" +msgstr "" +"pentru a afla de ce este necesară o adresă de e-mail, consultați " +"%(gravatar_faq_url)s" + +#: skins/default/templates/authopenid/changeemail.html:29 +msgid "Your new Email" +msgstr "Adresa nouă de e-mail" + +#: skins/default/templates/authopenid/changeemail.html:29 +msgid "Your Email" +msgstr "Adresa dumneavoastră de e-mail" + +#: skins/default/templates/authopenid/changeemail.html:36 +msgid "Save Email" +msgstr "Salvează adresa de e-mail" + +#: skins/default/templates/authopenid/changeemail.html:45 +msgid "Validate email" +msgstr "Validează adresa de e-mail" + +#: skins/default/templates/authopenid/changeemail.html:48 +#, python-format +msgid "validate %(email)s info or go to %(change_email_url)s" +msgstr "" +"validați informațiile despre %(email)s sau mergeți la %(change_email_url)s" + +#: skins/default/templates/authopenid/changeemail.html:52 +msgid "Email not changed" +msgstr "Adresa de e-mail nu a fost schimbată" + +#: skins/default/templates/authopenid/changeemail.html:55 +#, python-format +msgid "old %(email)s kept, if you like go to %(change_email_url)s" +msgstr "" +"vechea adresă %(email)s a fost păstrată, puteți merge, dacă doriți, la " +"%(change_email_url)s" + +#: skins/default/templates/authopenid/changeemail.html:59 +msgid "Email changed" +msgstr "Adresa de e-mail a fost schimbată" + +#: skins/default/templates/authopenid/changeemail.html:62 +#, python-format +msgid "your current %(email)s can be used for this" +msgstr "adresa curentă %(email)s poate fi utilizată pentru acest lucru" + +#: skins/default/templates/authopenid/changeemail.html:66 +msgid "Email verified" +msgstr "Adresa de e-mail a fost verificată" + +#: skins/default/templates/authopenid/changeemail.html:69 +msgid "thanks for verifying email" +msgstr "Mulțumim pentru verificarea adresei de e-mail" + +#: skins/default/templates/authopenid/changeemail.html:73 +msgid "email key not sent" +msgstr "cheia pentru adresa de e-mail nu a fost trimisă" + +#: skins/default/templates/authopenid/changeemail.html:76 +#, python-format +msgid "email key not sent %(email)s change email here %(change_link)s" +msgstr "" +"cheia pentru adresa de e-mail nu a fost trimisă %(email)s modificați adresa " +"de e-mail aici %(change_link)s" + +#: skins/default/templates/authopenid/complete.html:21 +#: skins/default/templates/authopenid/complete.html:23 +msgid "Registration" +msgstr "Înregistrare" + +#: skins/default/templates/authopenid/complete.html:27 +#, python-format +msgid "register new %(provider)s account info, see %(gravatar_faq_url)s" +msgstr "" +"înregistrați informații noi pentru contul %(provider)s, consultați " +"%(gravatar_faq_url)s" + +#: skins/default/templates/authopenid/complete.html:30 +#, python-format +msgid "" +"%(username)s already exists, choose another name for \n" +" %(provider)s. Email is required too, see " +"%(gravatar_faq_url)s\n" +" " +msgstr "" +"%(username)s există deja, alegeți un alt nume pentru \n" +" %(provider)s. Este necesară și o adresă de e-" +"mail, consultați %(gravatar_faq_url)s\n" +" " + +#: skins/default/templates/authopenid/complete.html:34 +#, python-format +msgid "" +"register new external %(provider)s account info, see %(gravatar_faq_url)s" +msgstr "" +"înregistrați informații noi pentru contul %(provider)s extern, consultați " +"%(gravatar_faq_url)s" + +#: skins/default/templates/authopenid/complete.html:37 +#, python-format +msgid "register new Facebook connect account info, see %(gravatar_faq_url)s" +msgstr "" +"înregistrați informații noi pentru conectarea prin contul Facebook, " +"consultați %(gravatar_faq_url)s" + +#: skins/default/templates/authopenid/complete.html:40 +msgid "This account already exists, please use another." +msgstr "Acest cont există deja, vă rugăm să utilizați un altul." + +#: skins/default/templates/authopenid/complete.html:59 +msgid "Screen name label" +msgstr "" + +#: skins/default/templates/authopenid/complete.html:66 +msgid "Email address label" +msgstr "" + +#: skins/default/templates/authopenid/complete.html:72 +#: skins/default/templates/authopenid/signup_with_password.html:36 +msgid "receive updates motivational blurb" +msgstr "" + +#: skins/default/templates/authopenid/complete.html:76 +#: skins/default/templates/authopenid/signup_with_password.html:40 +msgid "please select one of the options above" +msgstr "" + +#: skins/default/templates/authopenid/complete.html:79 +msgid "Tag filter tool will be your right panel, once you log in." +msgstr "" + +#: skins/default/templates/authopenid/complete.html:80 +msgid "create account" +msgstr "creaţi un cont" + +#: skins/default/templates/authopenid/confirm_email.txt:1 +msgid "Thank you for registering at our Q&A forum!" +msgstr "" + +#: skins/default/templates/authopenid/confirm_email.txt:3 +msgid "Your account details are:" +msgstr "Detaliile contului sunt:" + +#: skins/default/templates/authopenid/confirm_email.txt:5 +msgid "Username:" +msgstr "Nume utilizator:" + +#: skins/default/templates/authopenid/confirm_email.txt:6 +msgid "Password:" +msgstr "Parolă:" + +#: skins/default/templates/authopenid/confirm_email.txt:8 +msgid "Please sign in here:" +msgstr "" + +#: skins/default/templates/authopenid/confirm_email.txt:11 +#: skins/default/templates/authopenid/email_validation.txt:13 +msgid "" +"Sincerely,\n" +"Forum Administrator" +msgstr "" + +#: skins/default/templates/authopenid/email_validation.txt:1 +msgid "Greetings from the Q&A forum" +msgstr "" + +#: skins/default/templates/authopenid/email_validation.txt:3 +msgid "To make use of the Forum, please follow the link below:" +msgstr "" + +#: skins/default/templates/authopenid/email_validation.txt:7 +msgid "Following the link above will help us verify your email address." +msgstr "" + +#: skins/default/templates/authopenid/email_validation.txt:9 +msgid "" +"If you beleive that this message was sent in mistake - \n" +"no further action is needed. Just ingore this email, we apologize\n" +"for any inconvenience" +msgstr "" + +#: skins/default/templates/authopenid/macros.html:50 +msgid "Please enter your <span>user name</span>, then sign in" +msgstr "" + +#: skins/default/templates/authopenid/macros.html:51 +#: skins/default/templates/authopenid/signin.html:84 +msgid "(or select another login method above)" +msgstr "" + +#: skins/default/templates/authopenid/macros.html:53 +msgid "Sign in" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:4 +msgid "User login" +msgstr "Autentificare autilizator" + +#: skins/default/templates/authopenid/signin.html:12 +#, python-format +msgid "" +"\n" +" Your answer to %(title)s %(summary)s will be posted once you log in\n" +" " +msgstr "" + +#: skins/default/templates/authopenid/signin.html:19 +#, python-format +msgid "" +"Your question \n" +" %(title)s %(summary)s will be posted once you log in\n" +" " +msgstr "" + +#: skins/default/templates/authopenid/signin.html:26 +msgid "" +"Take a pick of your favorite service below to sign in using secure OpenID or " +"similar technology. Your external service password always stays confidential " +"and you don't have to rememeber or create another one." +msgstr "" + +#: skins/default/templates/authopenid/signin.html:29 +msgid "" +"It's a good idea to make sure that your existing login methods still work, " +"or add a new one. Please click any of the icons below to check/change or add " +"new login methods." +msgstr "" + +#: skins/default/templates/authopenid/signin.html:31 +msgid "" +"Please add a more permanent login method by clicking one of the icons below, " +"to avoid logging in via email each time." +msgstr "" + +#: skins/default/templates/authopenid/signin.html:35 +msgid "" +"Click on one of the icons below to add a new login method or re-validate an " +"existing one." +msgstr "" + +#: skins/default/templates/authopenid/signin.html:37 +msgid "" +"You don't have a method to log in right now, please add one or more by " +"clicking any of the icons below." +msgstr "" + +#: skins/default/templates/authopenid/signin.html:40 +msgid "" +"Please check your email and visit the enclosed link to re-connect to your " +"account" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:82 +msgid "Please enter your <span>user name and password</span>, then sign in" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:86 +msgid "Login failed, please try again" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:89 +msgid "Login name" +msgstr "Nume cont" + +#: skins/default/templates/authopenid/signin.html:93 +msgid "Password" +msgstr "Parolă" + +#: skins/default/templates/authopenid/signin.html:97 +msgid "Login" +msgstr "Autentificare" + +#: skins/default/templates/authopenid/signin.html:104 +msgid "To change your password - please enter the new one twice, then submit" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:107 +msgid "New password" +msgstr "Parolă nouă" + +#: skins/default/templates/authopenid/signin.html:112 +msgid "Please, retype" +msgstr "introduceți din nou" + +#: skins/default/templates/authopenid/signin.html:130 +msgid "Here are your current login methods" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:134 +msgid "provider" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:135 +msgid "last used" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:136 +msgid "delete, if you like" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:162 +msgid "Still have trouble signing in?" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:167 +msgid "Please, enter your email address below and obtain a new key" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:169 +msgid "Please, enter your email address below to recover your account" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:172 +msgid "recover your account via email" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:183 +msgid "Send a new recovery key" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:185 +msgid "Recover your account via email" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:196 +msgid "Why use OpenID?" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:199 +msgid "with openid it is easier" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:202 +msgid "reuse openid" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:205 +msgid "openid is widely adopted" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:208 +msgid "openid is supported open standard" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:212 +msgid "Find out more" +msgstr "" + +#: skins/default/templates/authopenid/signin.html:213 +msgid "Get OpenID" +msgstr "" + +#: skins/default/templates/authopenid/signup_with_password.html:4 +msgid "Signup" +msgstr "" + +#: skins/default/templates/authopenid/signup_with_password.html:10 +msgid "Please register by clicking on any of the icons below" +msgstr "" + +#: skins/default/templates/authopenid/signup_with_password.html:23 +msgid "or create a new user name and password here" +msgstr "" + +#: skins/default/templates/authopenid/signup_with_password.html:25 +msgid "Create login name and password" +msgstr "" + +#: skins/default/templates/authopenid/signup_with_password.html:26 +msgid "Traditional signup info" +msgstr "" + +#: skins/default/templates/authopenid/signup_with_password.html:44 +msgid "" +"Please read and type in the two words below to help us prevent automated " +"account creation." +msgstr "" + +#: skins/default/templates/authopenid/signup_with_password.html:47 +msgid "Create Account" +msgstr "" + +#: skins/default/templates/authopenid/signup_with_password.html:49 +msgid "or" +msgstr "sau" + +#: skins/default/templates/authopenid/signup_with_password.html:50 +msgid "return to OpenID login" +msgstr "" + +#: skins/default/templates/avatar/add.html:3 +msgid "add avatar" +msgstr "" + +#: skins/default/templates/avatar/add.html:5 +msgid "Change avatar" +msgstr "" + +#: skins/default/templates/avatar/add.html:6 +#: skins/default/templates/avatar/change.html:7 +msgid "Your current avatar: " +msgstr "" + +#: skins/default/templates/avatar/add.html:9 +#: skins/default/templates/avatar/change.html:11 +msgid "You haven't uploaded an avatar yet. Please upload one now." +msgstr "" + +#: skins/default/templates/avatar/add.html:13 +msgid "Upload New Image" +msgstr "" + +#: skins/default/templates/avatar/change.html:4 +msgid "change avatar" +msgstr "" + +#: skins/default/templates/avatar/change.html:17 +msgid "Choose new Default" +msgstr "" + +#: skins/default/templates/avatar/change.html:22 +msgid "Upload" +msgstr "Încarcă" + +#: skins/default/templates/avatar/confirm_delete.html:3 +msgid "delete avatar" +msgstr "șterge avatar" + +#: skins/default/templates/avatar/confirm_delete.html:5 +msgid "Please select the avatars that you would like to delete." +msgstr "" + +#: skins/default/templates/avatar/confirm_delete.html:7 +#, python-format +msgid "" +"You have no avatars to delete. Please <a " +"href=\"%(avatar_change_url)s\">upload one</a> now." +msgstr "" + +#: skins/default/templates/avatar/confirm_delete.html:13 +msgid "Delete These" +msgstr "" + +#: skins/default/templates/blocks/answer_edit_tips.html:3 +msgid "answer tips" +msgstr "indicații pentru răspunsuri" + +#: skins/default/templates/blocks/answer_edit_tips.html:6 +msgid "please make your answer relevant to this community" +msgstr "dați răspunsuri relevante pentru această comunitate" + +#: skins/default/templates/blocks/answer_edit_tips.html:9 +msgid "try to give an answer, rather than engage into a discussion" +msgstr "încercați să oferiți un răspuns, nu să vă angajați într-o discuție" + +#: skins/default/templates/blocks/answer_edit_tips.html:12 +msgid "please try to provide details" +msgstr "încercați să furnizați detalii" + +#: skins/default/templates/blocks/answer_edit_tips.html:15 +#: skins/default/templates/blocks/question_edit_tips.html:11 +msgid "be clear and concise" +msgstr "fiți clari și conciși" + +#: skins/default/templates/blocks/answer_edit_tips.html:19 +#: skins/default/templates/blocks/question_edit_tips.html:15 +msgid "see frequently asked questions" +msgstr "consultați secțiunea întrebărilor frecvente" + +#: skins/default/templates/blocks/answer_edit_tips.html:25 +#: skins/default/templates/blocks/question_edit_tips.html:20 +msgid "Markdown tips" +msgstr "indicii Markdown" + +#: skins/default/templates/blocks/answer_edit_tips.html:29 +#: skins/default/templates/blocks/question_edit_tips.html:24 +msgid "*italic*" +msgstr "*înclinat*" + +#: skins/default/templates/blocks/answer_edit_tips.html:32 +#: skins/default/templates/blocks/question_edit_tips.html:27 +msgid "**bold**" +msgstr "**îngroșat**" + +#: skins/default/templates/blocks/answer_edit_tips.html:36 +#: skins/default/templates/blocks/question_edit_tips.html:31 +msgid "*italic* or _italic_" +msgstr "*înclinat* sau __înclinat__" + +#: skins/default/templates/blocks/answer_edit_tips.html:39 +#: skins/default/templates/blocks/question_edit_tips.html:34 +msgid "**bold** or __bold__" +msgstr "**îngroșat** sau __îngroșat__" + +#: skins/default/templates/blocks/answer_edit_tips.html:43 +#: skins/default/templates/blocks/question_edit_tips.html:38 +msgid "link" +msgstr "legătură" + +#: skins/default/templates/blocks/answer_edit_tips.html:43 +#: skins/default/templates/blocks/answer_edit_tips.html:47 +#: skins/default/templates/blocks/question_edit_tips.html:38 +#: skins/default/templates/blocks/question_edit_tips.html:43 +msgid "text" +msgstr "text" + +#: skins/default/templates/blocks/answer_edit_tips.html:47 +#: skins/default/templates/blocks/question_edit_tips.html:43 +msgid "image" +msgstr "imagine" + +#: skins/default/templates/blocks/answer_edit_tips.html:51 +#: skins/default/templates/blocks/question_edit_tips.html:47 +msgid "numbered list:" +msgstr "listă numerotată:" + +#: skins/default/templates/blocks/answer_edit_tips.html:56 +#: skins/default/templates/blocks/question_edit_tips.html:52 +msgid "basic HTML tags are also supported" +msgstr "de asemenea sunt suportate tag-uri HTML simple" + +#: skins/default/templates/blocks/answer_edit_tips.html:60 +#: skins/default/templates/blocks/question_edit_tips.html:56 +msgid "learn more about Markdown" +msgstr "află mai multe despre Markdown" + +#: skins/default/templates/blocks/ask_form.html:7 +msgid "login to post question info" +msgstr "autentificați-vă pentru a pune o întrebare" + +#: skins/default/templates/blocks/ask_form.html:11 +#, python-format +msgid "" +"must have valid %(email)s to post, \n" +" see %(email_validation_faq_url)s\n" +" " +msgstr "" +"este necesar %(email)s valid pentru a posta, \n" +" vezi %(email_validation_faq_url)s\n" +" " + +#: skins/default/templates/blocks/ask_form.html:28 +msgid "Login/signup to post your question" +msgstr "" + +#: skins/default/templates/blocks/ask_form.html:30 +msgid "Ask your question" +msgstr "Puneți întrebarea" + +#: skins/default/templates/blocks/editor_data.html:5 +#, python-format +msgid "each tag must be shorter that %(max_chars)s character" +msgid_plural "each tag must be shorter than %(max_chars)s characters" +msgstr[0] "" +msgstr[1] "" + +#: skins/default/templates/blocks/editor_data.html:7 +#, python-format +msgid "please use %(tag_count)s tag" +msgid_plural "please use %(tag_count)s tags or less" +msgstr[0] "" +msgstr[1] "" + +#: skins/default/templates/blocks/editor_data.html:8 +#, python-format +msgid "" +"please use up to %(tag_count)s tags, less than %(max_chars)s characters each" +msgstr "" + +#: skins/default/templates/blocks/footer.html:5 +#: skins/default/templates/blocks/header_meta_links.html:12 +msgid "about" +msgstr "despre" + +#: skins/default/templates/blocks/footer.html:7 +msgid "privacy policy" +msgstr "politica de confidențialitate" + +#: skins/default/templates/blocks/footer.html:16 +msgid "give feedback" +msgstr "oferă o sugestie" + +#: skins/default/templates/blocks/header.html:8 +msgid "back to home page" +msgstr "înapoi la pagina de start" + +#: skins/default/templates/blocks/header.html:9 +#, python-format +msgid "%(site)s logo" +msgstr "siglă %(site)s" + +#: skins/default/templates/blocks/header.html:17 +msgid "questions" +msgstr "întrebări" + +#: skins/default/templates/blocks/header.html:27 +msgid "users" +msgstr "utilizatori" + +#: skins/default/templates/blocks/header.html:32 +msgid "badges" +msgstr "insigne" + +#: skins/default/templates/blocks/header.html:37 +msgid "ask a question" +msgstr "pune o întrebare" + +#: skins/default/templates/blocks/header_meta_links.html:8 +msgid "logout" +msgstr "ieșire" + +#: skins/default/templates/blocks/header_meta_links.html:10 +msgid "login" +msgstr "autentificare" + +#: skins/default/templates/blocks/header_meta_links.html:15 +msgid "settings" +msgstr "configurări" + +#: skins/default/templates/blocks/input_bar.html:34 +msgid "search" +msgstr "caută" + +#: skins/default/templates/blocks/question_edit_tips.html:3 +msgid "question tips" +msgstr "indicii căutare" + +#: skins/default/templates/blocks/question_edit_tips.html:5 +msgid "please ask a relevant question" +msgstr "puneți o întrebare relevantă" + +#: skins/default/templates/blocks/question_edit_tips.html:8 +msgid "please try provide enough details" +msgstr "încercați să oferiți suficiente detalii" + +#: skins/default/templates/blocks/tag_selector.html:4 +msgid "Interesting tags" +msgstr "Etichete interesante" + +#: skins/default/templates/blocks/tag_selector.html:18 +#: skins/default/templates/blocks/tag_selector.html:34 +#: skins/default/templates/user_profile/user_moderate.html:38 +msgid "Add" +msgstr "Adaugă" + +#: skins/default/templates/blocks/tag_selector.html:20 +msgid "Ignored tags" +msgstr "Etichete ignorate" + +#: skins/default/templates/blocks/tag_selector.html:36 +msgid "Display tag filter" +msgstr "Afișare filtre etichete" + +#: skins/default/templates/main_page/content.html:13 +msgid "Did not find what you were looking for?" +msgstr "Nu ați găsit ceea ce căutați?" + +#: skins/default/templates/main_page/content.html:14 +msgid "Please, post your question!" +msgstr "Vă rugăm să puneți o întrebare!" + +#: skins/default/templates/main_page/headline.html:7 +msgid "subscribe to the questions feed" +msgstr "abonarea la fluxul de întrebări" + +#: skins/default/templates/main_page/headline.html:8 +msgid "rss feed" +msgstr "flux fss" + +#: skins/default/templates/main_page/headline.html:12 views/readers.py:131 +#, python-format +msgid "%(q_num)s question, tagged" +msgid_plural "%(q_num)s questions, tagged" +msgstr[0] "" +msgstr[1] "" + +#: skins/default/templates/main_page/headline.html:14 views/readers.py:139 +#, python-format +msgid "%(q_num)s question" +msgid_plural "%(q_num)s questions" +msgstr[0] "" +msgstr[1] "" + +#: skins/default/templates/main_page/headline.html:17 +#, python-format +msgid "with %(author_name)s's contributions" +msgstr "" + +#: skins/default/templates/main_page/headline.html:28 +msgid "Search tips:" +msgstr "Indicii de căutare:" + +#: skins/default/templates/main_page/headline.html:31 +msgid "reset author" +msgstr "" + +#: skins/default/templates/main_page/headline.html:33 +#: skins/default/templates/main_page/headline.html:36 +#: skins/default/templates/main_page/nothing_found.html:18 +#: skins/default/templates/main_page/nothing_found.html:21 +msgid " or " +msgstr " sau " + +#: skins/default/templates/main_page/headline.html:34 +msgid "reset tags" +msgstr "resetare etichete" + +#: skins/default/templates/main_page/headline.html:37 +#: skins/default/templates/main_page/headline.html:40 +msgid "start over" +msgstr "începeți din nou" + +#: skins/default/templates/main_page/headline.html:42 +msgid " - to expand, or dig in by adding more tags and revising the query." +msgstr "" +" pentru a lărgi sau a filtra prin adăugarea mai multor etichete sau a " +"textului de căutat." + +#: skins/default/templates/main_page/headline.html:45 +msgid "Search tip:" +msgstr "Indiciu de căutare:" + +#: skins/default/templates/main_page/headline.html:45 +msgid "add tags and a query to focus your search" +msgstr "adăugarea de etichete și a mai multe cuvinte cheie pentru căutare" + +#: skins/default/templates/main_page/javascript.html:16 +#: skins/default/templates/main_page/javascript.html:17 +msgid "mark-tag/" +msgstr "" + +#: skins/default/templates/main_page/javascript.html:16 +msgid "interesting/" +msgstr "" + +#: skins/default/templates/main_page/javascript.html:17 +msgid "ignored/" +msgstr "" + +#: skins/default/templates/main_page/javascript.html:18 +msgid "unmark-tag/" +msgstr "" + +#: skins/default/templates/main_page/nothing_found.html:4 +msgid "There are no unanswered questions here" +msgstr "" + +#: skins/default/templates/main_page/nothing_found.html:7 +msgid "No favorite questions here. " +msgstr "" + +#: skins/default/templates/main_page/nothing_found.html:8 +msgid "Please start (bookmark) some questions when you visit them" +msgstr "" + +#: skins/default/templates/main_page/nothing_found.html:13 +msgid "You can expand your search by " +msgstr "Puteți extinde căutarea prin " + +#: skins/default/templates/main_page/nothing_found.html:16 +msgid "resetting author" +msgstr "" + +#: skins/default/templates/main_page/nothing_found.html:19 +msgid "resetting tags" +msgstr "" + +#: skins/default/templates/main_page/nothing_found.html:22 +#: skins/default/templates/main_page/nothing_found.html:25 +msgid "starting over" +msgstr "" + +#: skins/default/templates/main_page/nothing_found.html:30 +msgid "Please always feel free to ask your question!" +msgstr "" + +#: skins/default/templates/main_page/sidebar.html:5 +msgid "Contributors" +msgstr "Contribuitori" + +#: skins/default/templates/main_page/sidebar.html:22 +msgid "Related tags" +msgstr "Etichete asemămătoare" + +#: skins/default/templates/main_page/tab_bar.html:5 +msgid "In:" +msgstr "În:" + +#: skins/default/templates/main_page/tab_bar.html:14 +msgid "see unanswered questions" +msgstr "vezi întrebările fără răspuns" + +#: skins/default/templates/main_page/tab_bar.html:20 +msgid "see your favorite questions" +msgstr "vezi întrebările tale favorite" + +#: skins/default/templates/main_page/tab_bar.html:25 +msgid "Sort by:" +msgstr "Ordonează după:" + +#: skins/default/templates/user_profile/user.html:13 +#, python-format +msgid "%(username)s's profile" +msgstr "Profilul pentru %(username)s" + +#: skins/default/templates/user_profile/user_edit.html:4 +msgid "Edit user profile" +msgstr "Modifică profilul de utilizator" + +#: skins/default/templates/user_profile/user_edit.html:7 +msgid "edit profile" +msgstr "modifică profil" + +#: skins/default/templates/user_profile/user_edit.html:17 +#: skins/default/templates/user_profile/user_info.html:15 +msgid "change picture" +msgstr "schimbă poza" + +#: skins/default/templates/user_profile/user_edit.html:20 +msgid "Registered user" +msgstr "Utilizator înregistrat" + +#: skins/default/templates/user_profile/user_edit.html:27 +msgid "Screen Name" +msgstr "Nume afișat" + +#: skins/default/templates/user_profile/user_edit.html:83 +#: skins/default/templates/user_profile/user_email_subscriptions.html:21 +msgid "Update" +msgstr "Actualizează" + +#: skins/default/templates/user_profile/user_email_subscriptions.html:4 +#: skins/default/templates/user_profile/user_tabs.html:36 +msgid "subscriptions" +msgstr "abonamente" + +#: skins/default/templates/user_profile/user_email_subscriptions.html:7 +msgid "Email subscription settings" +msgstr "Configurări abonamente email" + +#: skins/default/templates/user_profile/user_email_subscriptions.html:8 +msgid "email subscription settings info" +msgstr "informații configurări abonamente email" + +#: skins/default/templates/user_profile/user_email_subscriptions.html:22 +msgid "Stop sending email" +msgstr "Nu mai trimite emailuri" + +#: skins/default/templates/user_profile/user_favorites.html:4 +#: skins/default/templates/user_profile/user_tabs.html:21 +msgid "favorites" +msgstr "favorite" + +#: skins/default/templates/user_profile/user_inbox.html:18 +#: skins/default/templates/user_profile/user_tabs.html:12 +msgid "inbox" +msgstr "inbox" + +#: skins/default/templates/user_profile/user_inbox.html:34 +msgid "Sections:" +msgstr "Secțiuni:" + +#: skins/default/templates/user_profile/user_inbox.html:38 +#, python-format +msgid "forum responses (%(re_count)s)" +msgstr "răspunsuri site (%(re_count)s)" + +#: skins/default/templates/user_profile/user_inbox.html:43 +#, python-format +msgid "flagged items (%(flag_count)s)" +msgstr "elemente marcate (%(flag_count)s)" + +#: skins/default/templates/user_profile/user_inbox.html:49 +msgid "select:" +msgstr "selectează:" + +#: skins/default/templates/user_profile/user_inbox.html:51 +msgid "seen" +msgstr "văzut" + +#: skins/default/templates/user_profile/user_inbox.html:52 +msgid "new" +msgstr "nou" + +#: skins/default/templates/user_profile/user_inbox.html:53 +msgid "none" +msgstr "niciunul" + +#: skins/default/templates/user_profile/user_inbox.html:54 +msgid "mark as seen" +msgstr "machează ca văzut" + +#: skins/default/templates/user_profile/user_inbox.html:55 +msgid "mark as new" +msgstr "marcează ca nou" + +#: skins/default/templates/user_profile/user_inbox.html:56 +msgid "dismiss" +msgstr "" + +#: skins/default/templates/user_profile/user_info.html:19 +msgid "remove" +msgstr "elimină" + +#: skins/default/templates/user_profile/user_info.html:33 +msgid "update profile" +msgstr "actualizează profil" + +#: skins/default/templates/user_profile/user_info.html:37 +msgid "manage login methods" +msgstr "administrează metodele de autentificare" + +#: skins/default/templates/user_profile/user_info.html:50 +msgid "real name" +msgstr "nume real" + +#: skins/default/templates/user_profile/user_info.html:55 +msgid "member for" +msgstr "membru de" + +#: skins/default/templates/user_profile/user_info.html:60 +msgid "last seen" +msgstr "văzut ultima dată" + +#: skins/default/templates/user_profile/user_info.html:66 +msgid "user website" +msgstr "pagină web utilizator" + +#: skins/default/templates/user_profile/user_info.html:72 +msgid "location" +msgstr "locație" + +#: skins/default/templates/user_profile/user_info.html:79 +msgid "age" +msgstr "vârstă" + +#: skins/default/templates/user_profile/user_info.html:80 +msgid "age unit" +msgstr "ani" + +#: skins/default/templates/user_profile/user_info.html:87 +msgid "todays unused votes" +msgstr "voturi nefolosite azi" + +#: skins/default/templates/user_profile/user_info.html:88 +msgid "votes left" +msgstr "voturi rămase" + +#: skins/default/templates/user_profile/user_moderate.html:4 +#: skins/default/templates/user_profile/user_tabs.html:42 +msgid "moderation" +msgstr "moderare" + +#: skins/default/templates/user_profile/user_moderate.html:8 +#, python-format +msgid "%(username)s's current status is \"%(status)s\"" +msgstr "starea curentă a utilizatorului %(username)s este „%(status)s”" + +#: skins/default/templates/user_profile/user_moderate.html:11 +msgid "User status changed" +msgstr "Starea utilizatorului a fost schimbată" + +#: skins/default/templates/user_profile/user_moderate.html:18 +msgid "Save" +msgstr "Salvează" + +#: skins/default/templates/user_profile/user_moderate.html:24 +#, python-format +msgid "Your current reputation is %(reputation)s points" +msgstr "Reputația curentă este %(reputation)s puncte" + +#: skins/default/templates/user_profile/user_moderate.html:26 +#, python-format +msgid "User's current reputation is %(reputation)s points" +msgstr "Reputația curentă a utilizatorului este %(reputation)s puncte" + +#: skins/default/templates/user_profile/user_moderate.html:30 +msgid "User reputation changed" +msgstr "Reputația utilizatorului a fost schimbată" + +#: skins/default/templates/user_profile/user_moderate.html:37 +msgid "Subtract" +msgstr "Scade" + +#: skins/default/templates/user_profile/user_moderate.html:42 +#, python-format +msgid "Send message to %(username)s" +msgstr "Trimite mesaj către %(username)s" + +#: skins/default/templates/user_profile/user_moderate.html:43 +msgid "" +"An email will be sent to the user with 'reply-to' field set to your email " +"address. Please make sure that your address is entered correctly." +msgstr "" +"Un mesaj email va fi trimis către utilizator cu câmpul „reply-to” definit la " +"adresa proprie de email. Verificați că adresa proprie este introdusă corect." + +#: skins/default/templates/user_profile/user_moderate.html:45 +msgid "Message sent" +msgstr "Mesaj trimis" + +#: skins/default/templates/user_profile/user_moderate.html:63 +msgid "Send message" +msgstr "Trimite mesaj" + +#: skins/default/templates/user_profile/user_recent.html:4 +#: skins/default/templates/user_profile/user_tabs.html:25 +msgid "activity" +msgstr "activitate" + +#: skins/default/templates/user_profile/user_reputation.html:4 +msgid "karma" +msgstr "reputație" + +#: skins/default/templates/user_profile/user_reputation.html:11 +msgid "Your karma change log." +msgstr "Schimbările în reputație." + +#: skins/default/templates/user_profile/user_reputation.html:13 +#, python-format +msgid "%(user_name)s's karma change log" +msgstr "schimbăr în reputația utilizatorului %(user_name)s" + +#: skins/default/templates/user_profile/user_stats.html:5 +#: skins/default/templates/user_profile/user_tabs.html:7 +msgid "overview" +msgstr "privire de ansamblu" + +#: skins/default/templates/user_profile/user_stats.html:11 +#, python-format +msgid "<span class=\"count\">%(counter)s</span> Question" +msgid_plural "<span class=\"count\">%(counter)s</span> Questions" +msgstr[0] "<span class=\"count\">%(counter)s</span> întrebare" +msgstr[1] "<span class=\"count\">%(counter)s</span> întrebări" +msgstr[2] "<span class=\"count\">%(counter)s</span> de întrebări" + +#: skins/default/templates/user_profile/user_stats.html:16 +#, python-format +msgid "<span class=\"count\">%(counter)s</span> Answer" +msgid_plural "<span class=\"count\">%(counter)s</span> Answers" +msgstr[0] "<span class=\"count\">%(counter)s</span> răspuns" +msgstr[1] "<span class=\"count\">%(counter)s</span> răspunsuri" +msgstr[2] "<span class=\"count\">%(counter)s</span> de răspunsuri" + +#: skins/default/templates/user_profile/user_stats.html:24 +#, python-format +msgid "the answer has been voted for %(answer_score)s times" +msgstr "răspunsul a fost votat de %(answer_score)s de ori" + +#: skins/default/templates/user_profile/user_stats.html:24 +msgid "this answer has been selected as correct" +msgstr "acest răspuns a fost ales drept corect" + +#: skins/default/templates/user_profile/user_stats.html:34 +#, python-format +msgid "(%(comment_count)s comment)" +msgid_plural "the answer has been commented %(comment_count)s times" +msgstr[0] "(%(comment_count)s comentariu)" +msgstr[1] "răspunsul a fost comentat de %(comment_count)s ori" +msgstr[2] "răspunsul a fost comentat de %(comment_count)s de ori" + +#: skins/default/templates/user_profile/user_stats.html:44 +#, python-format +msgid "<span class=\"count\">%(cnt)s</span> Vote" +msgid_plural "<span class=\"count\">%(cnt)s</span> Votes " +msgstr[0] "<span class=\"count\">%(cnt)s</span> vot" +msgstr[1] "<span class=\"count\">%(cnt)s</span> voturi" +msgstr[2] "<span class=\"count\">%(cnt)s</span> de voturi" + +#: skins/default/templates/user_profile/user_stats.html:50 +msgid "thumb up" +msgstr "" + +#: skins/default/templates/user_profile/user_stats.html:51 +msgid "user has voted up this many times" +msgstr "utilizatorul a votat pozitiv de atâtea ori" + +#: skins/default/templates/user_profile/user_stats.html:54 +msgid "thumb down" +msgstr "" + +#: skins/default/templates/user_profile/user_stats.html:55 +msgid "user voted down this many times" +msgstr "utilizatorul a votat negativ de atâtea ori" + +#: skins/default/templates/user_profile/user_stats.html:63 +#, python-format +msgid "<span class=\"count\">%(counter)s</span> Tag" +msgid_plural "<span class=\"count\">%(counter)s</span> Tags" +msgstr[0] "<span class=\"count\">%(counter)s</span> etichetă" +msgstr[1] "<span class=\"count\">%(counter)s</span> etichete" +msgstr[2] "<span class=\"count\">%(counter)s</span> de etichete" + +#: skins/default/templates/user_profile/user_stats.html:99 +#, python-format +msgid "<span class=\"count\">%(counter)s</span> Badge" +msgid_plural "<span class=\"count\">%(counter)s</span> Badges" +msgstr[0] "<span class=\"count\">%(counter)s</span> insignă" +msgstr[1] "<span class=\"count\">%(counter)s</span> insigne" +msgstr[2] "<span class=\"count\">%(counter)s</span> de insigne" + +#: skins/default/templates/user_profile/user_tabs.html:5 +msgid "User profile" +msgstr "Profil utilizator" + +#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:728 +msgid "comments and answers to others questions" +msgstr "comentarii și răspunsuri pentru întrebările altora" + +#: skins/default/templates/user_profile/user_tabs.html:15 +msgid "graph of user reputation" +msgstr "graficul reputației utilizatorului" + +#: skins/default/templates/user_profile/user_tabs.html:17 +msgid "reputation history" +msgstr "istorie reputație" + +#: skins/default/templates/user_profile/user_tabs.html:19 +msgid "questions that user selected as his/her favorite" +msgstr "întrebări pe care utilizatorul le-a ales ca fiind favorite" + +#: skins/default/templates/user_profile/user_tabs.html:23 +msgid "recent activity" +msgstr "activitate recentă" + +#: skins/default/templates/user_profile/user_tabs.html:28 views/users.py:792 +msgid "user vote record" +msgstr "istoria voturilor utilizatorului" + +#: skins/default/templates/user_profile/user_tabs.html:30 +msgid "casted votes" +msgstr "voturi date" + +#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:897 +msgid "email subscription settings" +msgstr "configurări abonament email" + +#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:212 +msgid "moderate this user" +msgstr "moderează acest utilizator" + +#: skins/default/templates/user_profile/user_votes.html:4 +msgid "votes" +msgstr "voturi" + +#: skins/default/templates/user_profile/users_questions.html:9 +#: skins/default/templates/user_profile/users_questions.html:17 +#, python-format +msgid "this questions was selected as favorite %(cnt)s time" +msgid_plural "this questions was selected as favorite %(cnt)s times" +msgstr[0] "aceste întrebări au fost alese ca favorite %(cnt)s dată" +msgstr[1] "aceste întrebări au fost alese ca favorite de %(cnt)s ori" +msgstr[2] "aceste întrebări au fost alese ca favorite de %(cnt)s de ori" + +#: skins/default/templates/user_profile/users_questions.html:10 +msgid "thumb-up on" +msgstr "" + +#: skins/default/templates/user_profile/users_questions.html:18 +msgid "thumb-up off" +msgstr "" + +#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:227 +msgid "no items in counter" +msgstr "nu sunt elemente în contor" + +#: utils/decorators.py:82 views/commands.py:128 views/commands.py:145 +msgid "Oops, apologies - there was some error" +msgstr "Oops, ne cerem scuze - a apărut o eroare" + +#: utils/forms.py:32 +msgid "this field is required" +msgstr "acest câmp este obligatoriu" + +#: utils/forms.py:46 +msgid "choose a username" +msgstr "alegeți un nume de utilizator" + +#: utils/forms.py:52 +msgid "user name is required" +msgstr "numele de utilizator este obligatoriu" + +#: utils/forms.py:53 +msgid "sorry, this name is taken, please choose another" +msgstr "ne pare rău, acest nume este luat, alegeți un alt nume" + +#: utils/forms.py:54 +msgid "sorry, this name is not allowed, please choose another" +msgstr "ne pare rău, acest nume nu este permis, alegeți un alt nume" + +#: utils/forms.py:55 +msgid "sorry, there is no user with this name" +msgstr "ne pare rău, nu există nici un utilizator cu acest nume" + +#: utils/forms.py:56 +msgid "sorry, we have a serious error - user name is taken by several users" +msgstr "" +"ne pare rău, avem o problemă gravă, numele de utilizator este luat de mai " +"mult utilizatori" + +#: utils/forms.py:57 +msgid "user name can only consist of letters, empty space and underscore" +msgstr "" +"numele de utilizator poate fi format doar din litere, spații și liniuță de " +"subliniere" + +#: utils/forms.py:118 +msgid "your email address" +msgstr "adresa de email" + +#: utils/forms.py:119 +msgid "email address is required" +msgstr "adresa de email este obligatorie" + +#: utils/forms.py:120 +msgid "please enter a valid email address" +msgstr "introduceți o adresă de email validă" + +#: utils/forms.py:121 +msgid "this email is already used by someone else, please choose another" +msgstr "" +"această adresă de email este deja folosită de un alt utilizator, folosiți o " +"altă adresă" + +#: utils/forms.py:149 +msgid "choose password" +msgstr "alegeți parola" + +#: utils/forms.py:150 +msgid "password is required" +msgstr "parola este obligatorie" + +#: utils/forms.py:153 +msgid "retype password" +msgstr "retastați parola" + +#: utils/forms.py:154 +msgid "please, retype your password" +msgstr "retastați parola" + +#: utils/forms.py:155 +msgid "sorry, entered passwords did not match, please try again" +msgstr "ne pare rău, parolele tastate nu sunt identice, încercați din nou" + +#: utils/functions.py:63 +#, python-format +msgid "on %(date)s" +msgstr "în %(date)s" + +#: utils/functions.py:67 +msgid "2 days ago" +msgstr "acum 2 zile" + +#: utils/functions.py:69 +msgid "yesterday" +msgstr "ieri" + +#: utils/functions.py:71 +#, python-format +msgid "%(hr)d hour ago" +msgid_plural "%(hr)d hours ago" +msgstr[0] "acum %(hr)d oră" +msgstr[1] "acum %(hr)d ore" +msgstr[2] "acum %(hr)d de ore" + +#: utils/functions.py:73 +#, python-format +msgid "%(min)d min ago" +msgid_plural "%(min)d mins ago" +msgstr[0] "acum %(min)d minut" +msgstr[1] "acum %(min)d minute" +msgstr[2] "acum %(min)d de minute" + +#: views/avatar_views.py:94 +msgid "Successfully uploaded a new avatar." +msgstr "A încărcat cu succes un avatar nou." + +#: views/avatar_views.py:134 +msgid "Successfully updated your avatar." +msgstr "Ați actualizat cu succes propriul avatar." + +#: views/avatar_views.py:173 +msgid "Successfully deleted the requested avatars." +msgstr "Ați șters cu succes avatarele cerute." + +#: views/commands.py:38 +msgid "anonymous users cannot vote" +msgstr "utilizatorii anonimi nu pot vota" + +#: views/commands.py:58 +msgid "Sorry you ran out of votes for today" +msgstr "" +"Ne pare rău, dar nu mai aveți voturi pentru azi... și mâine este o zi" + +#: views/commands.py:64 +#, python-format +msgid "You have %(votes_left)s votes left for today" +msgstr "Mai ai %(votes_left)s voturi pentru azi" + +#: views/commands.py:135 +msgid "Sorry, but anonymous users cannot access the inbox" +msgstr "Ne pare rău dar utilizatorii anonimi nu pot accesa inboxul" + +#: views/commands.py:205 +msgid "Sorry, something is not right here..." +msgstr "Ne pare rău dar ceva nu este în regulă aici" + +#: views/commands.py:220 +msgid "Sorry, but anonymous users cannot accept answers" +msgstr "Ne pare rău dar utilizatorii anonimi nu pot accepta răspunsuri" + +#: views/commands.py:301 +#, python-format +msgid "subscription saved, %(email)s needs validation, see %(details_url)s" +msgstr "abonament salvat, %(email)s necesită validare, vezi %(details_url)s" + +#: views/commands.py:309 +msgid "email update frequency has been set to daily" +msgstr "frecvența de actualizare a emailurilor a fost definită drept zilnic" + +#: views/commands.py:400 +#, python-format +msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)." +msgstr "" +"Abonomanetul la etichetă a fost anulat (<a href=\"%(url)s\">refă</a>)." + +#: views/commands.py:409 +#, python-format +msgid "Please sign in to subscribe for: %(tags)s" +msgstr "Vă rugăm să vă autentificați pentru a vă abona la: %(tags)s" + +#: views/meta.py:63 +msgid "Q&A forum feedback" +msgstr "Sugestii pentru întrebări și răspunsuri" + +#: views/meta.py:64 +msgid "Thanks for the feedback!" +msgstr "Vă mulțumim pentru sugestii!" + +#: views/meta.py:72 +msgid "" +"We look forward to hearing your feedback! Please, give it next time :)" +msgstr "Suntem interesați de sugestiile voastre!" + +#: views/readers.py:177 +#, python-format +msgid "%(badge_count)d %(badge_level)s badge" +msgid_plural "%(badge_count)d %(badge_level)s badges" +msgstr[0] "%(badge_count)d %(badge_level)s insignă" +msgstr[1] "%(badge_count)d %(badge_level)s insigne" +msgstr[2] "%(badge_count)d %(badge_level)s de insigne" + +#: views/readers.py:403 +msgid "" +"Sorry, the comment you are looking for has been deleted and is no longer " +"accessible" +msgstr "" +"Ne pare rău, comentariul pe care îl căutați a fost șters nu mai este " +"accesibil" + +#: views/users.py:213 +msgid "moderate user" +msgstr "moderează utilizator" + +#: views/users.py:377 +msgid "user profile" +msgstr "profil utilizator" + +#: views/users.py:378 +msgid "user profile overview" +msgstr "privire de ansamblu profil utilizator" + +#: views/users.py:661 +msgid "recent user activity" +msgstr "activitate recentă utilizator" + +#: views/users.py:662 +msgid "profile - recent activity" +msgstr "profil - activitate recentă" + +#: views/users.py:729 +msgid "profile - responses" +msgstr "profil - răspunsuri" + +#: views/users.py:793 +msgid "profile - votes" +msgstr "profil - voturi" + +#: views/users.py:828 +msgid "user reputation in the community" +msgstr "reputația utilizatorului în comunitate" + +#: views/users.py:829 +msgid "profile - user reputation" +msgstr "profil - reputație utilizator" + +#: views/users.py:856 +msgid "users favorite questions" +msgstr "întrebările favorite ale utilizatorului" + +#: views/users.py:857 +msgid "profile - favorite questions" +msgstr "profile - întrebări favorite" + +#: views/users.py:876 views/users.py:880 +msgid "changes saved" +msgstr "schimbările au fost salvate" + +#: views/users.py:886 +msgid "email updates canceled" +msgstr "actualizările email au fost anulate" + +#: views/users.py:898 +msgid "profile - email subscriptions" +msgstr "profil - abonamente email" + +#: views/writers.py:57 +msgid "Sorry, anonymous users cannot upload files" +msgstr "Utilizatorii anonimi nu pot încărca fișiere" + +#: views/writers.py:67 +#, python-format +msgid "allowed file types are '%(file_types)s'" +msgstr "tipurile de fișiere permise sunt „%(file_types)s”" + +#: views/writers.py:90 +#, python-format +msgid "maximum upload file size is %(file_size)sK" +msgstr "mărimea maximă a fișierului încărcat este %(file_size)sK" + +#: views/writers.py:98 +msgid "" +"Error uploading file. Please contact the site administrator. Thank you." +msgstr "" +"Eroare la încărcarea fișierului. Vă rugăm să contactați administratorii " +"siteului. Vă mulțumim." + +#: views/writers.py:560 +#, python-format +msgid "" +"Sorry, you appear to be logged out and cannot post comments. Please <a " +"href=\"%(sign_in_url)s\">sign in</a>." +msgstr "" +"Nu sunteți autentificat și nu puteți adăuga comentarii . Vă rugăm să vă <a " +"href=\"%(sign_in_url)s\">autentificați</a>." + +#: views/writers.py:605 +msgid "Sorry, anonymous users cannot edit comments" +msgstr "Utilizatorii anonimi nu pot modifica comentariile" + +#: views/writers.py:613 +#, python-format +msgid "" +"Sorry, you appear to be logged out and cannot delete comments. Please <a " +"href=\"%(sign_in_url)s\">sign in</a>." +msgstr "" +"Nu sunteți autentificat și nu puteți șterge comentarii . Vă rugăm să vă <a " +"href=\"%(sign_in_url)s\">autentificați</a>." + +#: views/writers.py:634 +msgid "sorry, we seem to have some technical difficulties" +msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice" + +msgid "Email verification subject line" +msgstr "Linie subiect verificare email" + +msgid "how to validate email title" +msgstr "cum să fie validat titlul email-ului" + +msgid "" +"how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)s" +msgstr "" +"cum să fie validate informațiile email cu %(send_email_key_url)s " +"%(gravatar_faq_url)s" + +msgid "more answers" +msgstr "mai multe răspunsuri" + +msgid "popular" +msgstr "popular" + +msgid "reputation points" +msgstr "puncte reputație" diff --git a/askbot/management/commands/post_emailed_questions.py b/askbot/management/commands/post_emailed_questions.py new file mode 100644 index 00000000..b80eb188 --- /dev/null +++ b/askbot/management/commands/post_emailed_questions.py @@ -0,0 +1,207 @@ +"""Copyright 2011 Askbot.org and Askbot project contributors. + +Custom management command that takes questions posted +via email at the IMAP server +Expects subject line of emails to have format: +[Tag1, Tag2] Question title + +Tags can be entered as multiword, but the space character +within the tag may be replaced with a dash, per live +setting EMAIL_REPLACE_SPACE_IN_TAGS +also, to make use of this command, the feature must +be enabled via ALLOW_ASKING_BY_EMAIL +and IMAP settings in the settings.py must be configured +correctly + +todo: use templates for the email formatting +""" +import imaplib +import email +import quopri +import base64 +from django.conf import settings as django_settings +from django.core.management.base import NoArgsCommand, CommandError +from django.core import exceptions +from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import string_concat +from django.core.urlresolvers import reverse +from askbot.conf import settings as askbot_settings +from askbot.utils import mail +from askbot import models +from askbot.forms import AskByEmailForm + +USAGE = _( +"""<p>To ask by email, please:</p> +<ul> + <li>Format the subject line as: [Tag1; Tag2] Question title</li> + <li>Type details of your question into the email body</li> +</ul> +<p>Note that tags may consist of more than one word, and tags +may be separated by a semicolon or a comma</p> +""" +) + +def bounce_email(email, subject, reason = None, body_text = None): + """sends a bounce email at address ``email``, with the subject + line ``subject``, accepts several reasons for the bounce: + + * ``'problem_posting'``, ``unknown_user`` and ``permission_denied`` + * ``body_text`` in an optional parameter that allows to append + extra text to the message + """ + if reason == 'problem_posting': + error_message = _( + '<p>Sorry, there was an error posting your question ' + 'please contact the %(site)s administrator</p>' + ) % {'site': askbot_settings.APP_SHORT_NAME} + error_message = string_concat(error_message, USAGE) + elif reason == 'unknown_user': + error_message = _( + '<p>Sorry, in order to post questions on %(site)s ' + 'by email, please <a href="%(url)s">register first</a></p>' + ) % { + 'site': askbot_settings.APP_SHORT_NAME, + 'url': askbot_settings.APP_URL + reverse('user_signin') + } + elif reason == 'permission_denied': + error_message = _( + '<p>Sorry, your question could not be posted ' + 'due to insufficient privileges of your user account</p>' + ) + else: + raise ValueError('unknown reason to bounce an email: "%s"' % reason) + + if body_text != None: + error_message = string_concat(error_message, body_text) + + #print 'sending email' + #print email + #print subject + #print error_message + mail.send_mail( + recipient_list = (email,), + subject_line = 'Re: ' + subject, + body_text = error_message + ) + +class CannotParseEmail(Exception): + """This exception will bounce the email""" + def __init__(self, email, subject): + super(CannotParseEmail, self).__init__() + bounce_email(email, subject, reason = 'problem_posting') + +def parse_message(msg): + """returns a tuple + (<from email address>, <subject>, <body>) + the function will attempt to decode the email + supported encodings are "quoted-printable" and "base64" + not supported - emails using language - specific encodings + """ + sender = msg.get('From') + subject = msg.get('Subject') + if msg.is_multipart(): + msg = msg.get_payload() + if isinstance(msg, list): + raise CannotParseEmail(sender, subject) + + ctype = msg.get_content_type()#text/plain only + raw_body = msg.get_payload()#text/plain only + encoding = msg.get('Content-Transfer-Encoding') + if encoding == 'base64': + body = base64.b64decode(raw_body) + elif encoding == 'quoted-printable': + body = quopri.decodestring(raw_body) + else: + body = raw_body + return (sender, subject, body) + + +class Command(NoArgsCommand): + def handle_noargs(self, **options): + """reads all emails from the INBOX of + imap server and posts questions based on + those emails. Badly formatted questions are + bounced, as well as emails from unknown users + + all messages are deleted thereafter + """ + if askbot_settings.ALLOW_ASKING_BY_EMAIL: + raise CommandError('Asking by email is not enabled') + + #open imap server and select the inbox + if django_settings.IMAP_USE_TLS: + imap_getter = imaplib.IMAP4_SSL + else: + imap_getter = imaplib.IMAP4 + imap = imap_getter( + django_settings.IMAP_HOST, + django_settings.IMAP_PORT + ) + imap.login( + django_settings.IMAP_HOST_USER, + django_settings.IMAP_HOST_PASSWORD + ) + imap.select('INBOX') + + #get message ids + status, ids = imap.search(None, 'ALL') + + #for each id - read a message, parse it and post a question + for id in ids[0].split(' '): + t, data = imap.fetch(id, '(RFC822)') + message_body = data[0][1] + msg = email.message_from_string(data[0][1]) + imap.store(id, '+FLAGS', '\\Deleted') + try: + (sender, subject, body) = parse_message(msg) + except CannotParseEmail, e: + continue + data = { + 'sender': sender, + 'subject': subject, + 'body_text': body + } + form = AskByEmailForm(data) + print data + if form.is_valid(): + email_address = form.cleaned_data['email'] + try: + print 'looking for ' + email_address + user = models.User.objects.get(email = email_address) + except models.User.DoesNotExist: + bounce_email(email_address, subject, reason = 'unknown_user') + except models.User.MultipleObjectsReturned: + bounce_email(email_address, subject, reason = 'problem_posting') + + tagnames = form.cleaned_data['tagnames'] + title = form.cleaned_data['title'] + body_text = form.cleaned_data['body_text'] + + try: + print 'posting question' + print title + print tagnames + print body_text + user.post_question( + title = title, + tags = tagnames, + body_text = body_text + ) + except exceptions.PermissionDenied, e: + bounce_email( + email_address, + subject, + reason = 'permission_denied', + body_text = unicode(e) + ) + else: + email_address = mail.extract_first_email_address(sender) + if email_address: + bounce_email( + email_address, + subject, + reason = 'problem_posting' + ) + imap.expunge() + imap.close() + imap.logout() diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py index 6ef9e4a1..a4d21caa 100644 --- a/askbot/models/__init__.py +++ b/askbot/models/__init__.py @@ -2078,9 +2078,9 @@ def record_post_update_activity( if newly_mentioned_users is None: newly_mentioned_users = list() - from askbot.tasks import record_post_update_task + from askbot import tasks - record_post_update_task.delay( + tasks.record_post_update_celery_task.delay( post_id = post.id, post_content_type_id = ContentType.objects.get_for_model(post).id, newly_mentioned_user_id_list = [u.id for u in newly_mentioned_users], @@ -2088,6 +2088,14 @@ def record_post_update_activity( timestamp = timestamp, created = created, ) + #non-celery version + #tasks.record_post_update( + # post = post, + # newly_mentioned_users = newly_mentioned_users, + # updated_by = updated_by, + # timestamp = timestamp, + # created = created, + #) def record_award_event(instance, created, **kwargs): diff --git a/askbot/models/content.py b/askbot/models/content.py index 3ce219ed..84bd2421 100644 --- a/askbot/models/content.py +++ b/askbot/models/content.py @@ -6,7 +6,7 @@ from django.utils import html as html_utils from askbot import const from askbot.models.meta import Comment, Vote from askbot.models.user import EmailFeedSetting -from askbot.models.tag import Tag, MarkedTag +from askbot.models.tag import Tag, MarkedTag, tags_match_some_wildcard from askbot.conf import settings as askbot_settings class Content(models.Model): @@ -96,7 +96,6 @@ class Content(models.Model): def get_global_tag_based_subscribers( self, - tags = None, tag_mark_reason = None, subscription_records = None ): @@ -116,8 +115,9 @@ class Content(models.Model): raise ValueError('Uknown value of tag mark reason %s' % tag_mark_reason) #part 1 - find users who follow or not ignore the set of tags + tag_names = self.get_tag_names() tag_selections = MarkedTag.objects.filter( - tag__in = tags, + tag__name__in = tag_names, reason = tag_mark_reason ) subscribers = set( @@ -144,7 +144,7 @@ class Content(models.Model): elif tag_mark_reason == 'bad': empty_wildcard_filter = {'ignored_tags__exact': ''} wildcard_tags_attribute = 'ignored_tags' - update_subscribers = lambda the_set, item: the_set.remove(item) + update_subscribers = lambda the_set, item: the_set.discard(item) potential_wildcard_subscribers = User.objects.filter( notification_subscriptions__in = subscription_records @@ -159,7 +159,7 @@ class Content(models.Model): wildcard_tags_attribute ).split(' ') - if tags.tags_match_some_wildcard(wildcard_tags): + if tags_match_some_wildcard(tag_names, wildcard_tags): update_subscribers(subscribers, potential_subscriber) return subscribers @@ -174,8 +174,6 @@ class Content(models.Model): todo: retrieval of wildcard tag followers ignorers won't scale at all """ - tags = self.tags.all() - subscriber_set = set() global_subscriptions = EmailFeedSetting.objects.filter( @@ -192,7 +190,6 @@ class Content(models.Model): #segment of users who want emails on selected questions only subscriber_set.update( self.get_global_tag_based_subscribers( - tags = tags, subscription_records = global_subscriptions, tag_mark_reason = 'good' ) @@ -201,7 +198,6 @@ class Content(models.Model): #segment of users who want to exclude ignored tags subscriber_set.update( self.get_global_tag_based_subscribers( - tags = tags, subscription_records = global_subscriptions, tag_mark_reason = 'bad' ) @@ -219,11 +215,28 @@ class Content(models.Model): receive instant notifications for a given post this method works for questions and answers - parameter "potential_subscribers" is not used here, - but left for the uniformity of the interface (Comment method does use it) - - comment class has it's own variant which does have quite a bit - of duplicated code at the moment + Arguments: + + * ``potential_subscribers`` is not used here! todo: why? - clean this out + parameter is left for the uniformity of the interface + (Comment method does use it) + normally these methods would determine the list + :meth:`~askbot.models.question.Question.get_response_recipients` + :meth:`~askbot.models.question.Answer.get_response_recipients` + - depending on the type of the post + * ``mentioned_users`` - users, mentioned in the post for the first time + * ``exclude_list`` - users who must be excluded from the subscription + + Users who receive notifications are: + + * of ``mentioned_users`` - those who subscribe for the instant + updates on the @name mentions + * those who follow the parent question + * global subscribers (any personalized tag filters are applied) + * author of the question who subscribe to instant updates + on questions that they asked + * authors or any answers who subsribe to instant updates + on the questions which they answered """ #print '------------------' #print 'in content function' diff --git a/askbot/models/meta.py b/askbot/models/meta.py index f9df0619..290f5ef0 100644 --- a/askbot/models/meta.py +++ b/askbot/models/meta.py @@ -164,17 +164,17 @@ class Comment(base.MetaContent, base.UserContent): return const.TYPE_ACTIVITY_COMMENT_ANSWER, self def get_response_receivers(self, exclude_list = None): - """get list of users who authored comments on a post - and the post itself + """Response receivers are commenters of the + same post and the authors of the post itself. """ assert(exclude_list is not None) users = set() + #get authors of parent object and all associated comments users.update( - #get authors of parent object and all associated comments - self.content_object.get_author_list( - include_comments = True, - ) + self.content_object.get_author_list( + include_comments = True, ) + ) users -= set(exclude_list) return list(users) @@ -184,10 +184,20 @@ class Comment(base.MetaContent, base.UserContent): mentioned_users = None, exclude_list = None ): - """get list of users who want instant notifications - about this comment + """get list of users who want instant notifications about comments argument potential_subscribers is required as it saves on db hits + + Here is the list of people who will receive the notifications: + + * mentioned users + * of response receivers + (see :meth:`~askbot.models.meta.Comment.get_response_receivers`) - + those who subscribe for the instant + updates on comments and @mentions + * all who follow the question explicitly + * all global subscribers + (tag filtered, and subject to personalized settings) """ #print 'in meta function' #print 'potential subscribers: ', potential_subscribers diff --git a/askbot/models/question.py b/askbot/models/question.py index bf4ab0d3..d1570877 100644 --- a/askbot/models/question.py +++ b/askbot/models/question.py @@ -41,6 +41,8 @@ QUESTION_ORDER_BY_MAP = { } class QuestionQuerySet(models.query.QuerySet): + """Custom query set subclass for :class:`~askbot.models.Question` + """ def create_new( self, title = None, diff --git a/askbot/models/tag.py b/askbot/models/tag.py index acfc9413..73aa328f 100644 --- a/askbot/models/tag.py +++ b/askbot/models/tag.py @@ -5,6 +5,17 @@ from django.utils.translation import ugettext as _ from askbot.models.base import DeletableContent from askbot.models.base import BaseQuerySetManager +def tags_match_some_wildcard(tag_names, wildcard_tags): + """Same as + :meth:`~askbot.models.tag.TagQuerySet.tags_match_some_wildcard` + except it works on tag name strings + """ + for tag_name in tag_names: + for wildcard_tag in sorted(wildcard_tags): + if tag_name.startswith(wildcard_tag[:-1]): + return True + return False + class TagQuerySet(models.query.QuerySet): UPDATE_USED_COUNTS_QUERY = """ UPDATE tag @@ -35,6 +46,8 @@ class TagQuerySet(models.query.QuerySet): matches a wildcard :arg:`wildcard_tags` is an iterable of wildcard tag strings + + todo: refactor to use :func:`tags_match_some_wildcard` """ for tag in self.all(): for wildcard_tag in sorted(wildcard_tags): diff --git a/askbot/setup_templates/settings.py b/askbot/setup_templates/settings.py index b1709a0a..5ded3e17 100644 --- a/askbot/setup_templates/settings.py +++ b/askbot/setup_templates/settings.py @@ -24,7 +24,7 @@ DATABASE_PASSWORD = '' # Not used with sqlite3. DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3. DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. -#mail server settings +#outgoing mail server settings SERVER_EMAIL = '' DEFAULT_FROM_EMAIL = '' EMAIL_HOST_USER = '' @@ -35,6 +35,21 @@ EMAIL_PORT='' EMAIL_USE_TLS=False EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' +#incoming mail settings +#after filling out these settings - please +#go to the site's live settings and enable the feature +#"Email settings" -> "allow asking by email" +# +# WARNING: command post_emailed_questions DELETES all +# emails from the mailbox each time +# do not use your personal mail box here!!! +# +IMAP_HOST = '' +IMAP_HOST_USER = '' +IMAP_HOST_PASSWORD = '' +IMAP_PORT = '' +IMAP_USE_TLS = False + # Local time zone for this installation. Choices can be found here: # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name # although not all choices may be available on all operating systems. diff --git a/askbot/tasks.py b/askbot/tasks.py index e230be31..8dfea5b4 100644 --- a/askbot/tasks.py +++ b/askbot/tasks.py @@ -1,3 +1,22 @@ +"""Definitions of Celery tasks in Askbot +in this module there are two types of functions: + +* those wrapped with a @task decorator and a ``_celery_task`` suffix - celery tasks +* those with the same base name, but without the decorator and the name suffix + the actual work units run by the task + +Celery tasks are special functions in a way that they require all the parameters +be serializable - so instead of ORM objects we pass object id's and +instead of query sets - lists of ORM object id's. + +That is the reason for having two types of methods here: + +* the base methods (those without the decorator and the + ``_celery_task`` in the end of the name + are work units that are called from the celery tasks. +* celery tasks - shells that reconstitute the necessary ORM + objects and call the base methods +""" from django.contrib.contenttypes.models import ContentType from celery.decorators import task from askbot.models import Activity @@ -5,7 +24,7 @@ from askbot.models import User from askbot.models import send_instant_notifications_about_activity_in_post @task(ignore_results = True) -def record_post_update_task( +def record_post_update_celery_task( post_id, post_content_type_id, newly_mentioned_user_id_list = None, @@ -13,10 +32,42 @@ def record_post_update_task( timestamp = None, created = False, ): - + #reconstitute objects from the database updated_by = User.objects.get(id = updated_by_id) post_content_type = ContentType.objects.get(id = post_content_type_id) post = post_content_type.get_object_for_this_type(id = post_id) + newly_mentioned_users = User.objects.filter( + id__in = newly_mentioned_user_id_list + ) + + + record_post_update( + post = post, + updated_by = updated_by, + newly_mentioned_users = newly_mentioned_users, + timestamp = timestamp, + created = created, + ) + +def record_post_update( + post = None, + updated_by = None, + newly_mentioned_users = None, + timestamp = None, + created = False + ): + """Called when a post is updated. Arguments: + + * ``newly_mentioned_users`` - users who are mentioned in the + post for the first time + * ``created`` - a boolean. True when ``post`` has just been created + * remaining arguments are self - explanatory + + The method does two things: + + * records "red envelope" recipients of the post + * sends email alerts to all subscribers to the post + """ #todo: take into account created == True case (activity_type, update_object) = post.get_updated_activity_data(created) @@ -42,10 +93,6 @@ def record_post_update_task( assert(updated_by not in recipients) - newly_mentioned_users = User.objects.filter( - id__in = newly_mentioned_user_id_list - ) - for user in set(recipients) | set(newly_mentioned_users): user.increment_response_count() user.save() diff --git a/askbot/tests/db_api_tests.py b/askbot/tests/db_api_tests.py index a6b2dfc4..66fb9f9d 100644 --- a/askbot/tests/db_api_tests.py +++ b/askbot/tests/db_api_tests.py @@ -260,7 +260,6 @@ class GlobalTagSubscriberGetterTests(AskbotTestCase): frequency = 'i' ) actual_subscribers = self.question.get_global_tag_based_subscribers( - tags = self.question.tags.all(), tag_mark_reason = reason, subscription_records = subscriptions ) @@ -322,3 +321,19 @@ class GlobalTagSubscriberGetterTests(AskbotTestCase): expected_subscribers = set([self.u2,]), reason = 'bad' ) + + def test_user_dislikes_wildcard_and_matching_tag(self): + """user ignores tag "day" and ignores a wildcard "da*" + """ + self.set_email_tag_filter_strategy(const.EXCLUDE_IGNORED) + askbot_settings.update('USE_WILDCARD_TAGS', True) + self.u1.mark_tags( + tagnames = ('day',), + wildcards = ('da*',), + reason = 'bad', + action = 'add' + ) + self.assert_subscribers_are( + expected_subscribers = set([self.u2,]), + reason = 'bad' + ) diff --git a/askbot/tests/email_alert_tests.py b/askbot/tests/email_alert_tests.py index 5ec598d7..de801967 100644 --- a/askbot/tests/email_alert_tests.py +++ b/askbot/tests/email_alert_tests.py @@ -1,6 +1,7 @@ import datetime import functools import copy +import time from django.conf import settings as django_settings from django.core import management import django.core.mail @@ -11,9 +12,11 @@ from askbot.tests import utils from askbot import models from askbot.utils import mail from askbot.conf import settings as askbot_settings +from askbot import const def email_alert_test(test_func): - """decorator for test methods in EmailAlertTests + """decorator for test methods in + :class:`~askbot.tests.email_alert_tests.EmailAlertTests` wraps tests with a generic sequence of testing email alerts on updates to anything relating to given question @@ -732,3 +735,68 @@ class FeedbackTests(utils.AskbotTestCase): mail.mail_moderators('subject', 'text') self.assert_feedback_works() + +class TagFollowedInstantWholeForumEmailAlertTests(utils.AskbotTestCase): + def setUp(self): + self.create_user( + username = 'user1', + notification_schedule = {'q_all': 'i'}, + status = 'm' + ) + self.create_user( + username = 'user2', + status = 'm' + ) + + def test_wildcard_catches_new_tag(self): + """users asks a question with a brand new tag + and other user subscribes to it by wildcard + """ + askbot_settings.update('USE_WILDCARD_TAGS', True) + self.user1.email_tag_filter_strategy = const.INCLUDE_INTERESTING + self.user1.save() + self.user1.mark_tags( + wildcards = ('some*',), + reason = 'good', + action = 'add' + ) + self.user2.post_question( + title = 'some title', + body_text = 'some text for the question', + tags = 'something' + ) + outbox = django.core.mail.outbox + self.assertEqual(len(outbox), 1) + self.assertEqual(len(outbox[0].recipients()), 1) + self.assertTrue( + self.user1.email in outbox[0].recipients() + ) + + def test_tag_based_subscription_on_new_question_works(self): + """someone subscribes for an pre-existing tag + then another user asks a question with that tag + and the subcriber receives an alert + """ + models.Tag( + name = 'something', + created_by = self.user1 + ).save() + + self.user1.email_tag_filter_strategy = const.INCLUDE_INTERESTING + self.user1.save() + self.user1.mark_tags( + tagnames = ('something',), + reason = 'good', + action = 'add' + ) + self.user2.post_question( + title = 'some title', + body_text = 'some text for the question', + tags = 'something' + ) + outbox = django.core.mail.outbox + self.assertEqual(len(outbox), 1) + self.assertEqual(len(outbox[0].recipients()), 1) + self.assertTrue( + self.user1.email in outbox[0].recipients() + ) diff --git a/askbot/tests/form_tests.py b/askbot/tests/form_tests.py index 1a18678c..68fb7010 100644 --- a/askbot/tests/form_tests.py +++ b/askbot/tests/form_tests.py @@ -3,6 +3,85 @@ from askbot.conf import settings as askbot_settings from askbot import forms from askbot import models +EMAIL_CASES = (#test should fail if the second item is None + ('user@example.com', 'user@example.com'), + ('Name Name <name@example.com>', 'name@example.com'), + ('"Name Name [example.com]" <name@example.com>', 'name@example.com'), + ( + 'someone <reply+m-4823355-3ae97f4698708d0be6bb087d6d4ce1e5e33ac131@reply.example.com>', + 'reply+m-4823355-3ae97f4698708d0be6bb087d6d4ce1e5e33ac131@reply.example.com' + ), + ( + 'freddy krueger <someone@example.edu> (by way of somebody else)', + 'someone@example.edu' + ), + ( + 'Google Anniversary Promotion =?iso-8859-1?Q?=A9_2011?= <someone@example.br>', + 'someone@example.br' + ), + ('=?koi8-r?B?5sHExcXXwSDvzNjHwQ==?= <someone@example.ru>', 'someone@example.ru'), + ('root@example.org (Cron Daemon)', 'root@example.org'), + ('<summary@example.com>', 'summary@example.com'), + ('some text without an email adderess', None) +) +SUBJECT_LINE_CASES = (#test fails if second item is None + ( + ' [ tag1;long tag, another] question title', + ('tag1 long-tag another', 'question title') + ), + ('[] question title', None), + ('question title', None), + (' [question title', None), + ('] question title', None), +) + +class AskByEmailFormTests(AskbotTestCase): + """Tests :class:`~askbot.forms.AskByEmailForm` + form""" + def setUp(self): + #benign data set that must pass + self.data = { + 'sender': 'someone@example.com', + 'subject': '[tag-one] where is titanic?', + 'body_text': 'where is titanic?' + } + def test_subject_line(self): + """loops through various forms of the subject line + and makes sure that tags and title are parsed out""" + for test_case in SUBJECT_LINE_CASES: + self.data['subject'] = test_case[0] + form = forms.AskByEmailForm(self.data) + output = test_case[1] + if output is None: + self.assertFalse(form.is_valid()) + else: + self.assertTrue(form.is_valid()) + self.assertEquals( + form.cleaned_data['tagnames'], + output[0] + ) + self.assertEquals( + form.cleaned_data['title'], + output[1] + ) + + def test_email(self): + """loops through variants of the from field + in the emails and tests the email address + extractor""" + for test_case in EMAIL_CASES: + self.data['sender'] = test_case[0] + expected_result = test_case[1] + form = forms.AskByEmailForm(self.data) + if expected_result is None: + self.assertFalse(form.is_valid()) + else: + self.assertTrue(form.is_valid()) + self.assertEquals( + form.cleaned_data['email'], + expected_result + ) + class TagNamesFieldTests(AskbotTestCase): def setUp(self): diff --git a/askbot/tests/skin_tests.py b/askbot/tests/skin_tests.py index 978f45b1..660daa4e 100644 --- a/askbot/tests/skin_tests.py +++ b/askbot/tests/skin_tests.py @@ -36,6 +36,7 @@ class SkinTests(TestCase): 'test_skin' ) shutil.rmtree(test_skin_dir) + askbot_settings.update('ASKBOT_DEFAULT_SKIN', 'default') def assert_default_logo_in_skin(self, skin_name): url = skin_utils.get_media_url(askbot_settings.SITE_LOGO_URL) diff --git a/askbot/tests/utils.py b/askbot/tests/utils.py index 85599682..0c18e661 100644 --- a/askbot/tests/utils.py +++ b/askbot/tests/utils.py @@ -12,7 +12,26 @@ def create_user( reputation = 1 ): """Creates a user and sets default update subscription - settings""" + settings + + ``notification_schedule`` is a dictionary with keys + the same as in keys in + :attr:`~askbot.models.EmailFeedSetting.FEED_TYPES`: + + * 'q_ask' - questions that user asks + * 'q_all' - enture forum, tag filtered + * 'q_ans' - questions that user answers + * 'q_sel' - questions that user decides to follow + * 'm_and_c' - comments and mentions of user anywhere + + and values as keys in + :attr:`~askbot.models.EmailFeedSetting.FEED_TYPES`: + + * 'i' - instantly + * 'd' - daily + * 'w' - weekly + * 'n' - never + """ user = models.User.objects.create_user(username, email) user.reputation = reputation if date_joined is not None: diff --git a/askbot/utils/mail.py b/askbot/utils/mail.py index 9f88bb3c..1c78e81d 100644 --- a/askbot/utils/mail.py +++ b/askbot/utils/mail.py @@ -7,6 +7,7 @@ from django.core import mail from django.conf import settings as django_settings from askbot.conf import settings as askbot_settings from askbot import exceptions +from askbot import const #todo: maybe send_mail functions belong to models #or the future API def prefix_the_subject_line(subject): @@ -19,6 +20,17 @@ def prefix_the_subject_line(subject): subject = prefix + ' ' + subject return subject +def extract_first_email_address(text): + """extract first matching email address + from text string + returns ``None`` if there are no matches + """ + match = const.EMAIL_REGEX.search(text) + if match: + return match.group(0) + else: + return None + def send_mail( subject_line = None, body_text = None, @@ -28,7 +40,9 @@ def send_mail( headers = None, raise_on_failure = False, ): - """sends email message + """ + todo: remove parameters not relevant to the function + sends email message logs email sending activity and any errors are reported as critical in the main log file @@ -78,6 +92,7 @@ def mail_moderators( try: mail.send_mail(subject_line, body_text, from_email, recipient_list) + pass except smtplib.SMTPException, error: logging.critical(unicode(error)) if raise_on_failure == True: @@ -34,7 +34,7 @@ if sys.platform not in WIN_PLATFORMS: setup( name = "askbot", - version = '0.6.75',#remember to manually set this correctly + version = '0.6.76',#remember to manually set this correctly description = 'Question and Answer forum, like StackOverflow, written in python and Django', packages = find_packages(), author = 'Evgeny.Fadeev', |