Compare View
Commits (27)
-
Signed-off-by: Sergio Oliveira <sergio@tracy.com.br>
-
Would be nice that `private_token` gets deprecated and that the plugins to use it through the . Signed off by: Diego Araújo <diegoamc90@gmail.com>
-
Plugin extra configurations
-
Signed-off-by: Sergio Oliveira <sergio@tracy.com.br>
-
Signed-off-by: Sergio Oliveira <sergio@tracy.com.br>
-
Update development environment stuff in README
-
Signed-off-by: Carlos Oliveira <carlospecter@gmail.com> Signed-off-by: Peter Lima <peterlima@gmail.com>
-
Cleaned up HTML and extracted header
-
Signed-off-by: Carlos Oliveira <carlospecter@gmail.com>
-
Add requests as dep in setup.py
-
Signed-off-by: Sérgio Oliveira <sergio@tracy.com.br>
-
Signed-off-by: Sergio Oliveira <sergio@tracy.com.br>
-
Signed-off-by: Sergio Oliveira <sergio@tracy.com.br> Signed-off-by: Lucas Kanashiro <kanashiro.duarte@gmail.com>
-
Signed-off-by: Macartur Sousa <macartur.sc@gmail.com> Signed-off-by: Matheus Fernandes <matheus.souza.fernandes@gmail.com>
-
Signed-off-by: Lucas Kanashiro <kanashiro.duarte@gmail.com> Signed-off-by: Lucas Moura <lucas.moura128@gmail.com>
-
Update translations
-
Signed-off-by: Charles Oliveira <18oliveira.charles@gmail.com> Signed-off-by: Gustavo Jaruga <darksshades@gmail.com>
Showing
38 changed files
Show diff stats
README.rst
... | ... | @@ -50,8 +50,18 @@ First install the dependencies and than the project it self: |
50 | 50 | |
51 | 51 | .. code-block:: |
52 | 52 | |
53 | - pip install -r requirements.txt | |
54 | - pip install . | |
53 | + pip install -e . | |
54 | + | |
55 | +Development environment | |
56 | +----------------------- | |
57 | + | |
58 | +You must install vagrant to set up the development environment. With vagrant available you should run: | |
59 | + | |
60 | +.. code-block:: | |
61 | + | |
62 | + vagrant up | |
63 | + | |
64 | +During the process you should choose the vagrant box that you want to use. In the end you should have a virtual machine with development environment set up. | |
55 | 65 | |
56 | 66 | |
57 | 67 | |
... | ... | @@ -60,13 +70,17 @@ Running Colab |
60 | 70 | |
61 | 71 | To run Colab with development server you will have to: |
62 | 72 | |
63 | -1- Create the example configuration file: | |
73 | +1- Log in virtual machine: | |
64 | 74 | |
65 | 75 | .. code-block:: |
66 | 76 | |
67 | - colab-admin initconfig > /etc/colab/settings.py | |
77 | + vagrant ssh | |
68 | 78 | |
69 | -2- Edit the configuration file. Make sure you set everything you need including **database** credentials. | |
79 | +2- Use colab virtualenv: | |
80 | + | |
81 | +.. code-block:: | |
82 | + | |
83 | + workon colab | |
70 | 84 | |
71 | 85 | 3- Run the development server: |
72 | 86 | |
... | ... | @@ -74,6 +88,7 @@ To run Colab with development server you will have to: |
74 | 88 | |
75 | 89 | colab-admin runserver 0.0.0.0:8000 |
76 | 90 | |
91 | +Now you can access colab in your browser via http://localhost:8000 | |
77 | 92 | |
78 | 93 | **NOTE**: In case you want to keep the configuration file else where just set the |
79 | 94 | desired location in environment variable **COLAB_SETTINGS**. |
... | ... | @@ -84,12 +99,33 @@ About test |
84 | 99 | How to write a test |
85 | 100 | -------------------- |
86 | 101 | Inside of each folder on /vagrant/colab/<folder> you can create a folder called |
87 | -"tests", and inside of it implements the code for test each file. | |
102 | +"tests" and inside of it implements the code for test each file. Remember that you should create __init__.py file. | |
88 | 103 | |
89 | 104 | How to run the tests |
90 | 105 | -------------------- |
91 | 106 | |
92 | 107 | Follow the steps below: |
93 | 108 | |
94 | -* Go to vagrant/colab/ | |
95 | -* run: ./runtests.sh | |
109 | +1- Log in virtual machine: | |
110 | + | |
111 | +.. code-block:: | |
112 | + | |
113 | + vagrant ssh | |
114 | + | |
115 | +2- Use colab virtualenv: | |
116 | + | |
117 | +.. code-block:: | |
118 | + | |
119 | + workon colab | |
120 | + | |
121 | +3- Enter into colab source code directory: | |
122 | + | |
123 | +.. code-block:: | |
124 | + | |
125 | + cd /vagrant | |
126 | + | |
127 | +4- Run tests with setup.py: | |
128 | + | |
129 | +.. code-block:: | |
130 | + | |
131 | + python setup.py test | ... | ... |
colab/accounts/forms.py
... | ... | @@ -237,6 +237,7 @@ class UserChangeForm(forms.ModelForm): |
237 | 237 | help_text=_("Required. 30 characters or fewer. Letters and digits."), |
238 | 238 | error_messages={ |
239 | 239 | 'invalid': _("This value may contain only letters and numbers.")}) |
240 | + # TODO: remove this hardcoded URL from here | |
240 | 241 | password = ReadOnlyPasswordHashField(label=_("Password"), |
241 | 242 | help_text=_("Raw passwords are not" |
242 | 243 | " stored, so there is no" | ... | ... |
colab/accounts/templates/accounts/user_update_form.html
1 | 1 | {% extends "base.html" %} |
2 | -{% load i18n gravatar %} | |
2 | +{% load i18n gravatar plugins %} | |
3 | 3 | |
4 | 4 | {% block head_js %} |
5 | 5 | <script> |
... | ... | @@ -102,6 +102,14 @@ $(function() { |
102 | 102 | </script> |
103 | 103 | {% endblock %} |
104 | 104 | |
105 | +{% block head %} | |
106 | + {{ block.super }} | |
107 | + | |
108 | + {% for widget in widgets %} | |
109 | + {{ widget.get_header }} | |
110 | + {% endfor %} | |
111 | + | |
112 | +{% endblock %} | |
105 | 113 | |
106 | 114 | {% block main-content %} |
107 | 115 | |
... | ... | @@ -118,83 +126,115 @@ $(function() { |
118 | 126 | <br> |
119 | 127 | <br> |
120 | 128 | |
121 | - <form method="post"> | |
122 | - {% csrf_token %} | |
123 | - | |
124 | - <div class="row"> | |
125 | - <div class="col-lg-8 col-md-7 col-sm-12 col-xm-12"> | |
126 | - {% for field in form %} | |
127 | - <div class="col-lg-6 col-md-6 col-sm-12 col-xm-12"> | |
128 | - <div class="form-group{% if field.field.required %} required{% endif %}{% if field.errors %} alert alert-danger has-error{% endif %}"> | |
129 | - <label for="{{ field.name }}" class="control-label"> | |
130 | - {{ field.label }} | |
131 | - </label> | |
132 | - {{ field }} | |
133 | - {{ field.errors }} | |
134 | - </div> | |
135 | - </div> | |
136 | - {% endfor %} | |
137 | - </div> | |
129 | + <!-- Start of navs --> | |
130 | + <ul class="nav nav-tabs"> | |
131 | + <li class="active"><a data-toggle="pill" href="#profile">Profile</a></li> | |
132 | + {% for widget in widgets %} | |
133 | + <li> | |
134 | + <a data-toggle="pill" href="#{{ widget.identifier }}">{{ widget.name }}</a> | |
135 | + </li> | |
136 | + {% endfor %} | |
137 | + </ul> | |
138 | + <!-- End of navs --> | |
139 | + <style type="text/css"> | |
140 | + .tab-pane{ | |
141 | + border: 1px solid #DDD; | |
142 | + border-top: none; | |
143 | + padding: 10px; | |
144 | + } | |
138 | 145 | |
139 | - <div class="col-lg-4 col-md-5 col-sm-12 col-xm-12"> | |
140 | - <div class="panel panel-default"> | |
141 | - <div class="panel-heading"> | |
142 | - <h3 class="panel-title">{% trans "Emails" %}</h3> | |
143 | - </div> | |
144 | - <div class="panel-body"> | |
145 | - <ul class="unstyled-list emails"> | |
146 | - {% for email in user_.emails.iterator %} | |
147 | - <li> | |
148 | - {% gravatar user_.email 30 %} | |
149 | - <span class="email-address">{{ email.address }}</span> | |
150 | - {% if email.address == user_.email %} | |
151 | - <span class="label label-success">{% trans "Primary" %}</span> | |
152 | - {% else %} | |
153 | - <div class="text-right"> | |
154 | - <button class="btn btn-default set-primary" data-loading-text="{% trans 'Setting...' %}">{% trans "Set as Primary" %}</button> | |
155 | - <button class="btn btn-danger delete-email" data-loading-text="{% trans 'Deleting...' %}">{% trans "Delete" %}</button> | |
156 | - </div> | |
157 | - {% endif %} | |
158 | - <hr /> | |
159 | - </li> | |
146 | + .nav-tabs a:focus { | |
147 | + outline: none; | |
148 | + } | |
149 | + </style> | |
150 | + <div class="tab-content"> | |
151 | + <div id="profile" class="tab-pane fade in active"> | |
152 | + <form method="post"> | |
153 | + {% csrf_token %} | |
154 | + | |
155 | + <div class="row"> | |
156 | + <div class="col-lg-8 col-md-7 col-sm-12 col-xm-12"> | |
157 | + {% for field in form %} | |
158 | + <div class="col-lg-6 col-md-6 col-sm-12 col-xm-12"> | |
159 | + <div class="form-group{% if field.field.required %} required{% endif %}{% if field.errors %} alert alert-danger has-error{% endif %}"> | |
160 | + <label for="{{ field.name }}" class="control-label"> | |
161 | + {{ field.label }} | |
162 | + </label> | |
163 | + {{ field }} | |
164 | + {{ field.errors }} | |
165 | + </div> | |
166 | + </div> | |
160 | 167 | {% endfor %} |
161 | - {% for email in user_.emails_not_validated.iterator %} | |
162 | - <li> | |
163 | - {% gravatar user_.email 30 %} | |
164 | - <span class="email-address">{{ email.address }}</span> | |
165 | - <div class="text-right"> | |
166 | - <button class="btn btn-default verify-email" data-loading-text="{% trans 'Sending verification...' %}"><span class="icon-warning-sign"></span> {% trans "Verify" %}</button> | |
167 | - <button class="btn btn-danger delete-email">{% trans "Delete" %}</button> | |
168 | + </div> | |
169 | + | |
170 | + <div class="col-lg-4 col-md-5 col-sm-12 col-xm-12"> | |
171 | + <div class="panel panel-default"> | |
172 | + <div class="panel-heading"> | |
173 | + <h3 class="panel-title">{% trans "Emails" %}</h3> | |
174 | + </div> | |
175 | + <div class="panel-body"> | |
176 | + <ul class="unstyled-list emails"> | |
177 | + {% for email in user_.emails.iterator %} | |
178 | + <li> | |
179 | + {% gravatar user_.email 30 %} | |
180 | + <span class="email-address">{{ email.address }}</span> | |
181 | + {% if email.address == user_.email %} | |
182 | + <span class="label label-success">{% trans "Primary" %}</span> | |
183 | + {% else %} | |
184 | + <div class="text-right"> | |
185 | + <button class="btn btn-default set-primary" data-loading-text="{% trans 'Setting...' %}">{% trans "Set as Primary" %}</button> | |
186 | + <button class="btn btn-danger delete-email" data-loading-text="{% trans 'Deleting...' %}">{% trans "Delete" %}</button> | |
187 | + </div> | |
188 | + {% endif %} | |
189 | + <hr /> | |
190 | + </li> | |
191 | + {% endfor %} | |
192 | + {% for email in user_.emails_not_validated.iterator %} | |
193 | + <li> | |
194 | + {% gravatar user_.email 30 %} | |
195 | + <span class="email-address">{{ email.address }}</span> | |
196 | + <div class="text-right"> | |
197 | + <button class="btn btn-default verify-email" data-loading-text="{% trans 'Sending verification...' %}"><span class="icon-warning-sign"></span> {% trans "Verify" %}</button> | |
198 | + <button class="btn btn-danger delete-email">{% trans "Delete" %}</button> | |
199 | + </div> | |
200 | + <hr /> | |
201 | + </li> | |
202 | + {% endfor %} | |
203 | + </ul> | |
204 | + <div class="form-group"> | |
205 | + <label for="new_email">{% trans "Add another email address:" %}</label> | |
206 | + <input id="new_email" name="new_email" class="form-control" autocomplete="off" /> | |
168 | 207 | </div> |
169 | - <hr /> | |
170 | - </li> | |
171 | - {% endfor %} | |
172 | - </ul> | |
173 | - <div class="form-group"> | |
174 | - <label for="new_email">{% trans "Add another email address:" %}</label> | |
175 | - <input id="new_email" name="new_email" class="form-control" autocomplete="off" /> | |
208 | + <button class="btn btn-primary pull-right" id="add-email">{% trans "Add" %}</button> | |
209 | + </div> | |
176 | 210 | </div> |
177 | - <button class="btn btn-primary pull-right" id="add-email">{% trans "Add" %}</button> | |
178 | 211 | </div> |
179 | - </div> | |
180 | - </div> | |
181 | - <div class="col-lg-4 col-md-5 col-sm-12 col-xm-12"> | |
182 | - <div class="panel panel-default"> | |
183 | - <div class="panel-heading"> | |
184 | - <h3 class="panel-title"> | |
185 | - {% trans 'Change Password' %} | |
186 | - </h3> | |
212 | + <div class="col-lg-4 col-md-5 col-sm-12 col-xm-12"> | |
213 | + <div class="panel panel-default"> | |
214 | + <div class="panel-heading"> | |
215 | + <h3 class="panel-title"> | |
216 | + {% trans 'Change Password' %} | |
217 | + </h3> | |
218 | + </div> | |
219 | + <div class="panel-body"> | |
220 | + <a href="{% url 'password_change' %}" class="btn btn-default btn-primary pull-right btn-block">{% trans "Change Password" %}</a> | |
221 | + </div> | |
222 | + </div> | |
187 | 223 | </div> |
188 | - <div class="panel-body"> | |
189 | - <a href="{% url 'password_change' %}" class="btn btn-default btn-primary pull-right btn-block">{% trans "Change Password" %}</a> | |
224 | + </div> | |
225 | + <div class="row"> | |
226 | + <div class="submit"> | |
227 | + <button type="submit" class="btn btn-primary btn-lg btn-block">{% trans "Update" %}</button> | |
190 | 228 | </div> |
191 | 229 | </div> |
192 | - </div> | |
230 | + </form> | |
193 | 231 | </div> |
194 | - <div class="row"> | |
195 | - <div class="submit"> | |
196 | - <button type="submit" class="btn btn-primary btn-lg btn-block">{% trans "Update" %}</button> | |
232 | + {% for widget in widgets %} | |
233 | + <div id="{{ widget.identifier }}" class="tab-pane fade"> | |
234 | + <h2>{{ widget.name }}</h2> | |
235 | + {{ widget.get_body }} | |
197 | 236 | </div> |
198 | - </div> | |
199 | - </form> | |
237 | + {% endfor %} | |
238 | + </div> | |
239 | + | |
200 | 240 | {% endblock %} | ... | ... |
colab/accounts/views.py
... | ... | @@ -15,6 +15,7 @@ from colab.super_archives.models import (EmailAddress, |
15 | 15 | EmailAddressValidation) |
16 | 16 | from colab.search.utils import get_collaboration_data, get_visible_threads |
17 | 17 | from colab.accounts.models import User |
18 | +from colab.widgets.widget_manager import WidgetManager | |
18 | 19 | |
19 | 20 | from .forms import (UserCreationForm, ListsForm, UserUpdateForm) |
20 | 21 | from .utils import mailman |
... | ... | @@ -42,6 +43,12 @@ class UserProfileUpdateView(UserProfileBaseMixin, UpdateView): |
42 | 43 | |
43 | 44 | return obj |
44 | 45 | |
46 | + def get_context_data(self, **kwargs): | |
47 | + context = {} | |
48 | + context['widgets'] = WidgetManager.get_widgets('profile', self.request) | |
49 | + context.update(kwargs) | |
50 | + return super(UserProfileUpdateView, self).get_context_data(**context) | |
51 | + | |
45 | 52 | |
46 | 53 | class UserProfileDetailView(UserProfileBaseMixin, DetailView): |
47 | 54 | template_name = 'accounts/user_detail.html' | ... | ... |
colab/locale/en/LC_MESSAGES/django.mo
No preview for this file type
colab/locale/en/LC_MESSAGES/django.po
1 | 1 | # SOME DESCRIPTIVE TITLE. |
2 | 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
3 | 3 | # This file is distributed under the same license as the PACKAGE package. |
4 | -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | |
5 | -# | |
6 | -#, fuzzy | |
4 | +# | |
5 | +# Translators: | |
7 | 6 | msgid "" |
8 | 7 | msgstr "" |
9 | -"Project-Id-Version: PACKAGE VERSION\n" | |
8 | +"Project-Id-Version: colab\n" | |
10 | 9 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2014-11-21 17:05+0000\n" | |
12 | -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | |
13 | -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | |
14 | -"Language-Team: LANGUAGE <LL@li.org>\n" | |
15 | -"Language: \n" | |
10 | +"POT-Creation-Date: 2015-09-01 13:15+0000\n" | |
11 | +"PO-Revision-Date: 2015-09-04 19:21+0000\n" | |
12 | +"Last-Translator: Lucas Kanashiro Duarte <kanashiro.duarte@gmail.com>\n" | |
13 | +"Language-Team: English (http://www.transifex.com/colab/colab/language/en/)\n" | |
16 | 14 | "MIME-Version: 1.0\n" |
17 | 15 | "Content-Type: text/plain; charset=UTF-8\n" |
18 | 16 | "Content-Transfer-Encoding: 8bit\n" |
17 | +"Language: en\n" | |
18 | +"Plural-Forms: nplurals=2; plural=(n != 1);\n" | |
19 | 19 | |
20 | -#: accounts/admin.py:40 | |
20 | +#: accounts/admin.py:18 | |
21 | 21 | msgid "Personal info" |
22 | -msgstr "" | |
22 | +msgstr "Personal info" | |
23 | 23 | |
24 | -#: accounts/admin.py:43 | |
24 | +#: accounts/admin.py:24 | |
25 | 25 | msgid "Permissions" |
26 | -msgstr "" | |
26 | +msgstr "Permissions" | |
27 | 27 | |
28 | -#: accounts/admin.py:45 | |
28 | +#: accounts/admin.py:28 | |
29 | 29 | msgid "Important dates" |
30 | -msgstr "" | |
30 | +msgstr "Important dates" | |
31 | 31 | |
32 | -#: accounts/forms.py:25 | |
32 | +#: accounts/forms.py:37 | |
33 | 33 | msgid "Social account does not exist" |
34 | -msgstr "" | |
34 | +msgstr "Social account does not exist" | |
35 | 35 | |
36 | -#: accounts/forms.py:61 accounts/templates/accounts/user_detail.html:38 | |
36 | +#: accounts/forms.py:65 accounts/forms.py:71 accounts/forms.py:77 | |
37 | +msgid "This field cannot be blank." | |
38 | +msgstr "This field cannot be blank." | |
39 | + | |
40 | +#: accounts/forms.py:118 accounts/templates/accounts/user_detail.html:38 | |
37 | 41 | msgid "Bio" |
38 | -msgstr "" | |
42 | +msgstr "Bio" | |
39 | 43 | |
40 | -#: accounts/forms.py:62 | |
44 | +#: accounts/forms.py:119 | |
41 | 45 | msgid "Write something about you in 200 characters or less." |
42 | -msgstr "" | |
46 | +msgstr "Write something about you in 200 characters or less." | |
43 | 47 | |
44 | -#: accounts/forms.py:81 | |
48 | +#: accounts/forms.py:148 | |
45 | 49 | msgid "Mailing lists" |
46 | -msgstr "" | |
50 | +msgstr "Mailing lists" | |
51 | + | |
52 | +#: accounts/forms.py:161 | |
53 | +#, python-format | |
54 | +msgid "Email already used. Is it you? Please <a href='%(url)s'>login</a>" | |
55 | +msgstr "Email already used. Is it you? Please <a href='%(url)s'>login</a>" | |
56 | + | |
57 | +#: accounts/forms.py:163 | |
58 | +msgid "A user with that username already exists." | |
59 | +msgstr "A user with that username already exists." | |
60 | + | |
61 | +#: accounts/forms.py:164 accounts/forms.py:401 accounts/forms.py:465 | |
62 | +msgid "The two password fields didn't match." | |
63 | +msgstr "The two password fields didn't match." | |
64 | + | |
65 | +#: accounts/forms.py:166 accounts/forms.py:236 search/forms.py:38 | |
66 | +msgid "Username" | |
67 | +msgstr "Username" | |
47 | 68 | |
48 | -#: accounts/forms.py:88 | |
69 | +#: accounts/forms.py:173 accounts/forms.py:240 accounts/forms.py:277 | |
70 | +#: accounts/forms.py:467 | |
49 | 71 | msgid "Password" |
50 | -msgstr "" | |
72 | +msgstr "Password" | |
51 | 73 | |
52 | -#: accounts/forms.py:90 | |
74 | +#: accounts/forms.py:175 | |
53 | 75 | msgid "Password confirmation" |
54 | -msgstr "" | |
76 | +msgstr "Password confirmation" | |
55 | 77 | |
56 | -#: accounts/forms.py:92 | |
57 | -msgid "Enter the same password as above, for verification." | |
58 | -msgstr "" | |
78 | +#: accounts/forms.py:237 accounts/models.py:78 | |
79 | +msgid "Required. 30 characters or fewer. Letters and digits." | |
80 | +msgstr "Required. 30 characters or fewer. Letters and digits." | |
59 | 81 | |
60 | -#: accounts/forms.py:110 | |
61 | -msgid "Password mismatch" | |
62 | -msgstr "" | |
82 | +#: accounts/forms.py:239 | |
83 | +msgid "This value may contain only letters and numbers." | |
84 | +msgstr "This value may contain only letters and numbers." | |
85 | + | |
86 | +#: accounts/forms.py:241 | |
87 | +msgid "" | |
88 | +"Raw passwords are not stored, so there is no way to see this user's " | |
89 | +"password, but you can change the password using <a href=\"password/\">this " | |
90 | +"form</a>." | |
91 | +msgstr "Raw passwords are not stored, so there is no way to see this user's password, but you can change the password using <a href=\"password/\">this form</a>." | |
63 | 92 | |
64 | -#: accounts/management/commands/delete_invalid.py:42 | |
93 | +#: accounts/forms.py:280 | |
65 | 94 | #, python-format |
66 | -msgid "%(count)s users deleted." | |
67 | -msgstr "" | |
95 | +msgid "" | |
96 | +"Please enter a correct %(username)s and password. Note that both fields may " | |
97 | +"be case-sensitive." | |
98 | +msgstr "Please enter a correct %(username)s and password. Note that both fields may be case-sensitive." | |
68 | 99 | |
69 | -#: accounts/models.py:65 | |
70 | -msgid "Required. 30 characters or fewer. Letters, digits and ./+/-/_ only." | |
71 | -msgstr "" | |
100 | +#: accounts/forms.py:282 | |
101 | +msgid "This account is inactive." | |
102 | +msgstr "This account is inactive." | |
72 | 103 | |
73 | -#: accounts/models.py:70 | |
74 | -msgid "Enter a valid username." | |
75 | -msgstr "" | |
104 | +#: accounts/forms.py:345 | |
105 | +msgid "Email" | |
106 | +msgstr "Email" | |
76 | 107 | |
77 | -#: accounts/templates/accounts/change_password.html:8 | |
78 | -msgid "Change XMPP Client and SVN Password" | |
79 | -msgstr "" | |
108 | +#: accounts/forms.py:403 | |
109 | +msgid "New password" | |
110 | +msgstr "New password" | |
80 | 111 | |
81 | -#: accounts/templates/accounts/change_password.html:17 | |
82 | -#: accounts/templates/accounts/user_update_form.html:188 | |
83 | -#: accounts/templates/accounts/user_update_form.html:195 | |
84 | -msgid "Change Password" | |
85 | -msgstr "" | |
112 | +#: accounts/forms.py:405 | |
113 | +msgid "New password confirmation" | |
114 | +msgstr "New password confirmation" | |
86 | 115 | |
87 | -#: accounts/templates/accounts/login.html:7 | |
88 | -msgid "To login please click in the link below:" | |
89 | -msgstr "" | |
116 | +#: accounts/forms.py:436 | |
117 | +msgid "Your old password was entered incorrectly. Please enter it again." | |
118 | +msgstr "Your old password was entered incorrectly. Please enter it again." | |
90 | 119 | |
91 | -#: accounts/templates/accounts/login.html:8 templates/base.html:182 | |
92 | -#: templates/base.html.py:187 | |
93 | -msgid "Login" | |
94 | -msgstr "" | |
120 | +#: accounts/forms.py:439 | |
121 | +msgid "Old password" | |
122 | +msgstr "Old password" | |
123 | + | |
124 | +#: accounts/forms.py:469 | |
125 | +msgid "Password (again)" | |
126 | +msgstr "Password (again)" | |
127 | + | |
128 | +#: accounts/models.py:82 | |
129 | +msgid "Enter a valid username." | |
130 | +msgstr "Enter a valid username." | |
95 | 131 | |
96 | 132 | #: accounts/templates/accounts/manage_subscriptions.html:6 |
97 | 133 | msgid "Group Subscriptions" |
98 | -msgstr "" | |
134 | +msgstr "Group Subscriptions" | |
99 | 135 | |
100 | 136 | #: accounts/templates/accounts/manage_subscriptions.html:36 |
101 | 137 | msgid "Update subscriptions" |
102 | -msgstr "" | |
138 | +msgstr "Update subscriptions" | |
103 | 139 | |
104 | 140 | #: accounts/templates/accounts/user_create_form.html:5 |
105 | 141 | msgid "Sign up" |
106 | -msgstr "" | |
142 | +msgstr "Sign up" | |
107 | 143 | |
108 | 144 | #: accounts/templates/accounts/user_create_form.html:10 |
109 | -msgid "Please correct the errors below and try again" | |
110 | -msgstr "" | |
145 | +#: accounts/templates/registration/login.html:14 | |
146 | +#: accounts/templates/registration/password_change_form_custom.html:12 | |
147 | +#: accounts/templates/registration/password_reset_confirm_custom.html:14 | |
148 | +#: accounts/templates/registration/password_reset_form_custom.html:9 | |
149 | +msgid "Please correct the errors below and try again." | |
150 | +msgstr "Please correct the errors below and try again." | |
111 | 151 | |
112 | 152 | #: accounts/templates/accounts/user_create_form.html:17 |
113 | 153 | msgid "Required fields" |
114 | -msgstr "" | |
154 | +msgstr "Required fields" | |
115 | 155 | |
116 | 156 | #: accounts/templates/accounts/user_create_form.html:29 |
117 | 157 | msgid "Personal Information" |
118 | -msgstr "" | |
158 | +msgstr "Personal Information" | |
119 | 159 | |
120 | 160 | #: accounts/templates/accounts/user_create_form.html:46 |
121 | 161 | msgid "Subscribe to groups" |
122 | -msgstr "" | |
162 | +msgstr "Subscribe to groups" | |
123 | 163 | |
124 | 164 | #: accounts/templates/accounts/user_create_form.html:60 |
125 | -#: templates/base.html:181 templates/base.html.py:186 | |
165 | +#: templates/base.html:100 templates/base.html.py:105 templates/header.html:40 | |
166 | +#: templates/header.html.py:45 | |
126 | 167 | msgid "Register" |
127 | -msgstr "" | |
168 | +msgstr "Register" | |
128 | 169 | |
129 | 170 | #: accounts/templates/accounts/user_detail.html:8 |
130 | 171 | msgid "Messages" |
131 | -msgstr "" | |
172 | +msgstr "Messages" | |
132 | 173 | |
133 | -#: accounts/templates/accounts/user_detail.html:9 | |
174 | +#: accounts/templates/accounts/user_detail.html:9 templates/home.html:7 | |
134 | 175 | msgid "Contributions" |
135 | -msgstr "" | |
176 | +msgstr "Contributions" | |
136 | 177 | |
137 | 178 | #: accounts/templates/accounts/user_detail.html:29 |
138 | 179 | msgid "edit profile" |
139 | -msgstr "" | |
180 | +msgstr "edit profile" | |
140 | 181 | |
141 | 182 | #: accounts/templates/accounts/user_detail.html:30 |
142 | 183 | msgid "group membership" |
143 | -msgstr "" | |
184 | +msgstr "group membership" | |
144 | 185 | |
145 | -#: accounts/templates/accounts/user_detail.html:65 | |
186 | +#: accounts/templates/accounts/user_detail.html:66 | |
146 | 187 | msgid "Twitter account" |
147 | -msgstr "" | |
188 | +msgstr "Twitter account" | |
148 | 189 | |
149 | -#: accounts/templates/accounts/user_detail.html:68 | |
190 | +#: accounts/templates/accounts/user_detail.html:69 | |
150 | 191 | msgid "Facebook account" |
151 | -msgstr "" | |
192 | +msgstr "Facebook account" | |
152 | 193 | |
153 | -#: accounts/templates/accounts/user_detail.html:73 | |
194 | +#: accounts/templates/accounts/user_detail.html:74 | |
154 | 195 | msgid "Google talk account" |
155 | -msgstr "" | |
196 | +msgstr "Google talk account" | |
156 | 197 | |
157 | -#: accounts/templates/accounts/user_detail.html:77 | |
198 | +#: accounts/templates/accounts/user_detail.html:78 | |
158 | 199 | msgid "Github account" |
159 | -msgstr "" | |
200 | +msgstr "Github account" | |
160 | 201 | |
161 | -#: accounts/templates/accounts/user_detail.html:81 | |
202 | +#: accounts/templates/accounts/user_detail.html:82 | |
162 | 203 | msgid "Personal webpage" |
163 | -msgstr "" | |
204 | +msgstr "Personal webpage" | |
164 | 205 | |
165 | -#: accounts/templates/accounts/user_detail.html:87 | |
206 | +#: accounts/templates/accounts/user_detail.html:88 | |
166 | 207 | msgid "Groups: " |
167 | -msgstr "" | |
208 | +msgstr "Groups: " | |
168 | 209 | |
169 | -#: accounts/templates/accounts/user_detail.html:100 | |
210 | +#: accounts/templates/accounts/user_detail.html:101 | |
170 | 211 | msgid "Collaborations by Type" |
171 | -msgstr "" | |
212 | +msgstr "Collaborations by Type" | |
172 | 213 | |
173 | -#: accounts/templates/accounts/user_detail.html:116 | |
214 | +#: accounts/templates/accounts/user_detail.html:117 | |
174 | 215 | msgid "Participation by Group" |
175 | -msgstr "" | |
176 | - | |
177 | -#: accounts/templates/accounts/user_detail.html:132 | |
178 | -msgid "Badges" | |
179 | -msgstr "" | |
216 | +msgstr "Participation by Group" | |
180 | 217 | |
181 | -#: accounts/templates/accounts/user_detail.html:151 | |
218 | +#: accounts/templates/accounts/user_detail.html:133 | |
182 | 219 | msgid "Latest posted" |
183 | -msgstr "" | |
220 | +msgstr "Latest posted" | |
184 | 221 | |
185 | -#: accounts/templates/accounts/user_detail.html:156 | |
222 | +#: accounts/templates/accounts/user_detail.html:138 | |
186 | 223 | msgid "There are no posts by this user so far." |
187 | -msgstr "" | |
224 | +msgstr "There are no posts by this user so far." | |
188 | 225 | |
189 | -#: accounts/templates/accounts/user_detail.html:160 | |
226 | +#: accounts/templates/accounts/user_detail.html:142 | |
190 | 227 | msgid "View more posts..." |
191 | -msgstr "" | |
228 | +msgstr "View more posts..." | |
192 | 229 | |
193 | -#: accounts/templates/accounts/user_detail.html:166 | |
230 | +#: accounts/templates/accounts/user_detail.html:148 | |
194 | 231 | msgid "Latest contributions" |
195 | -msgstr "" | |
232 | +msgstr "Latest contributions" | |
196 | 233 | |
197 | -#: accounts/templates/accounts/user_detail.html:171 | |
234 | +#: accounts/templates/accounts/user_detail.html:153 | |
198 | 235 | msgid "No contributions of this user so far." |
199 | -msgstr "" | |
236 | +msgstr "No contributions of this user so far." | |
200 | 237 | |
201 | -#: accounts/templates/accounts/user_detail.html:175 | |
238 | +#: accounts/templates/accounts/user_detail.html:157 | |
202 | 239 | msgid "View more contributions..." |
203 | -msgstr "" | |
240 | +msgstr "View more contributions..." | |
204 | 241 | |
205 | 242 | #: accounts/templates/accounts/user_update_form.html:65 |
206 | 243 | msgid "We sent a verification email to " |
207 | -msgstr "" | |
244 | +msgstr "We sent a verification email to " | |
208 | 245 | |
209 | 246 | #: accounts/templates/accounts/user_update_form.html:66 |
210 | 247 | msgid "Please follow the instructions in it." |
211 | -msgstr "" | |
248 | +msgstr "Please follow the instructions in it." | |
212 | 249 | |
213 | 250 | #: accounts/templates/accounts/user_update_form.html:110 |
214 | 251 | msgid "profile information" |
215 | -msgstr "" | |
252 | +msgstr "profile information" | |
216 | 253 | |
217 | 254 | #: accounts/templates/accounts/user_update_form.html:115 |
218 | 255 | msgid "Change your avatar at Gravatar.com" |
219 | -msgstr "" | |
256 | +msgstr "Change your avatar at Gravatar.com" | |
220 | 257 | |
221 | -#: accounts/templates/accounts/user_update_form.html:142 search/utils.py:8 | |
258 | +#: accounts/templates/accounts/user_update_form.html:142 search/utils.py:56 | |
222 | 259 | msgid "Emails" |
223 | -msgstr "" | |
260 | +msgstr "Emails" | |
224 | 261 | |
225 | 262 | #: accounts/templates/accounts/user_update_form.html:151 |
226 | 263 | msgid "Primary" |
227 | -msgstr "" | |
264 | +msgstr "Primary" | |
228 | 265 | |
229 | 266 | #: accounts/templates/accounts/user_update_form.html:154 |
230 | 267 | msgid "Setting..." |
231 | -msgstr "" | |
268 | +msgstr "Setting..." | |
232 | 269 | |
233 | 270 | #: accounts/templates/accounts/user_update_form.html:154 |
234 | 271 | msgid "Set as Primary" |
235 | -msgstr "" | |
272 | +msgstr "Set as Primary" | |
236 | 273 | |
237 | 274 | #: accounts/templates/accounts/user_update_form.html:155 |
238 | 275 | msgid "Deleting..." |
239 | -msgstr "" | |
276 | +msgstr "Deleting..." | |
240 | 277 | |
241 | 278 | #: accounts/templates/accounts/user_update_form.html:155 |
242 | 279 | #: accounts/templates/accounts/user_update_form.html:167 |
243 | 280 | msgid "Delete" |
244 | -msgstr "" | |
281 | +msgstr "Delete" | |
245 | 282 | |
246 | 283 | #: accounts/templates/accounts/user_update_form.html:166 |
247 | 284 | msgid "Sending verification..." |
248 | -msgstr "" | |
285 | +msgstr "Sending verification..." | |
249 | 286 | |
250 | 287 | #: accounts/templates/accounts/user_update_form.html:166 |
251 | 288 | msgid "Verify" |
252 | -msgstr "" | |
289 | +msgstr "Verify" | |
253 | 290 | |
254 | 291 | #: accounts/templates/accounts/user_update_form.html:174 |
255 | 292 | msgid "Add another email address:" |
256 | -msgstr "" | |
293 | +msgstr "Add another email address:" | |
257 | 294 | |
258 | 295 | #: accounts/templates/accounts/user_update_form.html:177 |
259 | 296 | msgid "Add" |
260 | -msgstr "" | |
297 | +msgstr "Add" | |
261 | 298 | |
262 | -#: accounts/templates/accounts/user_update_form.html:193 | |
263 | -msgid "" | |
264 | -"This feature is available only for those who need to change the password for " | |
265 | -"some reason as having an old user with the same username, forgot your " | |
266 | -"password to commit, usage of other XMPP Client for connection. Usually, you " | |
267 | -"won't need to change this password. Only change it if you are sure about " | |
268 | -"what you are doing." | |
269 | -msgstr "" | |
299 | +#: accounts/templates/accounts/user_update_form.html:185 | |
300 | +#: accounts/templates/accounts/user_update_form.html:189 | |
301 | +#: accounts/templates/registration/password_change_form_custom.html:26 | |
302 | +#: accounts/templates/registration/password_reset_confirm_custom.html:28 | |
303 | +msgid "Change Password" | |
304 | +msgstr "Change Password" | |
270 | 305 | |
271 | -#: accounts/templates/accounts/user_update_form.html:203 | |
306 | +#: accounts/templates/accounts/user_update_form.html:196 | |
272 | 307 | msgid "Update" |
273 | -msgstr "" | |
308 | +msgstr "Update" | |
309 | + | |
310 | +#: accounts/templates/registration/login.html:10 | |
311 | +#: accounts/templates/registration/password_change_form_custom.html:10 | |
312 | +#: accounts/templates/registration/password_reset_confirm_custom.html:12 | |
313 | +msgid "Please correct the error below and try again." | |
314 | +msgstr "Please correct the error below and try again." | |
315 | + | |
316 | +#: accounts/templates/registration/login.html:34 | |
317 | +#: accounts/templates/registration/login.html:54 templates/base.html:99 | |
318 | +#: templates/base.html.py:101 templates/base.html:104 | |
319 | +#: templates/base.html.py:106 templates/header.html:39 | |
320 | +#: templates/header.html.py:41 templates/header.html:44 | |
321 | +#: templates/header.html.py:46 | |
322 | +msgid "Login" | |
323 | +msgstr "Login" | |
274 | 324 | |
275 | -#: accounts/views.py:148 | |
276 | -msgid "Your profile has been created!" | |
277 | -msgstr "" | |
325 | +#: accounts/templates/registration/login.html:56 | |
326 | +msgid "Forgot Password?" | |
327 | +msgstr "Forgot Password?" | |
328 | + | |
329 | +#: accounts/templates/registration/password_change_form_custom.html:54 | |
330 | +#: accounts/templates/registration/password_reset_confirm_custom.html:51 | |
331 | +msgid "Change my password" | |
332 | +msgstr "Change my password" | |
333 | + | |
334 | +#: accounts/templates/registration/password_reset_confirm_custom.html:3 | |
335 | +msgid "Setting New password" | |
336 | +msgstr "Setting New password" | |
278 | 337 | |
279 | -#: accounts/views.py:149 | |
338 | +#: accounts/templates/registration/password_reset_form_custom.html:23 | |
280 | 339 | msgid "" |
281 | -"You must login to validated your profile. Profiles not validated are deleted " | |
282 | -"in 24h." | |
283 | -msgstr "" | |
340 | +"Forgotten your password? Enter your email address below, and we'll email " | |
341 | +"instructions for setting a new one." | |
342 | +msgstr "Forgotten your password? Enter your email address below, and we'll email instructions for setting a new one." | |
284 | 343 | |
285 | -#: accounts/views.py:233 | |
286 | -msgid "Could not change your password. Please, try again later." | |
287 | -msgstr "" | |
344 | +#: accounts/templates/registration/password_reset_form_custom.html:26 | |
345 | +msgid "Email address:" | |
346 | +msgstr "Email address:" | |
288 | 347 | |
289 | -#: accounts/views.py:242 | |
290 | -msgid "You've changed your password successfully!" | |
291 | -msgstr "" | |
348 | +#: accounts/templates/registration/password_reset_form_custom.html:37 | |
349 | +msgid "Reset password" | |
350 | +msgstr "Reset password" | |
292 | 351 | |
293 | -#: settings.py:160 | |
294 | -msgid "Image" | |
295 | -msgstr "" | |
352 | +#: accounts/views.py:126 | |
353 | +msgid "Your profile has been created!" | |
354 | +msgstr "Your profile has been created!" | |
296 | 355 | |
297 | -#: search/templates/search/includes/search_filters.html:122 | |
298 | -msgid "Ticket" | |
299 | -msgstr "" | |
356 | +#: accounts/views.py:186 | |
357 | +msgid "Your password was changed." | |
358 | +msgstr "Your password was changed." | |
300 | 359 | |
301 | -#: search/forms.py:18 | |
302 | -msgid "Type" | |
303 | -msgstr "" | |
360 | +#: accounts/views.py:202 | |
361 | +msgid "Your password has been set. You may go ahead and log in now." | |
362 | +msgstr "Your password has been set. You may go ahead and log in now." | |
304 | 363 | |
305 | -#: home/context_processors.py:15 | |
364 | +#: home/context_processors.py:20 | |
306 | 365 | msgid "Fork me!" |
307 | -msgstr "" | |
366 | +msgstr "Fork me!" | |
367 | + | |
368 | +#: plugins/gitlab/models.py:27 | |
369 | +msgid "Gitlab Project" | |
370 | +msgstr "Gitlab Project" | |
371 | + | |
372 | +#: plugins/gitlab/models.py:28 | |
373 | +msgid "Gitlab Projects" | |
374 | +msgstr "Gitlab Projects" | |
375 | + | |
376 | +#: plugins/gitlab/models.py:54 | |
377 | +msgid "Gitlab Group" | |
378 | +msgstr "Gitlab Group" | |
379 | + | |
380 | +#: plugins/gitlab/models.py:55 | |
381 | +msgid "Gitlab Groups" | |
382 | +msgstr "Gitlab Groups" | |
383 | + | |
384 | +#: plugins/gitlab/models.py:91 | |
385 | +msgid "Gitlab Merge Request" | |
386 | +msgstr "Gitlab Merge Request" | |
387 | + | |
388 | +#: plugins/gitlab/models.py:92 | |
389 | +msgid "Gitlab Merge Requests" | |
390 | +msgstr "Gitlab Merge Requests" | |
391 | + | |
392 | +#: plugins/gitlab/models.py:120 | |
393 | +msgid "Gitlab Issue" | |
394 | +msgstr "Gitlab Issue" | |
395 | + | |
396 | +#: plugins/gitlab/models.py:121 | |
397 | +msgid "Gitlab Issues" | |
398 | +msgstr "Gitlab Issues" | |
399 | + | |
400 | +#: plugins/gitlab/models.py:176 plugins/gitlab/models.py:177 | |
401 | +msgid "Gitlab Comments" | |
402 | +msgstr "Gitlab Comments" | |
403 | + | |
404 | +#: plugins/noosfero/models.py:39 | |
405 | +msgid "Community" | |
406 | +msgstr "Community" | |
407 | + | |
408 | +#: plugins/noosfero/models.py:40 | |
409 | +msgid "Communities" | |
410 | +msgstr "Communities" | |
411 | + | |
412 | +#: plugins/noosfero/models.py:67 | |
413 | +msgid "Article" | |
414 | +msgstr "Article" | |
415 | + | |
416 | +#: plugins/noosfero/models.py:68 | |
417 | +msgid "Articles" | |
418 | +msgstr "Articles" | |
308 | 419 | |
309 | 420 | #: rss/feeds.py:13 |
310 | 421 | msgid "Latest Discussions" |
311 | -msgstr "" | |
422 | +msgstr "Latest Discussions" | |
312 | 423 | |
313 | 424 | #: rss/feeds.py:32 |
314 | 425 | msgid "Discussions Most Relevance" |
315 | -msgstr "" | |
426 | +msgstr "Discussions Most Relevance" | |
316 | 427 | |
317 | 428 | #: rss/feeds.py:51 |
318 | 429 | msgid "Latest collaborations" |
319 | -msgstr "" | |
430 | +msgstr "Latest collaborations" | |
320 | 431 | |
321 | 432 | #: search/forms.py:16 search/templates/search/search.html:46 |
322 | -#: templates/base.html:171 | |
433 | +#: templates/base.html:89 templates/header.html:29 | |
323 | 434 | msgid "Search" |
324 | -msgstr "" | |
435 | +msgstr "Search" | |
436 | + | |
437 | +#: search/forms.py:18 | |
438 | +msgid "Type" | |
439 | +msgstr "Type" | |
325 | 440 | |
326 | -#: search/forms.py:19 search/views.py:22 | |
441 | +#: search/forms.py:19 search/views.py:20 | |
327 | 442 | msgid "Author" |
328 | -msgstr "" | |
443 | +msgstr "Author" | |
329 | 444 | |
330 | 445 | #: search/forms.py:20 |
331 | 446 | msgid "Modified by" |
332 | -msgstr "" | |
447 | +msgstr "Modified by" | |
333 | 448 | |
334 | 449 | #: search/forms.py:22 |
335 | 450 | msgid "Status" |
336 | -msgstr "" | |
451 | +msgstr "Status" | |
337 | 452 | |
338 | -#: search/forms.py:26 search/views.py:25 | |
453 | +#: search/forms.py:26 search/views.py:23 | |
339 | 454 | msgid "Mailinglist" |
340 | -msgstr "" | |
455 | +msgstr "Mailinglist" | |
341 | 456 | |
342 | 457 | #: search/forms.py:30 |
343 | 458 | msgid "Milestone" |
344 | -msgstr "" | |
459 | +msgstr "Milestone" | |
345 | 460 | |
346 | 461 | #: search/forms.py:31 |
347 | 462 | msgid "Priority" |
348 | -msgstr "" | |
463 | +msgstr "Priority" | |
349 | 464 | |
350 | 465 | #: search/forms.py:32 |
351 | 466 | msgid "Component" |
352 | -msgstr "" | |
467 | +msgstr "Component" | |
353 | 468 | |
354 | 469 | #: search/forms.py:33 |
355 | 470 | msgid "Severity" |
356 | -msgstr "" | |
471 | +msgstr "Severity" | |
357 | 472 | |
358 | 473 | #: search/forms.py:34 |
359 | 474 | msgid "Reporter" |
360 | -msgstr "" | |
475 | +msgstr "Reporter" | |
361 | 476 | |
362 | 477 | #: search/forms.py:35 |
363 | 478 | msgid "Keywords" |
364 | -msgstr "" | |
479 | +msgstr "Keywords" | |
365 | 480 | |
366 | 481 | #: search/forms.py:36 |
367 | 482 | msgid "Collaborators" |
368 | -msgstr "" | |
483 | +msgstr "Collaborators" | |
369 | 484 | |
370 | -#: search/forms.py:37 templates/base.html:103 | |
485 | +#: search/forms.py:37 | |
371 | 486 | msgid "Repository" |
372 | -msgstr "" | |
373 | - | |
374 | -#: search/forms.py:38 | |
375 | -msgid "Username" | |
376 | -msgstr "" | |
487 | +msgstr "Repository" | |
377 | 488 | |
378 | 489 | #: search/forms.py:39 |
379 | 490 | msgid "Name" |
380 | -msgstr "" | |
491 | +msgstr "Name" | |
381 | 492 | |
382 | 493 | #: search/forms.py:40 |
383 | 494 | msgid "Institution" |
384 | -msgstr "" | |
495 | +msgstr "Institution" | |
385 | 496 | |
386 | 497 | #: search/forms.py:41 |
387 | 498 | msgid "Role" |
388 | -msgstr "" | |
499 | +msgstr "Role" | |
389 | 500 | |
390 | -#: search/forms.py:42 search/templates/search/includes/search_filters.html:154 | |
391 | -#: search/templates/search/includes/search_filters.html:156 | |
392 | -#: search/templates/search/includes/search_filters.html:188 | |
393 | -#: search/templates/search/includes/search_filters.html:189 | |
501 | +#: search/forms.py:42 search/templates/search/includes/search_filters.html:132 | |
502 | +#: search/templates/search/includes/search_filters.html:134 | |
503 | +#: search/templates/search/includes/search_filters.html:166 | |
504 | +#: search/templates/search/includes/search_filters.html:167 | |
394 | 505 | msgid "Since" |
395 | -msgstr "" | |
506 | +msgstr "Since" | |
396 | 507 | |
397 | -#: search/forms.py:43 search/templates/search/includes/search_filters.html:163 | |
398 | -#: search/templates/search/includes/search_filters.html:165 | |
399 | -#: search/templates/search/includes/search_filters.html:192 | |
400 | -#: search/templates/search/includes/search_filters.html:193 | |
508 | +#: search/forms.py:43 search/templates/search/includes/search_filters.html:141 | |
509 | +#: search/templates/search/includes/search_filters.html:143 | |
510 | +#: search/templates/search/includes/search_filters.html:170 | |
511 | +#: search/templates/search/includes/search_filters.html:171 | |
401 | 512 | msgid "Until" |
402 | -msgstr "" | |
513 | +msgstr "Until" | |
403 | 514 | |
404 | 515 | #: search/forms.py:44 |
405 | 516 | msgid "Filename" |
406 | -msgstr "" | |
517 | +msgstr "Filename" | |
407 | 518 | |
408 | 519 | #: search/forms.py:45 |
409 | 520 | msgid "Used by" |
410 | -msgstr "" | |
521 | +msgstr "Used by" | |
411 | 522 | |
412 | 523 | #: search/forms.py:46 |
413 | 524 | msgid "File type" |
414 | -msgstr "" | |
525 | +msgstr "File type" | |
415 | 526 | |
416 | 527 | #: search/forms.py:47 |
417 | 528 | msgid "Size" |
418 | -msgstr "" | |
529 | +msgstr "Size" | |
419 | 530 | |
420 | 531 | #: search/templates/search/includes/search_filters.html:5 |
421 | 532 | #: search/templates/search/includes/search_filters.html:33 |
422 | 533 | #: search/templates/search/includes/search_filters.html:51 |
423 | 534 | #: search/templates/search/includes/search_filters.html:69 |
424 | 535 | msgid "Remove filter" |
425 | -msgstr "" | |
536 | +msgstr "Remove filter" | |
426 | 537 | |
427 | 538 | #: search/templates/search/includes/search_filters.html:88 |
428 | -#: search/templates/search/includes/search_filters.html:174 | |
429 | -#: search/templates/search/includes/search_filters.html:198 | |
539 | +#: search/templates/search/includes/search_filters.html:152 | |
540 | +#: search/templates/search/includes/search_filters.html:176 | |
430 | 541 | msgid "Filter" |
431 | -msgstr "" | |
542 | +msgstr "Filter" | |
432 | 543 | |
433 | 544 | #: search/templates/search/includes/search_filters.html:94 |
434 | 545 | msgid "Sort by" |
435 | -msgstr "" | |
546 | +msgstr "Sort by" | |
436 | 547 | |
437 | 548 | #: search/templates/search/includes/search_filters.html:111 |
438 | 549 | msgid "Types" |
439 | -msgstr "" | |
440 | - | |
441 | -#: search/templates/search/includes/search_filters.html:118 search/utils.py:7 | |
442 | -#: templates/open-data.html:130 | |
443 | -msgid "Wiki" | |
444 | -msgstr "" | |
445 | - | |
446 | -#: search/templates/search/includes/search_filters.html:126 | |
447 | -msgid "Changeset" | |
448 | -msgstr "" | |
449 | - | |
450 | -#: search/templates/search/includes/search_filters.html:130 | |
451 | -msgid "User" | |
452 | -msgstr "" | |
453 | - | |
454 | -#: search/templates/search/includes/search_filters.html:134 | |
455 | -msgid "Attachment" | |
456 | -msgstr "" | |
550 | +msgstr "Types" | |
457 | 551 | |
458 | -#: search/templates/search/includes/search_filters.html:139 search/views.py:20 | |
552 | +#: search/templates/search/includes/search_filters.html:117 search/views.py:18 | |
459 | 553 | msgid "Discussion" |
460 | -msgstr "" | |
554 | +msgstr "Discussion" | |
461 | 555 | |
462 | 556 | #: search/templates/search/search.html:5 |
463 | 557 | msgid "search" |
464 | -msgstr "" | |
558 | +msgstr "search" | |
465 | 559 | |
466 | 560 | #: search/templates/search/search.html:51 |
467 | 561 | msgid "documents found" |
468 | -msgstr "" | |
562 | +msgstr "documents found" | |
469 | 563 | |
470 | 564 | #: search/templates/search/search.html:62 |
471 | 565 | msgid "Search here" |
472 | -msgstr "" | |
566 | +msgstr "Search here" | |
473 | 567 | |
474 | 568 | #: search/templates/search/search.html:74 |
475 | 569 | #: search/templates/search/search.html:84 |
476 | 570 | msgid "Filters" |
477 | -msgstr "" | |
571 | +msgstr "Filters" | |
478 | 572 | |
479 | 573 | #: search/templates/search/search.html:105 |
480 | 574 | msgid "No results for your search." |
481 | -msgstr "" | |
575 | +msgstr "No results for your search." | |
482 | 576 | |
483 | 577 | #: search/templates/search/search.html:107 |
484 | 578 | msgid "You are searching for" |
485 | -msgstr "" | |
486 | - | |
487 | -#: search/utils.py:9 settings.py:157 | |
488 | -msgid "Code" | |
489 | -msgstr "" | |
490 | - | |
491 | -#: search/utils.py:10 | |
492 | -msgid "Tickets" | |
493 | -msgstr "" | |
494 | - | |
495 | -#: search/utils.py:11 | |
496 | -msgid "Attachments" | |
497 | -msgstr "" | |
579 | +msgstr "You are searching for" | |
498 | 580 | |
499 | -#: settings.py:115 | |
581 | +#: settings.py:113 | |
500 | 582 | msgid "English" |
501 | -msgstr "" | |
583 | +msgstr "English" | |
502 | 584 | |
503 | -#: settings.py:116 | |
585 | +#: settings.py:114 | |
504 | 586 | msgid "Portuguese" |
505 | -msgstr "" | |
587 | +msgstr "Portuguese" | |
506 | 588 | |
507 | -#: settings.py:117 | |
589 | +#: settings.py:115 | |
508 | 590 | msgid "Spanish" |
509 | -msgstr "" | |
591 | +msgstr "Spanish" | |
510 | 592 | |
511 | -#: settings.py:140 | |
593 | +#: settings.py:138 | |
512 | 594 | msgid "Recent activity" |
513 | -msgstr "" | |
595 | +msgstr "Recent activity" | |
514 | 596 | |
515 | -#: settings.py:144 | |
597 | +#: settings.py:142 | |
516 | 598 | msgid "Relevance" |
517 | -msgstr "" | |
599 | +msgstr "Relevance" | |
518 | 600 | |
519 | -#: settings.py:153 | |
601 | +#: settings.py:151 | |
520 | 602 | msgid "Document" |
521 | -msgstr "" | |
603 | +msgstr "Document" | |
522 | 604 | |
523 | -#: settings.py:155 | |
605 | +#: settings.py:153 | |
524 | 606 | msgid "Presentation" |
525 | -msgstr "" | |
607 | +msgstr "Presentation" | |
526 | 608 | |
527 | -#: settings.py:156 | |
609 | +#: settings.py:154 | |
528 | 610 | msgid "Text" |
529 | -msgstr "" | |
530 | - | |
531 | -#: settings.py:159 | |
532 | -msgid "Compressed" | |
533 | -msgstr "" | |
534 | - | |
535 | -#: settings.py:162 | |
536 | -msgid "Spreadsheet" | |
537 | -msgstr "" | |
538 | - | |
539 | -#: settings.py:254 | |
540 | -msgid "Planet Colab" | |
541 | -msgstr "" | |
542 | - | |
543 | -#: settings.py:255 | |
544 | -msgid "Colab blog aggregator" | |
545 | -msgstr "" | |
546 | - | |
547 | -#: settings.py:288 | |
548 | -msgid "One Time Snippet" | |
549 | -msgstr "" | |
611 | +msgstr "Text" | |
550 | 612 | |
551 | -#: settings.py:289 | |
552 | -msgid "In one hour" | |
553 | -msgstr "" | |
613 | +#: settings.py:155 | |
614 | +msgid "Code" | |
615 | +msgstr "Code" | |
554 | 616 | |
555 | -#: settings.py:290 | |
556 | -msgid "In one week" | |
557 | -msgstr "" | |
617 | +#: settings.py:157 | |
618 | +msgid "Compressed" | |
619 | +msgstr "Compressed" | |
558 | 620 | |
559 | -#: settings.py:291 | |
560 | -msgid "In one month" | |
561 | -msgstr "" | |
621 | +#: settings.py:158 | |
622 | +msgid "Image" | |
623 | +msgstr "Image" | |
562 | 624 | |
563 | -#: settings.py:292 | |
564 | -msgid "Never" | |
565 | -msgstr "" | |
625 | +#: settings.py:160 | |
626 | +msgid "Spreadsheet" | |
627 | +msgstr "Spreadsheet" | |
566 | 628 | |
567 | 629 | #: templates/404.html:5 |
568 | 630 | msgid "Not found. Keep searching! :)" |
569 | -msgstr "" | |
631 | +msgstr "Not found. Keep searching! :)" | |
570 | 632 | |
571 | 633 | #: templates/500.html:2 |
572 | 634 | msgid "Ooopz... something went wrong!" |
573 | -msgstr "" | |
635 | +msgstr "Ooopz... something went wrong!" | |
574 | 636 | |
575 | -#: templates/base.html:87 | |
576 | -msgid "Timeline" | |
577 | -msgstr "" | |
578 | - | |
579 | -#: templates/base.html:92 templates/base.html.py:110 | |
637 | +#: templates/base.html:83 templates/header.html:21 | |
580 | 638 | msgid "Groups" |
581 | -msgstr "" | |
582 | - | |
583 | -#: templates/base.html:97 | |
584 | -msgid "Blogs" | |
585 | -msgstr "" | |
586 | - | |
587 | -#: templates/base.html:105 | |
588 | -msgid "Public Projects" | |
589 | -msgstr "" | |
590 | - | |
591 | -#: templates/base.html:107 templates/base.html.py:136 | |
592 | -msgid "Profile" | |
593 | -msgstr "" | |
594 | - | |
595 | -#: templates/base.html:108 | |
596 | -msgid "New Project" | |
597 | -msgstr "" | |
598 | - | |
599 | -#: templates/base.html:109 | |
600 | -msgid "Projects" | |
601 | -msgstr "" | |
602 | - | |
603 | -#: templates/base.html:111 | |
604 | -msgid "Issues" | |
605 | -msgstr "" | |
606 | - | |
607 | -#: templates/base.html:112 | |
608 | -msgid "Merge Requests" | |
609 | -msgstr "" | |
610 | - | |
611 | -#: templates/base.html:120 | |
612 | -msgid "Social" | |
613 | -msgstr "" | |
614 | - | |
615 | -#: templates/base.html:125 | |
616 | -msgid "Users" | |
617 | -msgstr "" | |
618 | - | |
619 | -#: templates/base.html:130 | |
620 | -msgid "Communities" | |
621 | -msgstr "" | |
622 | - | |
623 | -#: templates/base.html:141 | |
624 | -msgid "Control panel" | |
625 | -msgstr "" | |
639 | +msgstr "Groups" | |
626 | 640 | |
627 | -#: templates/base.html:150 | |
628 | -msgid "Contribute" | |
629 | -msgstr "" | |
630 | - | |
631 | -#: templates/base.html:154 | |
632 | -msgid "New Wiki Page" | |
633 | -msgstr "" | |
634 | - | |
635 | -#: templates/base.html:156 | |
636 | -msgid "View Tickets" | |
637 | -msgstr "" | |
638 | - | |
639 | -#: templates/base.html:158 | |
640 | -msgid "New Ticket" | |
641 | -msgstr "" | |
642 | - | |
643 | -#: templates/base.html:160 | |
644 | -msgid "Roadmap" | |
645 | -msgstr "" | |
646 | - | |
647 | -#: templates/base.html:163 | |
648 | -msgid "Browse Source" | |
649 | -msgstr "" | |
650 | - | |
651 | -#: templates/base.html:165 | |
652 | -msgid "Continuous Integration" | |
653 | -msgstr "" | |
654 | - | |
655 | -#: templates/base.html:201 | |
641 | +#: templates/base.html:119 templates/header.html:59 | |
656 | 642 | msgid "My Profile" |
657 | -msgstr "" | |
643 | +msgstr "My Profile" | |
658 | 644 | |
659 | -#: templates/base.html:202 | |
645 | +#: templates/base.html:120 templates/base.html.py:121 templates/header.html:60 | |
646 | +#: templates/header.html.py:61 | |
660 | 647 | msgid "Logout" |
661 | -msgstr "" | |
648 | +msgstr "Logout" | |
662 | 649 | |
663 | -#: templates/base.html:214 templates/base.html.py:217 | |
650 | +#: templates/base.html:132 templates/base.html.py:135 templates/header.html:72 | |
651 | +#: templates/header.html.py:75 | |
664 | 652 | msgid "Search here..." |
665 | -msgstr "" | |
653 | +msgstr "Search here..." | |
666 | 654 | |
667 | -#: templates/base.html:231 | |
655 | +#: templates/base.html:149 | |
668 | 656 | msgid "The login has failed. Please, try again." |
669 | -msgstr "" | |
657 | +msgstr "The login has failed. Please, try again." | |
670 | 658 | |
671 | -#: templates/base.html:256 | |
659 | +#: templates/footer.html:6 | |
672 | 660 | msgid "Last email imported at" |
673 | -msgstr "" | |
661 | +msgstr "Last email imported at" | |
674 | 662 | |
675 | -#: templates/base.html:263 | |
663 | +#: templates/footer.html:12 | |
676 | 664 | msgid "The contents of this site is published under license" |
677 | -msgstr "" | |
665 | +msgstr "The contents of this site is published under license" | |
678 | 666 | |
679 | -#: templates/base.html:266 | |
667 | +#: templates/footer.html:15 | |
680 | 668 | msgid "Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual" |
681 | -msgstr "" | |
669 | +msgstr "Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual" | |
670 | + | |
671 | +#: templates/header.html:26 | |
672 | +msgid "Paste" | |
673 | +msgstr "Paste" | |
682 | 674 | |
683 | 675 | #: templates/home.html:17 |
684 | 676 | msgid "Latest Collaborations" |
685 | -msgstr "" | |
677 | +msgstr "Latest Collaborations" | |
686 | 678 | |
687 | 679 | #: templates/home.html:21 |
688 | 680 | msgid "RSS - Latest collaborations" |
689 | -msgstr "" | |
681 | +msgstr "RSS - Latest collaborations" | |
690 | 682 | |
691 | 683 | #: templates/home.html:30 |
692 | 684 | msgid "View more collaborations..." |
693 | -msgstr "" | |
685 | +msgstr "View more collaborations..." | |
694 | 686 | |
695 | 687 | #: templates/home.html:37 |
696 | 688 | msgid "Collaboration Graph" |
697 | -msgstr "" | |
689 | +msgstr "Collaboration Graph" | |
698 | 690 | |
699 | 691 | #: templates/home.html:48 |
700 | 692 | msgid "Most Relevant Threads" |
701 | -msgstr "" | |
693 | +msgstr "Most Relevant Threads" | |
702 | 694 | |
703 | 695 | #: templates/home.html:52 |
704 | 696 | msgid "RSS - Most Relevant Threads" |
705 | -msgstr "" | |
697 | +msgstr "RSS - Most Relevant Threads" | |
706 | 698 | |
707 | 699 | #: templates/home.html:60 templates/home.html.py:79 |
708 | 700 | msgid "View more discussions..." |
709 | -msgstr "" | |
701 | +msgstr "View more discussions..." | |
710 | 702 | |
711 | 703 | #: templates/home.html:67 |
712 | 704 | msgid "Latest Threads" |
713 | -msgstr "" | |
705 | +msgstr "Latest Threads" | |
714 | 706 | |
715 | 707 | #: templates/home.html:71 |
716 | 708 | msgid "RSS - Latest Threads" |
717 | -msgstr "" | |
718 | - | |
719 | -#: templates/open-data.html:6 | |
720 | -msgid "OpenData - Communities" | |
721 | -msgstr "" | |
722 | - | |
723 | -#: templates/open-data.html:7 | |
724 | -msgid "" | |
725 | -"If you are interested in any other data that is not provided by this API, " | |
726 | -"please contact us via the ticketing system (you must be registered in order " | |
727 | -"to create a ticket)." | |
728 | -msgstr "" | |
729 | - | |
730 | -#: templates/open-data.html:9 | |
731 | -msgid "Retrieving data via API" | |
732 | -msgstr "" | |
733 | - | |
734 | -#: templates/open-data.html:10 | |
735 | -msgid "Colab API works through HTTP/REST, always returning JSON objects." | |
736 | -msgstr "" | |
737 | - | |
738 | -#: templates/open-data.html:12 | |
739 | -msgid "The base API URL is" | |
740 | -msgstr "" | |
741 | - | |
742 | -#: templates/open-data.html:19 | |
743 | -msgid "" | |
744 | -"Each model listed below has a resource_uri field available, which is the " | |
745 | -"object's data URI." | |
746 | -msgstr "" | |
747 | - | |
748 | -#: templates/open-data.html:20 | |
749 | -msgid "" | |
750 | -"The following list contains the available models to retrieve data and its " | |
751 | -"fields available for filtering" | |
752 | -msgstr "" | |
753 | - | |
754 | -#: templates/open-data.html:24 templates/open-data.html.py:39 | |
755 | -#: templates/open-data.html:50 templates/open-data.html.py:62 | |
756 | -#: templates/open-data.html:74 templates/open-data.html.py:95 | |
757 | -msgid "Fields" | |
758 | -msgstr "" | |
759 | - | |
760 | -#: templates/open-data.html:25 | |
761 | -msgid "" | |
762 | -"The email field is not shown for user's privacy, but you can use it to filter" | |
763 | -msgstr "" | |
764 | - | |
765 | -#: templates/open-data.html:27 | |
766 | -msgid "The user's username" | |
767 | -msgstr "" | |
768 | - | |
769 | -#: templates/open-data.html:28 | |
770 | -msgid "The user's email address" | |
771 | -msgstr "" | |
772 | - | |
773 | -#: templates/open-data.html:29 | |
774 | -msgid "What is the user's institution" | |
775 | -msgstr "" | |
776 | - | |
777 | -#: templates/open-data.html:30 | |
778 | -msgid "What is the user's role" | |
779 | -msgstr "" | |
780 | - | |
781 | -#: templates/open-data.html:31 | |
782 | -msgid "The user's first name" | |
783 | -msgstr "" | |
784 | - | |
785 | -#: templates/open-data.html:32 | |
786 | -msgid "The user's last name" | |
787 | -msgstr "" | |
788 | - | |
789 | -#: templates/open-data.html:33 | |
790 | -msgid "A mini bio of the user" | |
791 | -msgstr "" | |
792 | - | |
793 | -#: templates/open-data.html:40 | |
794 | -msgid "" | |
795 | -"The address field is not shown for user's privacy, but you can use it to " | |
796 | -"filter" | |
797 | -msgstr "" | |
798 | - | |
799 | -#: templates/open-data.html:42 | |
800 | -msgid "It has a relationshop with the user described above" | |
801 | -msgstr "" | |
802 | - | |
803 | -#: templates/open-data.html:43 | |
804 | -msgid "An email address" | |
805 | -msgstr "" | |
806 | - | |
807 | -#: templates/open-data.html:44 | |
808 | -msgid "The user's real name" | |
809 | -msgstr "" | |
810 | - | |
811 | -#: templates/open-data.html:52 | |
812 | -msgid "It has a relationship with the emailaddress described above" | |
813 | -msgstr "" | |
814 | - | |
815 | -#: templates/open-data.html:53 | |
816 | -msgid "The message's body" | |
817 | -msgstr "" | |
818 | - | |
819 | -#: templates/open-data.html:54 | |
820 | -msgid "The message's subject" | |
821 | -msgstr "" | |
822 | - | |
823 | -#: templates/open-data.html:55 | |
824 | -msgid "The message's id" | |
825 | -msgstr "" | |
826 | - | |
827 | -#: templates/open-data.html:56 | |
828 | -msgid "The message's received time" | |
829 | -msgstr "" | |
830 | - | |
831 | -#: templates/open-data.html:64 | |
832 | -msgid "The revision's author username" | |
833 | -msgstr "" | |
834 | - | |
835 | -#: templates/open-data.html:65 | |
836 | -msgid "When the revision's were created" | |
837 | -msgstr "" | |
838 | - | |
839 | -#: templates/open-data.html:66 | |
840 | -msgid "The revision's key" | |
841 | -msgstr "" | |
842 | - | |
843 | -#: templates/open-data.html:67 | |
844 | -msgid "The revision's message" | |
845 | -msgstr "" | |
846 | - | |
847 | -#: templates/open-data.html:68 | |
848 | -msgid "The revision's repository name" | |
849 | -msgstr "" | |
850 | - | |
851 | -#: templates/open-data.html:76 | |
852 | -msgid "The ticket's author username" | |
853 | -msgstr "" | |
854 | - | |
855 | -#: templates/open-data.html:77 | |
856 | -msgid "The ticket's component" | |
857 | -msgstr "" | |
858 | - | |
859 | -#: templates/open-data.html:78 | |
860 | -msgid "When the ticket's were created" | |
861 | -msgstr "" | |
862 | - | |
863 | -#: templates/open-data.html:79 | |
864 | -msgid "The ticket's description" | |
865 | -msgstr "" | |
866 | - | |
867 | -#: templates/open-data.html:80 | |
868 | -msgid "The ticket's id" | |
869 | -msgstr "" | |
870 | - | |
871 | -#: templates/open-data.html:81 | |
872 | -msgid "The ticket's keywords" | |
873 | -msgstr "" | |
874 | - | |
875 | -#: templates/open-data.html:82 | |
876 | -msgid "The ticket's milestone" | |
877 | -msgstr "" | |
878 | - | |
879 | -#: templates/open-data.html:83 templates/open-data.html.py:99 | |
880 | -msgid "The time of the last modification" | |
881 | -msgstr "" | |
882 | - | |
883 | -#: templates/open-data.html:84 | |
884 | -msgid "The username of the last user who modified the ticket" | |
885 | -msgstr "" | |
886 | - | |
887 | -#: templates/open-data.html:85 | |
888 | -msgid "The ticket's priority" | |
889 | -msgstr "" | |
890 | - | |
891 | -#: templates/open-data.html:86 | |
892 | -msgid "The ticket's severity" | |
893 | -msgstr "" | |
894 | - | |
895 | -#: templates/open-data.html:87 | |
896 | -msgid "The ticket's status" | |
897 | -msgstr "" | |
898 | - | |
899 | -#: templates/open-data.html:88 | |
900 | -msgid "The ticket's summary" | |
901 | -msgstr "" | |
902 | - | |
903 | -#: templates/open-data.html:89 | |
904 | -msgid "The ticket's version" | |
905 | -msgstr "" | |
906 | - | |
907 | -#: templates/open-data.html:97 | |
908 | -msgid "The wiki's author username" | |
909 | -msgstr "" | |
910 | - | |
911 | -#: templates/open-data.html:98 | |
912 | -msgid "When the wiki's were created" | |
913 | -msgstr "" | |
914 | - | |
915 | -#: templates/open-data.html:100 | |
916 | -msgid "The username of the last user who modified the wiki" | |
917 | -msgstr "" | |
918 | - | |
919 | -#: templates/open-data.html:101 | |
920 | -msgid "The wiki's name" | |
921 | -msgstr "" | |
922 | - | |
923 | -#: templates/open-data.html:102 | |
924 | -msgid "the wiki's content" | |
925 | -msgstr "" | |
926 | - | |
927 | -#: templates/open-data.html:109 | |
928 | -msgid "Parameters" | |
929 | -msgstr "" | |
930 | - | |
931 | -#: templates/open-data.html:112 | |
932 | -msgid "Results per page" | |
933 | -msgstr "" | |
934 | - | |
935 | -#: templates/open-data.html:113 | |
936 | -msgid "Number of results to be displayed per page." | |
937 | -msgstr "" | |
938 | - | |
939 | -#: templates/open-data.html:114 | |
940 | -msgid "Default: 20" | |
941 | -msgstr "" | |
942 | - | |
943 | -#: templates/open-data.html:118 | |
944 | -msgid "Starts of n element" | |
945 | -msgstr "" | |
946 | - | |
947 | -#: templates/open-data.html:119 | |
948 | -msgid "Where n is the index of the first result to appear in the page." | |
949 | -msgstr "" | |
950 | - | |
951 | -#: templates/open-data.html:120 | |
952 | -msgid "Default: 0" | |
953 | -msgstr "" | |
954 | - | |
955 | -#: templates/open-data.html:122 | |
956 | -msgid "Filtering" | |
957 | -msgstr "" | |
958 | - | |
959 | -#: templates/open-data.html:124 | |
960 | -msgid "The field name" | |
961 | -msgstr "" | |
962 | - | |
963 | -#: templates/open-data.html:125 | |
964 | -msgid "" | |
965 | -"If you are looking for a specific wiki, and you know the wiki's name, you " | |
966 | -"can filter it as below" | |
967 | -msgstr "" | |
968 | - | |
969 | -#: templates/open-data.html:126 | |
970 | -msgid "WikiName" | |
971 | -msgstr "" | |
972 | - | |
973 | -#: templates/open-data.html:127 | |
974 | -msgid "" | |
975 | -"Where "name" is the fieldname and "WikiName" is the " | |
976 | -"value you want to filter." | |
977 | -msgstr "" | |
978 | - | |
979 | -#: templates/open-data.html:128 | |
980 | -msgid "Usage" | |
981 | -msgstr "" | |
982 | - | |
983 | -#: templates/open-data.html:129 | |
984 | -msgid "" | |
985 | -"You can also filter using Django lookup fields with the double underscores, " | |
986 | -"just as below" | |
987 | -msgstr "" | |
988 | - | |
989 | -#: templates/open-data.html:131 templates/open-data.html.py:132 | |
990 | -msgid "test" | |
991 | -msgstr "" | |
992 | - | |
993 | -#: templates/open-data.html:133 | |
994 | -msgid "Usage with relationships" | |
995 | -msgstr "" | |
996 | - | |
997 | -#: templates/open-data.html:134 | |
998 | -msgid "" | |
999 | -"You can use related fields to filter too. So, you can filter by any field of " | |
1000 | -"emailaddress using the 'from_address' field of message, which has a relation " | |
1001 | -"to emailaddress. You will achieve the related fields by using double " | |
1002 | -"underscore and the field's name. See the example below" | |
1003 | -msgstr "" | |
1004 | - | |
1005 | -#: templates/open-data.html:136 | |
1006 | -msgid "" | |
1007 | -"So, real_name is a field of emailaddress, and you had access to this field " | |
1008 | -"by a message field called from_address and using double underscore to say " | |
1009 | -"you want to use a field of that relationship" | |
1010 | -msgstr "" | |
1011 | - | |
1012 | -#: templates/open-data.html:137 | |
1013 | -msgid "" | |
1014 | -"Note: email filters must be exact. Which means that __contains, " | |
1015 | -"__startswith, __endswith and others won't work" | |
1016 | -msgstr "" | |
1017 | - | |
1018 | -#: templates/open-data.html:138 | |
1019 | -msgid "" | |
1020 | -"Another example of usage with relations. Used to retrieve all messages of a " | |
1021 | -"given user, using the username or the email field" | |
1022 | -msgstr "" | |
709 | +msgstr "RSS - Latest Threads" | ... | ... |
colab/locale/pt_BR/LC_MESSAGES/django.mo
No preview for this file type
colab/locale/pt_BR/LC_MESSAGES/django.po
1 | 1 | # SOME DESCRIPTIVE TITLE. |
2 | 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
3 | 3 | # This file is distributed under the same license as the PACKAGE package. |
4 | -# | |
4 | +# | |
5 | 5 | # Translators: |
6 | +# Lucas Kanashiro Duarte <kanashiro.duarte@gmail.com>, 2015 | |
7 | +# macártur de sousa carvalho <macartur.sc@gmail.com>, 2015 | |
6 | 8 | # Sergio Oliveira <seocam@seocam.com>, 2014 |
7 | 9 | msgid "" |
8 | 10 | msgstr "" |
9 | 11 | "Project-Id-Version: colab\n" |
10 | 12 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2015-01-21 13:55+0000\n" | |
12 | -"PO-Revision-Date: 2014-11-21 17:31+0000\n" | |
13 | -"Last-Translator: Sergio Oliveira <seocam@seocam.com>\n" | |
14 | -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" | |
15 | -"colab/language/pt_BR/)\n" | |
16 | -"Language: pt_BR\n" | |
13 | +"POT-Creation-Date: 2015-09-01 13:15+0000\n" | |
14 | +"PO-Revision-Date: 2015-09-07 19:13+0000\n" | |
15 | +"Last-Translator: Lucas Kanashiro Duarte <kanashiro.duarte@gmail.com>\n" | |
16 | +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/colab/colab/language/pt_BR/)\n" | |
17 | 17 | "MIME-Version: 1.0\n" |
18 | 18 | "Content-Type: text/plain; charset=UTF-8\n" |
19 | 19 | "Content-Transfer-Encoding: 8bit\n" |
20 | +"Language: pt_BR\n" | |
20 | 21 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
21 | 22 | |
22 | -#: colab/accounts/admin.py:40 | |
23 | +#: accounts/admin.py:18 | |
23 | 24 | msgid "Personal info" |
24 | 25 | msgstr "Informações Pessoais" |
25 | 26 | |
26 | -#: colab/accounts/admin.py:43 | |
27 | +#: accounts/admin.py:24 | |
27 | 28 | msgid "Permissions" |
28 | 29 | msgstr "Permissões" |
29 | 30 | |
30 | -#: colab/accounts/admin.py:45 | |
31 | +#: accounts/admin.py:28 | |
31 | 32 | msgid "Important dates" |
32 | 33 | msgstr "Datas importantes" |
33 | 34 | |
34 | -#: colab/accounts/forms.py:25 | |
35 | +#: accounts/forms.py:37 | |
35 | 36 | msgid "Social account does not exist" |
36 | 37 | msgstr "Conta social não existe" |
37 | 38 | |
38 | -#: colab/accounts/forms.py:61 | |
39 | +#: accounts/forms.py:65 accounts/forms.py:71 accounts/forms.py:77 | |
39 | 40 | msgid "This field cannot be blank." |
40 | -msgstr "" | |
41 | - | |
42 | -#: colab/accounts/forms.py:67 colab/accounts/forms.py:128 | |
43 | -msgid "Password" | |
44 | -msgstr "Senha" | |
41 | +msgstr "Este campo não pode ficar em branco." | |
45 | 42 | |
46 | -#: colab/accounts/forms.py:68 | |
47 | -msgid "Confirm Password " | |
48 | -msgstr "Confirmar senha" | |
49 | - | |
50 | -#: colab/accounts/forms.py:79 | |
51 | -msgid "The two password fields didn't match." | |
52 | -msgstr "" | |
53 | - | |
54 | -#: colab/accounts/forms.py:96 | |
55 | -#: colab/accounts/templates/accounts/user_detail.html:38 | |
43 | +#: accounts/forms.py:118 accounts/templates/accounts/user_detail.html:38 | |
56 | 44 | msgid "Bio" |
57 | 45 | msgstr "Bio" |
58 | 46 | |
59 | -#: colab/accounts/forms.py:97 | |
47 | +#: accounts/forms.py:119 | |
60 | 48 | msgid "Write something about you in 200 characters or less." |
61 | 49 | msgstr "Escreva algo sobre você em 200 caracteres ou menos." |
62 | 50 | |
63 | -#: colab/accounts/forms.py:121 | |
51 | +#: accounts/forms.py:148 | |
64 | 52 | msgid "Mailing lists" |
65 | 53 | msgstr "Listas de e-mail" |
66 | 54 | |
67 | -#: colab/accounts/forms.py:130 | |
55 | +#: accounts/forms.py:161 | |
56 | +#, python-format | |
57 | +msgid "Email already used. Is it you? Please <a href='%(url)s'>login</a>" | |
58 | +msgstr "Este email ja está sendo utilizado.Caso seja o seu efetue o <a href='%(url)s'>login</a>" | |
59 | + | |
60 | +#: accounts/forms.py:163 | |
61 | +msgid "A user with that username already exists." | |
62 | +msgstr "Já existe um usuário com este nome." | |
63 | + | |
64 | +#: accounts/forms.py:164 accounts/forms.py:401 accounts/forms.py:465 | |
65 | +msgid "The two password fields didn't match." | |
66 | +msgstr "Os dois campos de senha não conferem." | |
67 | + | |
68 | +#: accounts/forms.py:166 accounts/forms.py:236 search/forms.py:38 | |
69 | +msgid "Username" | |
70 | +msgstr "Usuário" | |
71 | + | |
72 | +#: accounts/forms.py:173 accounts/forms.py:240 accounts/forms.py:277 | |
73 | +#: accounts/forms.py:467 | |
74 | +msgid "Password" | |
75 | +msgstr "Senha" | |
76 | + | |
77 | +#: accounts/forms.py:175 | |
68 | 78 | msgid "Password confirmation" |
69 | 79 | msgstr "Confirmação de senha" |
70 | 80 | |
71 | -#: colab/accounts/forms.py:132 | |
72 | -msgid "Enter the same password as above, for verification." | |
73 | -msgstr "Digite a mesma senha que acima, para verificação." | |
81 | +#: accounts/forms.py:237 accounts/models.py:78 | |
82 | +msgid "Required. 30 characters or fewer. Letters and digits." | |
83 | +msgstr "Obrigatório. 30 caracteres ou menos. Letras ou digitos." | |
74 | 84 | |
75 | -#: colab/accounts/forms.py:150 | |
76 | -msgid "Password mismatch" | |
77 | -msgstr "Senhas diferentes" | |
85 | +#: accounts/forms.py:239 | |
86 | +msgid "This value may contain only letters and numbers." | |
87 | +msgstr "Este campo pode conter apenas letras e números." | |
78 | 88 | |
79 | -#: colab/accounts/models.py:66 | |
80 | -msgid "Required. 30 characters or fewer. Letters, digits and ./+/-/_ only." | |
81 | -msgstr "" | |
82 | -"Obrigatório. 30 caracteres ou menos. Letras, números e ./+/-/_ somente." | |
89 | +#: accounts/forms.py:241 | |
90 | +msgid "" | |
91 | +"Raw passwords are not stored, so there is no way to see this user's " | |
92 | +"password, but you can change the password using <a href=\"password/\">this " | |
93 | +"form</a>." | |
94 | +msgstr "Senhas em claro não são armazenadas, então não será possível visualizar sua senha, no entanto você poderá modificar sua senha utilizando <a href=\\\"password/\\\">este formulário</a>." | |
83 | 95 | |
84 | -#: colab/accounts/models.py:71 | |
85 | -msgid "Enter a valid username." | |
86 | -msgstr "Insira um nome de usuário válido." | |
96 | +#: accounts/forms.py:280 | |
97 | +#, python-format | |
98 | +msgid "" | |
99 | +"Please enter a correct %(username)s and password. Note that both fields may " | |
100 | +"be case-sensitive." | |
101 | +msgstr "Por favor entre com um %(username)s e senha. Note que ambos os campos diferenciam letras maiúsculas de minúsculas" | |
87 | 102 | |
88 | -#: colab/accounts/templates/accounts/change_password.html:8 | |
89 | -msgid "Change XMPP Client and SVN Password" | |
90 | -msgstr "Trocar senha do Repositório e do Mensageiro" | |
91 | - | |
92 | -#: colab/accounts/templates/accounts/change_password.html:17 | |
93 | -#: colab/accounts/templates/accounts/user_update_form.html:186 | |
94 | -#: colab/accounts/templates/accounts/user_update_form.html:190 | |
95 | -#: colab/accounts/templates/accounts/user_update_form.html:202 | |
96 | -#: colab/accounts/templates/accounts/user_update_form.html:209 | |
97 | -#: colab/accounts/templates/registration/password_change_form_custom.html:27 | |
98 | -#: colab/accounts/templates/registration/password_reset_confirm_custom.html:29 | |
99 | -msgid "Change Password" | |
100 | -msgstr "Trocar senha" | |
103 | +#: accounts/forms.py:282 | |
104 | +msgid "This account is inactive." | |
105 | +msgstr "Esta conta está inativa." | |
101 | 106 | |
102 | -#: colab/accounts/templates/accounts/login.html:7 | |
103 | -msgid "To login please click in the link below:" | |
104 | -msgstr "Para acessar por favor clique no link abaixo:" | |
107 | +#: accounts/forms.py:345 | |
108 | +msgid "Email" | |
109 | +msgstr "Email" | |
105 | 110 | |
106 | -#: colab/accounts/templates/accounts/login.html:8 | |
107 | -#: colab/accounts/templates/registration/login.html:34 | |
108 | -#: colab/accounts/templates/registration/login.html:54 | |
109 | -#: colab/templates/base.html:185 colab/templates/base.html.py:190 | |
110 | -#: colab/templates/base.html:194 colab/templates/base.html.py:199 | |
111 | -msgid "Login" | |
112 | -msgstr "Entrar" | |
111 | +#: accounts/forms.py:403 | |
112 | +msgid "New password" | |
113 | +msgstr "Nova senha" | |
114 | + | |
115 | +#: accounts/forms.py:405 | |
116 | +msgid "New password confirmation" | |
117 | +msgstr "Confirmar nova senha" | |
118 | + | |
119 | +#: accounts/forms.py:436 | |
120 | +msgid "Your old password was entered incorrectly. Please enter it again." | |
121 | +msgstr "Sua senha atual está incorreta. Por favor tente novamente." | |
113 | 122 | |
114 | -#: colab/accounts/templates/accounts/manage_subscriptions.html:6 | |
123 | +#: accounts/forms.py:439 | |
124 | +msgid "Old password" | |
125 | +msgstr "Senha atual" | |
126 | + | |
127 | +#: accounts/forms.py:469 | |
128 | +msgid "Password (again)" | |
129 | +msgstr "Senha (novamente)" | |
130 | + | |
131 | +#: accounts/models.py:82 | |
132 | +msgid "Enter a valid username." | |
133 | +msgstr "Insira um nome de usuário válido." | |
134 | + | |
135 | +#: accounts/templates/accounts/manage_subscriptions.html:6 | |
115 | 136 | msgid "Group Subscriptions" |
116 | 137 | msgstr "Inscrições em grupos" |
117 | 138 | |
118 | -#: colab/accounts/templates/accounts/manage_subscriptions.html:36 | |
139 | +#: accounts/templates/accounts/manage_subscriptions.html:36 | |
119 | 140 | msgid "Update subscriptions" |
120 | 141 | msgstr "Atualizar inscrições" |
121 | 142 | |
122 | -#: colab/accounts/templates/accounts/user_create_form.html:5 | |
143 | +#: accounts/templates/accounts/user_create_form.html:5 | |
123 | 144 | msgid "Sign up" |
124 | 145 | msgstr "Cadastrar" |
125 | 146 | |
126 | -#: colab/accounts/templates/accounts/user_create_form.html:10 | |
127 | -#: colab/accounts/templates/registration/login.html:14 | |
128 | -#: colab/accounts/templates/registration/password_change_form_custom.html:13 | |
129 | -#: colab/accounts/templates/registration/password_reset_confirm_custom.html:15 | |
130 | -#: colab/accounts/templates/registration/password_reset_form_custom.html:9 | |
147 | +#: accounts/templates/accounts/user_create_form.html:10 | |
148 | +#: accounts/templates/registration/login.html:14 | |
149 | +#: accounts/templates/registration/password_change_form_custom.html:12 | |
150 | +#: accounts/templates/registration/password_reset_confirm_custom.html:14 | |
151 | +#: accounts/templates/registration/password_reset_form_custom.html:9 | |
131 | 152 | msgid "Please correct the errors below and try again." |
132 | -msgstr "Por favor, corrija os erros abaixo e tente novamente." | |
153 | +msgstr "Por favor corrija os erros abaixo e tente novamente." | |
133 | 154 | |
134 | -#: colab/accounts/templates/accounts/user_create_form.html:17 | |
155 | +#: accounts/templates/accounts/user_create_form.html:17 | |
135 | 156 | msgid "Required fields" |
136 | 157 | msgstr "Campos obrigatórios" |
137 | 158 | |
138 | -#: colab/accounts/templates/accounts/user_create_form.html:29 | |
159 | +#: accounts/templates/accounts/user_create_form.html:29 | |
139 | 160 | msgid "Personal Information" |
140 | 161 | msgstr "Informações pessoais" |
141 | 162 | |
142 | -#: colab/accounts/templates/accounts/user_create_form.html:46 | |
163 | +#: accounts/templates/accounts/user_create_form.html:46 | |
143 | 164 | msgid "Subscribe to groups" |
144 | 165 | msgstr "Inscreva-se nos grupos" |
145 | 166 | |
146 | -#: colab/accounts/templates/accounts/user_create_form.html:60 | |
147 | -#: colab/templates/base.html:189 colab/templates/base.html.py:198 | |
167 | +#: accounts/templates/accounts/user_create_form.html:60 | |
168 | +#: templates/base.html:100 templates/base.html.py:105 templates/header.html:40 | |
169 | +#: templates/header.html.py:45 | |
148 | 170 | msgid "Register" |
149 | 171 | msgstr "Cadastre-se" |
150 | 172 | |
151 | -#: colab/accounts/templates/accounts/user_detail.html:8 | |
173 | +#: accounts/templates/accounts/user_detail.html:8 | |
152 | 174 | msgid "Messages" |
153 | 175 | msgstr "Mensagens" |
154 | 176 | |
155 | -#: colab/accounts/templates/accounts/user_detail.html:9 | |
156 | -#: colab/templates/home.html:7 | |
177 | +#: accounts/templates/accounts/user_detail.html:9 templates/home.html:7 | |
157 | 178 | msgid "Contributions" |
158 | 179 | msgstr "Contribuições" |
159 | 180 | |
160 | -#: colab/accounts/templates/accounts/user_detail.html:29 | |
181 | +#: accounts/templates/accounts/user_detail.html:29 | |
161 | 182 | msgid "edit profile" |
162 | 183 | msgstr "editar perfil" |
163 | 184 | |
164 | -#: colab/accounts/templates/accounts/user_detail.html:30 | |
185 | +#: accounts/templates/accounts/user_detail.html:30 | |
165 | 186 | msgid "group membership" |
166 | 187 | msgstr "Inscrições nos grupos" |
167 | 188 | |
168 | -#: colab/accounts/templates/accounts/user_detail.html:65 | |
189 | +#: accounts/templates/accounts/user_detail.html:66 | |
169 | 190 | msgid "Twitter account" |
170 | 191 | msgstr "Conta Twitter" |
171 | 192 | |
172 | -#: colab/accounts/templates/accounts/user_detail.html:68 | |
193 | +#: accounts/templates/accounts/user_detail.html:69 | |
173 | 194 | msgid "Facebook account" |
174 | 195 | msgstr "Conta Facebook" |
175 | 196 | |
176 | -#: colab/accounts/templates/accounts/user_detail.html:73 | |
197 | +#: accounts/templates/accounts/user_detail.html:74 | |
177 | 198 | msgid "Google talk account" |
178 | -msgstr "Conta Google" | |
199 | +msgstr "Conta Google talk" | |
179 | 200 | |
180 | -#: colab/accounts/templates/accounts/user_detail.html:77 | |
201 | +#: accounts/templates/accounts/user_detail.html:78 | |
181 | 202 | msgid "Github account" |
182 | 203 | msgstr "Conta Github" |
183 | 204 | |
184 | -#: colab/accounts/templates/accounts/user_detail.html:81 | |
205 | +#: accounts/templates/accounts/user_detail.html:82 | |
185 | 206 | msgid "Personal webpage" |
186 | 207 | msgstr "Página web pessoal" |
187 | 208 | |
188 | -#: colab/accounts/templates/accounts/user_detail.html:87 | |
209 | +#: accounts/templates/accounts/user_detail.html:88 | |
189 | 210 | msgid "Groups: " |
190 | 211 | msgstr "Grupos: " |
191 | 212 | |
192 | -#: colab/accounts/templates/accounts/user_detail.html:100 | |
213 | +#: accounts/templates/accounts/user_detail.html:101 | |
193 | 214 | msgid "Collaborations by Type" |
194 | 215 | msgstr "Colaborações por tipo" |
195 | 216 | |
196 | -#: colab/accounts/templates/accounts/user_detail.html:116 | |
217 | +#: accounts/templates/accounts/user_detail.html:117 | |
197 | 218 | msgid "Participation by Group" |
198 | 219 | msgstr "Participação por grupo" |
199 | 220 | |
200 | -#: colab/accounts/templates/accounts/user_detail.html:132 | |
201 | -msgid "Badges" | |
202 | -msgstr "Medalhas" | |
203 | - | |
204 | -#: colab/accounts/templates/accounts/user_detail.html:151 | |
221 | +#: accounts/templates/accounts/user_detail.html:133 | |
205 | 222 | msgid "Latest posted" |
206 | 223 | msgstr "Últimas postagens" |
207 | 224 | |
208 | -#: colab/accounts/templates/accounts/user_detail.html:156 | |
225 | +#: accounts/templates/accounts/user_detail.html:138 | |
209 | 226 | msgid "There are no posts by this user so far." |
210 | 227 | msgstr "Não há posts deste usuário até agora." |
211 | 228 | |
212 | -#: colab/accounts/templates/accounts/user_detail.html:160 | |
229 | +#: accounts/templates/accounts/user_detail.html:142 | |
213 | 230 | msgid "View more posts..." |
214 | 231 | msgstr "Ver mais postagens..." |
215 | 232 | |
216 | -#: colab/accounts/templates/accounts/user_detail.html:166 | |
233 | +#: accounts/templates/accounts/user_detail.html:148 | |
217 | 234 | msgid "Latest contributions" |
218 | 235 | msgstr "Últimas colaborações" |
219 | 236 | |
220 | -#: colab/accounts/templates/accounts/user_detail.html:171 | |
237 | +#: accounts/templates/accounts/user_detail.html:153 | |
221 | 238 | msgid "No contributions of this user so far." |
222 | -msgstr "Não há posts deste usuário até agora." | |
239 | +msgstr "Não há contribuições deste usuário até agora." | |
223 | 240 | |
224 | -#: colab/accounts/templates/accounts/user_detail.html:175 | |
241 | +#: accounts/templates/accounts/user_detail.html:157 | |
225 | 242 | msgid "View more contributions..." |
226 | 243 | msgstr "Ver mais colaborações..." |
227 | 244 | |
228 | -#: colab/accounts/templates/accounts/user_update_form.html:65 | |
245 | +#: accounts/templates/accounts/user_update_form.html:65 | |
229 | 246 | msgid "We sent a verification email to " |
230 | 247 | msgstr "Enviamos um email de verificação para " |
231 | 248 | |
232 | -#: colab/accounts/templates/accounts/user_update_form.html:66 | |
249 | +#: accounts/templates/accounts/user_update_form.html:66 | |
233 | 250 | msgid "Please follow the instructions in it." |
234 | 251 | msgstr "Por favor, siga as instruções." |
235 | 252 | |
236 | -#: colab/accounts/templates/accounts/user_update_form.html:110 | |
253 | +#: accounts/templates/accounts/user_update_form.html:110 | |
237 | 254 | msgid "profile information" |
238 | 255 | msgstr "informações do perfil" |
239 | 256 | |
240 | -#: colab/accounts/templates/accounts/user_update_form.html:115 | |
257 | +#: accounts/templates/accounts/user_update_form.html:115 | |
241 | 258 | msgid "Change your avatar at Gravatar.com" |
242 | 259 | msgstr "Troque seu avatar em Gravatar.com" |
243 | 260 | |
244 | -#: colab/accounts/templates/accounts/user_update_form.html:142 | |
245 | -#: colab/search/utils.py:8 | |
261 | +#: accounts/templates/accounts/user_update_form.html:142 search/utils.py:56 | |
246 | 262 | msgid "Emails" |
247 | -msgstr "E-mails" | |
263 | +msgstr "Emails" | |
248 | 264 | |
249 | -#: colab/accounts/templates/accounts/user_update_form.html:151 | |
265 | +#: accounts/templates/accounts/user_update_form.html:151 | |
250 | 266 | msgid "Primary" |
251 | 267 | msgstr "Primário" |
252 | 268 | |
253 | -#: colab/accounts/templates/accounts/user_update_form.html:154 | |
269 | +#: accounts/templates/accounts/user_update_form.html:154 | |
254 | 270 | msgid "Setting..." |
255 | 271 | msgstr "Definindo..." |
256 | 272 | |
257 | -#: colab/accounts/templates/accounts/user_update_form.html:154 | |
273 | +#: accounts/templates/accounts/user_update_form.html:154 | |
258 | 274 | msgid "Set as Primary" |
259 | 275 | msgstr "Definir como Primário" |
260 | 276 | |
261 | -#: colab/accounts/templates/accounts/user_update_form.html:155 | |
277 | +#: accounts/templates/accounts/user_update_form.html:155 | |
262 | 278 | msgid "Deleting..." |
263 | -msgstr "Deletando..." | |
279 | +msgstr "Apagando..." | |
264 | 280 | |
265 | -#: colab/accounts/templates/accounts/user_update_form.html:155 | |
266 | -#: colab/accounts/templates/accounts/user_update_form.html:167 | |
281 | +#: accounts/templates/accounts/user_update_form.html:155 | |
282 | +#: accounts/templates/accounts/user_update_form.html:167 | |
267 | 283 | msgid "Delete" |
268 | 284 | msgstr "Apagar" |
269 | 285 | |
270 | -#: colab/accounts/templates/accounts/user_update_form.html:166 | |
286 | +#: accounts/templates/accounts/user_update_form.html:166 | |
271 | 287 | msgid "Sending verification..." |
272 | 288 | msgstr "Enviando verificação..." |
273 | 289 | |
274 | -#: colab/accounts/templates/accounts/user_update_form.html:166 | |
290 | +#: accounts/templates/accounts/user_update_form.html:166 | |
275 | 291 | msgid "Verify" |
276 | 292 | msgstr "Verificar" |
277 | 293 | |
278 | -#: colab/accounts/templates/accounts/user_update_form.html:174 | |
294 | +#: accounts/templates/accounts/user_update_form.html:174 | |
279 | 295 | msgid "Add another email address:" |
280 | -msgstr "Adicionar outro endereço de e-mail" | |
296 | +msgstr "Adicionar outro endereço de email" | |
281 | 297 | |
282 | -#: colab/accounts/templates/accounts/user_update_form.html:177 | |
298 | +#: accounts/templates/accounts/user_update_form.html:177 | |
283 | 299 | msgid "Add" |
284 | 300 | msgstr "Adicionar" |
285 | 301 | |
286 | -#: colab/accounts/templates/accounts/user_update_form.html:207 | |
287 | -msgid "" | |
288 | -"This feature is available only for those who need to change the password for " | |
289 | -"some reason as having an old user with the same username, forgot your " | |
290 | -"password to commit, usage of other XMPP Client for connection. Usually, you " | |
291 | -"won't need to change this password. Only change it if you are sure about " | |
292 | -"what you are doing." | |
293 | -msgstr "" | |
294 | -"Este recurso está disponível para quem precisa trocar a senha por algum " | |
295 | -"motivo como ter um usuário antigo com mesmo nome de usuário, esqueceu da " | |
296 | -"senha antiga para commit, uso de outro cliente XMPP para conexão. " | |
297 | -"Normalmente, você não terá que trocar essa senha. Somente troque essa senha " | |
298 | -"se tiver certeza do que está fazendo." | |
302 | +#: accounts/templates/accounts/user_update_form.html:185 | |
303 | +#: accounts/templates/accounts/user_update_form.html:189 | |
304 | +#: accounts/templates/registration/password_change_form_custom.html:26 | |
305 | +#: accounts/templates/registration/password_reset_confirm_custom.html:28 | |
306 | +msgid "Change Password" | |
307 | +msgstr "Trocar senha" | |
299 | 308 | |
300 | -#: colab/accounts/templates/accounts/user_update_form.html:217 | |
309 | +#: accounts/templates/accounts/user_update_form.html:196 | |
301 | 310 | msgid "Update" |
302 | 311 | msgstr "Atualizar" |
303 | 312 | |
304 | -#: colab/accounts/templates/registration/login.html:10 | |
305 | -#: colab/accounts/templates/registration/password_change_form_custom.html:11 | |
306 | -#: colab/accounts/templates/registration/password_reset_confirm_custom.html:12 | |
313 | +#: accounts/templates/registration/login.html:10 | |
314 | +#: accounts/templates/registration/password_change_form_custom.html:10 | |
315 | +#: accounts/templates/registration/password_reset_confirm_custom.html:12 | |
307 | 316 | msgid "Please correct the error below and try again." |
308 | -msgstr "Por favor, corrija o erro abaixo e tente novamente." | |
317 | +msgstr "Por favor corrija o erro abaixo e tente novamente." | |
318 | + | |
319 | +#: accounts/templates/registration/login.html:34 | |
320 | +#: accounts/templates/registration/login.html:54 templates/base.html:99 | |
321 | +#: templates/base.html.py:101 templates/base.html:104 | |
322 | +#: templates/base.html.py:106 templates/header.html:39 | |
323 | +#: templates/header.html.py:41 templates/header.html:44 | |
324 | +#: templates/header.html.py:46 | |
325 | +msgid "Login" | |
326 | +msgstr "Entrar" | |
309 | 327 | |
310 | -#: colab/accounts/templates/registration/login.html:56 | |
328 | +#: accounts/templates/registration/login.html:56 | |
311 | 329 | msgid "Forgot Password?" |
312 | -msgstr "Esqueceu sua senha?" | |
330 | +msgstr "Esqueci minha Senha?" | |
313 | 331 | |
314 | -#: colab/accounts/templates/registration/password_change_form_custom.html:55 | |
315 | -#: colab/accounts/templates/registration/password_reset_confirm_custom.html:52 | |
316 | -#, fuzzy | |
317 | -#| msgid "Change Password" | |
332 | +#: accounts/templates/registration/password_change_form_custom.html:54 | |
333 | +#: accounts/templates/registration/password_reset_confirm_custom.html:51 | |
318 | 334 | msgid "Change my password" |
319 | -msgstr "Trocar senha" | |
335 | +msgstr "Alterar minha senha" | |
320 | 336 | |
321 | -#: colab/accounts/templates/registration/password_reset_confirm_custom.html:3 | |
322 | -#, fuzzy | |
323 | -#| msgid "Change Password" | |
337 | +#: accounts/templates/registration/password_reset_confirm_custom.html:3 | |
324 | 338 | msgid "Setting New password" |
325 | -msgstr "Trocar senha" | |
339 | +msgstr "Definir Nova Senha" | |
326 | 340 | |
327 | -#: colab/accounts/templates/registration/password_reset_form_custom.html:23 | |
328 | -msgid "Forgotten your password? Enter your email address below, and we'll email " | |
341 | +#: accounts/templates/registration/password_reset_form_custom.html:23 | |
342 | +msgid "" | |
343 | +"Forgotten your password? Enter your email address below, and we'll email " | |
329 | 344 | "instructions for setting a new one." |
330 | -msgstr "Esqueceu sua senha? Entre com seu endereço de email abaixo e nós iremos lhe enviar instruções para configurar uma nova senha" | |
345 | +msgstr "Esqueceu sua senha? Digite seu email abaixo, e enviaremos instruções para redefinir sua senha." | |
331 | 346 | |
332 | -#: colab/accounts/templates/registration/password_reset_form_custom.html:26 | |
333 | -#, fuzzy | |
334 | -#| msgid "An email address" | |
347 | +#: accounts/templates/registration/password_reset_form_custom.html:26 | |
335 | 348 | msgid "Email address:" |
336 | -msgstr "Um endereço de e-mail" | |
349 | +msgstr "Endereço de email: " | |
337 | 350 | |
338 | -#: colab/accounts/templates/registration/password_reset_form_custom.html:37 | |
351 | +#: accounts/templates/registration/password_reset_form_custom.html:37 | |
339 | 352 | msgid "Reset password" |
340 | 353 | msgstr "Redefinir senha" |
341 | 354 | |
342 | -#: colab/accounts/views.py:180 | |
355 | +#: accounts/views.py:126 | |
343 | 356 | msgid "Your profile has been created!" |
344 | 357 | msgstr "Seu perfil foi criado!" |
345 | 358 | |
346 | -#: colab/accounts/views.py:264 | |
347 | -msgid "Could not change your password. Please, try again later." | |
348 | -msgstr "Não conseguimos alterar sua senha. Por favor, tente novamente mais tarde." | |
359 | +#: accounts/views.py:186 | |
360 | +msgid "Your password was changed." | |
361 | +msgstr "Sua senha foi modificada." | |
349 | 362 | |
350 | -#: colab/accounts/views.py:273 | |
351 | -msgid "You've changed your password successfully!" | |
352 | -msgstr "Senha alterada com sucesso!" | |
363 | +#: accounts/views.py:202 | |
364 | +msgid "Your password has been set. You may go ahead and log in now." | |
365 | +msgstr "Sua senha foi modificada. Você já pode efetuar o login agora." | |
353 | 366 | |
354 | -#: colab/accounts/views.py:279 | |
355 | -msgid "Your password was changed." | |
356 | -msgstr "Sua senha foi alterada" | |
367 | +#: home/context_processors.py:20 | |
368 | +msgid "Fork me!" | |
369 | +msgstr "Fork me!" | |
357 | 370 | |
358 | -#: colab/accounts/views.py:286 | |
359 | -msgid "We've emailed you instructions for setting your password. You should be receiving them shortly." | |
360 | -msgstr "Nos enviamos o email com as intruções para mudança de senha. Em breve você deve recebê-lo." | |
371 | +#: plugins/gitlab/models.py:27 | |
372 | +msgid "Gitlab Project" | |
373 | +msgstr "Projeto no Gitlab" | |
361 | 374 | |
362 | -#: colab/accounts/views.py:292 | |
363 | -msgid "Your password has been set. You may go ahead and log in now." | |
364 | -msgstr "Sua senha foi redefinida. Você pode prosseguir e autenticar agora." | |
375 | +#: plugins/gitlab/models.py:28 | |
376 | +msgid "Gitlab Projects" | |
377 | +msgstr "Projetos no Gitlab" | |
365 | 378 | |
366 | -#: colab/settings.py:160 | |
367 | -msgid "Image" | |
368 | -msgstr "Imagem" | |
379 | +#: plugins/gitlab/models.py:54 | |
380 | +msgid "Gitlab Group" | |
381 | +msgstr "Grupo no Gitlab" | |
369 | 382 | |
370 | -#: colab/search/templates/search/includes/search_filters.html:122 | |
371 | -msgid "Ticket" | |
372 | -msgstr "Tíquetes" | |
383 | +#: plugins/gitlab/models.py:55 | |
384 | +msgid "Gitlab Groups" | |
385 | +msgstr "Grupos no Gitlab" | |
373 | 386 | |
374 | -#: colab/search/forms.py:18 | |
375 | -msgid "Type" | |
376 | -msgstr "Tipo" | |
387 | +#: plugins/gitlab/models.py:91 | |
388 | +msgid "Gitlab Merge Request" | |
389 | +msgstr "Envio de Contribuição no Gitlab" | |
377 | 390 | |
378 | -#: colab/home/context_processors.py:20 | |
379 | -msgid "Fork me!" | |
380 | -msgstr "Fork me!" | |
391 | +#: plugins/gitlab/models.py:92 | |
392 | +msgid "Gitlab Merge Requests" | |
393 | +msgstr "Envio de Contribuições no Gitlab" | |
394 | + | |
395 | +#: plugins/gitlab/models.py:120 | |
396 | +msgid "Gitlab Issue" | |
397 | +msgstr "Tíquete no Gitlab" | |
398 | + | |
399 | +#: plugins/gitlab/models.py:121 | |
400 | +msgid "Gitlab Issues" | |
401 | +msgstr "Tíquetes no Gitlab" | |
381 | 402 | |
382 | -#: colab/rss/feeds.py:13 | |
403 | +#: plugins/gitlab/models.py:176 plugins/gitlab/models.py:177 | |
404 | +msgid "Gitlab Comments" | |
405 | +msgstr "Comentários no Gitlab" | |
406 | + | |
407 | +#: plugins/noosfero/models.py:39 | |
408 | +msgid "Community" | |
409 | +msgstr "Comunidade" | |
410 | + | |
411 | +#: plugins/noosfero/models.py:40 | |
412 | +msgid "Communities" | |
413 | +msgstr "Comunidades" | |
414 | + | |
415 | +#: plugins/noosfero/models.py:67 | |
416 | +msgid "Article" | |
417 | +msgstr "Artigo" | |
418 | + | |
419 | +#: plugins/noosfero/models.py:68 | |
420 | +msgid "Articles" | |
421 | +msgstr "Artigos" | |
422 | + | |
423 | +#: rss/feeds.py:13 | |
383 | 424 | msgid "Latest Discussions" |
384 | 425 | msgstr "Últimas discussões" |
385 | 426 | |
386 | -#: colab/rss/feeds.py:32 | |
427 | +#: rss/feeds.py:32 | |
387 | 428 | msgid "Discussions Most Relevance" |
388 | 429 | msgstr "Discussões Mais Relevantes" |
389 | 430 | |
390 | -#: colab/rss/feeds.py:51 | |
431 | +#: rss/feeds.py:51 | |
391 | 432 | msgid "Latest collaborations" |
392 | 433 | msgstr "Últimas colaborações" |
393 | 434 | |
394 | -#: colab/search/forms.py:16 colab/search/templates/search/search.html:46 | |
395 | -#: colab/templates/base.html:175 | |
435 | +#: search/forms.py:16 search/templates/search/search.html:46 | |
436 | +#: templates/base.html:89 templates/header.html:29 | |
396 | 437 | msgid "Search" |
397 | 438 | msgstr "Busca" |
398 | 439 | |
399 | -#: colab/search/forms.py:19 colab/search/views.py:22 | |
440 | +#: search/forms.py:18 | |
441 | +msgid "Type" | |
442 | +msgstr "Tipo" | |
443 | + | |
444 | +#: search/forms.py:19 search/views.py:20 | |
400 | 445 | msgid "Author" |
401 | 446 | msgstr "Autor" |
402 | 447 | |
403 | -#: colab/search/forms.py:20 | |
448 | +#: search/forms.py:20 | |
404 | 449 | msgid "Modified by" |
405 | 450 | msgstr "Modificado por" |
406 | 451 | |
407 | -#: colab/search/forms.py:22 | |
452 | +#: search/forms.py:22 | |
408 | 453 | msgid "Status" |
409 | 454 | msgstr "Status" |
410 | 455 | |
411 | -#: colab/search/forms.py:26 colab/search/views.py:25 | |
456 | +#: search/forms.py:26 search/views.py:23 | |
412 | 457 | msgid "Mailinglist" |
413 | -msgstr "Grupo" | |
458 | +msgstr "Lista de discussão" | |
414 | 459 | |
415 | -#: colab/search/forms.py:30 | |
460 | +#: search/forms.py:30 | |
416 | 461 | msgid "Milestone" |
417 | -msgstr "Etapa" | |
462 | +msgstr "Marco" | |
418 | 463 | |
419 | -#: colab/search/forms.py:31 | |
464 | +#: search/forms.py:31 | |
420 | 465 | msgid "Priority" |
421 | 466 | msgstr "Prioridade" |
422 | 467 | |
423 | -#: colab/search/forms.py:32 | |
468 | +#: search/forms.py:32 | |
424 | 469 | msgid "Component" |
425 | 470 | msgstr "Componente" |
426 | 471 | |
427 | -#: colab/search/forms.py:33 | |
472 | +#: search/forms.py:33 | |
428 | 473 | msgid "Severity" |
429 | -msgstr "Seriedade" | |
474 | +msgstr "Severidade" | |
430 | 475 | |
431 | -#: colab/search/forms.py:34 | |
476 | +#: search/forms.py:34 | |
432 | 477 | msgid "Reporter" |
433 | 478 | msgstr "Relator" |
434 | 479 | |
435 | -#: colab/search/forms.py:35 | |
480 | +#: search/forms.py:35 | |
436 | 481 | msgid "Keywords" |
437 | -msgstr "Palavras chaves" | |
482 | +msgstr "Palavras chave" | |
438 | 483 | |
439 | -#: colab/search/forms.py:36 | |
484 | +#: search/forms.py:36 | |
440 | 485 | msgid "Collaborators" |
441 | 486 | msgstr "Colaboradores" |
442 | 487 | |
443 | -#: colab/search/forms.py:37 colab/templates/base.html:107 | |
488 | +#: search/forms.py:37 | |
444 | 489 | msgid "Repository" |
445 | 490 | msgstr "Repositório" |
446 | 491 | |
447 | -#: colab/search/forms.py:38 | |
448 | -msgid "Username" | |
449 | -msgstr "Usuário" | |
450 | - | |
451 | -#: colab/search/forms.py:39 | |
492 | +#: search/forms.py:39 | |
452 | 493 | msgid "Name" |
453 | 494 | msgstr "Nome" |
454 | 495 | |
455 | -#: colab/search/forms.py:40 | |
496 | +#: search/forms.py:40 | |
456 | 497 | msgid "Institution" |
457 | 498 | msgstr "Instituição" |
458 | 499 | |
459 | -#: colab/search/forms.py:41 | |
500 | +#: search/forms.py:41 | |
460 | 501 | msgid "Role" |
461 | -msgstr "Cargo" | |
502 | +msgstr "Papel" | |
462 | 503 | |
463 | -#: colab/search/forms.py:42 | |
464 | -#: colab/search/templates/search/includes/search_filters.html:154 | |
465 | -#: colab/search/templates/search/includes/search_filters.html:156 | |
466 | -#: colab/search/templates/search/includes/search_filters.html:188 | |
467 | -#: colab/search/templates/search/includes/search_filters.html:189 | |
504 | +#: search/forms.py:42 search/templates/search/includes/search_filters.html:132 | |
505 | +#: search/templates/search/includes/search_filters.html:134 | |
506 | +#: search/templates/search/includes/search_filters.html:166 | |
507 | +#: search/templates/search/includes/search_filters.html:167 | |
468 | 508 | msgid "Since" |
469 | 509 | msgstr "Desde" |
470 | 510 | |
471 | -#: colab/search/forms.py:43 | |
472 | -#: colab/search/templates/search/includes/search_filters.html:163 | |
473 | -#: colab/search/templates/search/includes/search_filters.html:165 | |
474 | -#: colab/search/templates/search/includes/search_filters.html:192 | |
475 | -#: colab/search/templates/search/includes/search_filters.html:193 | |
511 | +#: search/forms.py:43 search/templates/search/includes/search_filters.html:141 | |
512 | +#: search/templates/search/includes/search_filters.html:143 | |
513 | +#: search/templates/search/includes/search_filters.html:170 | |
514 | +#: search/templates/search/includes/search_filters.html:171 | |
476 | 515 | msgid "Until" |
477 | 516 | msgstr "Até" |
478 | 517 | |
479 | -#: colab/search/forms.py:44 | |
518 | +#: search/forms.py:44 | |
480 | 519 | msgid "Filename" |
481 | 520 | msgstr "Nome do arquivo" |
482 | 521 | |
483 | -#: colab/search/forms.py:45 | |
522 | +#: search/forms.py:45 | |
484 | 523 | msgid "Used by" |
485 | 524 | msgstr "Usado por" |
486 | 525 | |
487 | -#: colab/search/forms.py:46 | |
526 | +#: search/forms.py:46 | |
488 | 527 | msgid "File type" |
489 | 528 | msgstr "Tipo do arquivo" |
490 | 529 | |
491 | -#: colab/search/forms.py:47 | |
530 | +#: search/forms.py:47 | |
492 | 531 | msgid "Size" |
493 | 532 | msgstr "Tamanho" |
494 | 533 | |
495 | -#: colab/search/templates/search/includes/search_filters.html:5 | |
496 | -#: colab/search/templates/search/includes/search_filters.html:33 | |
497 | -#: colab/search/templates/search/includes/search_filters.html:51 | |
498 | -#: colab/search/templates/search/includes/search_filters.html:69 | |
534 | +#: search/templates/search/includes/search_filters.html:5 | |
535 | +#: search/templates/search/includes/search_filters.html:33 | |
536 | +#: search/templates/search/includes/search_filters.html:51 | |
537 | +#: search/templates/search/includes/search_filters.html:69 | |
499 | 538 | msgid "Remove filter" |
500 | 539 | msgstr "Remover filtro" |
501 | 540 | |
502 | -#: colab/search/templates/search/includes/search_filters.html:88 | |
503 | -#: colab/search/templates/search/includes/search_filters.html:174 | |
504 | -#: colab/search/templates/search/includes/search_filters.html:198 | |
541 | +#: search/templates/search/includes/search_filters.html:88 | |
542 | +#: search/templates/search/includes/search_filters.html:152 | |
543 | +#: search/templates/search/includes/search_filters.html:176 | |
505 | 544 | msgid "Filter" |
506 | 545 | msgstr "Filtro" |
507 | 546 | |
508 | -#: colab/search/templates/search/includes/search_filters.html:94 | |
547 | +#: search/templates/search/includes/search_filters.html:94 | |
509 | 548 | msgid "Sort by" |
510 | 549 | msgstr "Ordenar por" |
511 | 550 | |
512 | -#: colab/search/templates/search/includes/search_filters.html:111 | |
551 | +#: search/templates/search/includes/search_filters.html:111 | |
513 | 552 | msgid "Types" |
514 | 553 | msgstr "Tipos" |
515 | 554 | |
516 | -#: colab/search/templates/search/includes/search_filters.html:118 | |
517 | -#: colab/search/utils.py:7 colab/templates/open-data.html:130 | |
518 | -msgid "Wiki" | |
519 | -msgstr "Wiki" | |
520 | - | |
521 | -#: colab/search/templates/search/includes/search_filters.html:126 | |
522 | -msgid "Changeset" | |
523 | -msgstr "Conjunto de Mudanças" | |
524 | - | |
525 | -#: colab/search/templates/search/includes/search_filters.html:130 | |
526 | -msgid "User" | |
527 | -msgstr "Usuário" | |
528 | - | |
529 | -#: colab/search/templates/search/includes/search_filters.html:134 | |
530 | -msgid "Attachment" | |
531 | -msgstr "Anexo" | |
532 | - | |
533 | -#: colab/search/templates/search/includes/search_filters.html:139 | |
534 | -#: colab/search/views.py:20 | |
555 | +#: search/templates/search/includes/search_filters.html:117 search/views.py:18 | |
535 | 556 | msgid "Discussion" |
536 | -msgstr "Discussões" | |
557 | +msgstr "Discussão" | |
537 | 558 | |
538 | -#: colab/search/templates/search/search.html:5 | |
559 | +#: search/templates/search/search.html:5 | |
539 | 560 | msgid "search" |
540 | 561 | msgstr "busca" |
541 | 562 | |
542 | -#: colab/search/templates/search/search.html:51 | |
563 | +#: search/templates/search/search.html:51 | |
543 | 564 | msgid "documents found" |
544 | 565 | msgstr "documentos encontrados" |
545 | 566 | |
546 | -#: colab/search/templates/search/search.html:62 | |
567 | +#: search/templates/search/search.html:62 | |
547 | 568 | msgid "Search here" |
548 | 569 | msgstr "Pesquise aqui" |
549 | 570 | |
550 | -#: colab/search/templates/search/search.html:74 | |
551 | -#: colab/search/templates/search/search.html:84 | |
571 | +#: search/templates/search/search.html:74 | |
572 | +#: search/templates/search/search.html:84 | |
552 | 573 | msgid "Filters" |
553 | 574 | msgstr "Filtros" |
554 | 575 | |
555 | -#: colab/search/templates/search/search.html:105 | |
576 | +#: search/templates/search/search.html:105 | |
556 | 577 | msgid "No results for your search." |
557 | 578 | msgstr "Não há resultados para sua busca." |
558 | 579 | |
559 | -#: colab/search/templates/search/search.html:107 | |
580 | +#: search/templates/search/search.html:107 | |
560 | 581 | msgid "You are searching for" |
561 | 582 | msgstr "Você está procurando por" |
562 | 583 | |
563 | -#: colab/search/utils.py:9 colab/settings.py:157 | |
564 | -msgid "Code" | |
565 | -msgstr "Código" | |
566 | - | |
567 | -#: colab/search/utils.py:10 | |
568 | -msgid "Tickets" | |
569 | -msgstr "Tíquetes" | |
570 | - | |
571 | -#: colab/search/utils.py:11 | |
572 | -msgid "Attachments" | |
573 | -msgstr "Anexos" | |
574 | - | |
575 | -#: colab/settings.py:115 | |
584 | +#: settings.py:113 | |
576 | 585 | msgid "English" |
577 | 586 | msgstr "Inglês" |
578 | 587 | |
579 | -#: colab/settings.py:116 | |
588 | +#: settings.py:114 | |
580 | 589 | msgid "Portuguese" |
581 | 590 | msgstr "Português" |
582 | 591 | |
583 | -#: colab/settings.py:117 | |
592 | +#: settings.py:115 | |
584 | 593 | msgid "Spanish" |
585 | 594 | msgstr "Espanhol" |
586 | 595 | |
587 | -#: colab/settings.py:140 | |
596 | +#: settings.py:138 | |
588 | 597 | msgid "Recent activity" |
589 | 598 | msgstr "Atividade recente" |
590 | 599 | |
591 | -#: colab/settings.py:144 | |
600 | +#: settings.py:142 | |
592 | 601 | msgid "Relevance" |
593 | 602 | msgstr "Relevância" |
594 | 603 | |
595 | -#: colab/settings.py:153 | |
604 | +#: settings.py:151 | |
596 | 605 | msgid "Document" |
597 | 606 | msgstr "Documento" |
598 | 607 | |
599 | -#: colab/settings.py:155 | |
608 | +#: settings.py:153 | |
600 | 609 | msgid "Presentation" |
601 | 610 | msgstr "Apresentação" |
602 | 611 | |
603 | -#: colab/settings.py:156 | |
612 | +#: settings.py:154 | |
604 | 613 | msgid "Text" |
605 | 614 | msgstr "Texto" |
606 | 615 | |
607 | -#: colab/settings.py:159 | |
616 | +#: settings.py:155 | |
617 | +msgid "Code" | |
618 | +msgstr "Código" | |
619 | + | |
620 | +#: settings.py:157 | |
608 | 621 | msgid "Compressed" |
609 | 622 | msgstr "Compactado" |
610 | 623 | |
611 | -#: colab/settings.py:162 | |
624 | +#: settings.py:158 | |
625 | +msgid "Image" | |
626 | +msgstr "Imagem" | |
627 | + | |
628 | +#: settings.py:160 | |
612 | 629 | msgid "Spreadsheet" |
613 | 630 | msgstr "Planilha" |
614 | 631 | |
615 | -#: colab/settings.py:260 | |
616 | -msgid "Planet Colab" | |
617 | -msgstr "Planet Colab" | |
618 | - | |
619 | -#: colab/settings.py:261 | |
620 | -msgid "Colab blog aggregator" | |
621 | -msgstr "Agregador de blog Colab" | |
622 | - | |
623 | -#: colab/settings.py:295 | |
624 | -msgid "One Time Snippet" | |
625 | -msgstr "Uma única visualização" | |
626 | - | |
627 | -#: colab/settings.py:296 | |
628 | -msgid "In one hour" | |
629 | -msgstr "Em uma hora" | |
630 | - | |
631 | -#: colab/settings.py:297 | |
632 | -msgid "In one week" | |
633 | -msgstr "Em uma semana" | |
634 | - | |
635 | -#: colab/settings.py:298 | |
636 | -msgid "In one month" | |
637 | -msgstr "Em um mês" | |
638 | - | |
639 | -#: colab/settings.py:299 | |
640 | -msgid "Never" | |
641 | -msgstr "Nunca" | |
642 | - | |
643 | -#: colab/templates/404.html:5 | |
632 | +#: templates/404.html:5 | |
644 | 633 | msgid "Not found. Keep searching! :)" |
645 | 634 | msgstr "Não encontrado. Continue procurando! :)" |
646 | 635 | |
647 | -#: colab/templates/500.html:2 | |
636 | +#: templates/500.html:2 | |
648 | 637 | msgid "Ooopz... something went wrong!" |
649 | -msgstr "Opa... algo saiu errado!" | |
638 | +msgstr "Ooopa... algo saiu errado!" | |
650 | 639 | |
651 | -#: colab/templates/base.html:91 | |
652 | -msgid "Timeline" | |
653 | -msgstr "Linha do Tempo" | |
654 | - | |
655 | -#: colab/templates/base.html:96 colab/templates/base.html.py:114 | |
640 | +#: templates/base.html:83 templates/header.html:21 | |
656 | 641 | msgid "Groups" |
657 | 642 | msgstr "Grupos" |
658 | 643 | |
659 | -#: colab/templates/base.html:101 | |
660 | -msgid "Blogs" | |
661 | -msgstr "Blogs" | |
662 | - | |
663 | -#: colab/templates/base.html:109 | |
664 | -msgid "Public Projects" | |
665 | -msgstr "Projetos Públicos" | |
666 | - | |
667 | -#: colab/templates/base.html:111 colab/templates/base.html.py:140 | |
668 | -msgid "Profile" | |
669 | -msgstr "Perfil" | |
670 | - | |
671 | -#: colab/templates/base.html:112 | |
672 | -msgid "New Project" | |
673 | -msgstr "Novo Projeto" | |
674 | - | |
675 | -#: colab/templates/base.html:113 | |
676 | -msgid "Projects" | |
677 | -msgstr "Projetos" | |
678 | - | |
679 | -#: colab/templates/base.html:115 | |
680 | -msgid "Issues" | |
681 | -msgstr "Tiquetes" | |
682 | - | |
683 | -#: colab/templates/base.html:116 | |
684 | -msgid "Merge Requests" | |
685 | -msgstr "Merge Requests" | |
686 | - | |
687 | -#: colab/templates/base.html:124 | |
688 | -msgid "Social" | |
689 | -msgstr "Social" | |
690 | - | |
691 | -#: colab/templates/base.html:129 | |
692 | -msgid "Users" | |
693 | -msgstr "Usuários" | |
694 | - | |
695 | -#: colab/templates/base.html:134 | |
696 | -msgid "Communities" | |
697 | -msgstr "Comunidades" | |
698 | - | |
699 | -#: colab/templates/base.html:145 | |
700 | -msgid "Control panel" | |
701 | -msgstr "Painel de Controle" | |
702 | - | |
703 | -#: colab/templates/base.html:154 | |
704 | -msgid "Contribute" | |
705 | -msgstr "Contribua" | |
706 | - | |
707 | -#: colab/templates/base.html:158 | |
708 | -msgid "New Wiki Page" | |
709 | -msgstr "Nova Página Wiki" | |
710 | - | |
711 | -#: colab/templates/base.html:160 | |
712 | -msgid "View Tickets" | |
713 | -msgstr "Ver Tiquetes" | |
714 | - | |
715 | -#: colab/templates/base.html:162 | |
716 | -msgid "New Ticket" | |
717 | -msgstr "Novo Tíquete" | |
718 | - | |
719 | -#: colab/templates/base.html:164 | |
720 | -msgid "Roadmap" | |
721 | -msgstr "Planejamento" | |
722 | - | |
723 | -#: colab/templates/base.html:167 | |
724 | -msgid "Browse Source" | |
725 | -msgstr "Códigos Fontes" | |
726 | - | |
727 | -#: colab/templates/base.html:169 | |
728 | -msgid "Continuous Integration" | |
729 | -msgstr "Integração Contínua" | |
730 | - | |
731 | -#: colab/templates/base.html:213 | |
644 | +#: templates/base.html:119 templates/header.html:59 | |
732 | 645 | msgid "My Profile" |
733 | 646 | msgstr "Meu Perfil" |
734 | 647 | |
735 | -#: colab/templates/base.html:214 colab/templates/base.html.py:218 | |
648 | +#: templates/base.html:120 templates/base.html.py:121 templates/header.html:60 | |
649 | +#: templates/header.html.py:61 | |
736 | 650 | msgid "Logout" |
737 | 651 | msgstr "Sair" |
738 | 652 | |
739 | -#: colab/templates/base.html:230 colab/templates/base.html.py:233 | |
653 | +#: templates/base.html:132 templates/base.html.py:135 templates/header.html:72 | |
654 | +#: templates/header.html.py:75 | |
740 | 655 | msgid "Search here..." |
741 | 656 | msgstr "Pesquise aqui..." |
742 | 657 | |
743 | -#: colab/templates/base.html:247 | |
658 | +#: templates/base.html:149 | |
744 | 659 | msgid "The login has failed. Please, try again." |
745 | 660 | msgstr "O login falhou. Por favor, tente novamente." |
746 | 661 | |
747 | -#: colab/templates/base.html:272 | |
662 | +#: templates/footer.html:6 | |
748 | 663 | msgid "Last email imported at" |
749 | -msgstr "Último e-mail importado em" | |
664 | +msgstr "Último email importado em" | |
750 | 665 | |
751 | -#: colab/templates/base.html:279 | |
666 | +#: templates/footer.html:12 | |
752 | 667 | msgid "The contents of this site is published under license" |
753 | 668 | msgstr "O conteúdo deste site está publicado sob a licença" |
754 | 669 | |
755 | -#: colab/templates/base.html:282 | |
670 | +#: templates/footer.html:15 | |
756 | 671 | msgid "Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual" |
757 | 672 | msgstr "Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual" |
758 | 673 | |
759 | -#: colab/templates/dpaste/snippet_details.html:37 | |
760 | -#, fuzzy | |
761 | -#| msgid "Comparison" | |
762 | -msgid "Compare" | |
763 | -msgstr "Comparação" | |
764 | - | |
765 | -#: colab/templates/dpaste/snippet_details.html:47 | |
766 | -#, python-format | |
767 | -msgid "Expires in: %(date)s" | |
768 | -msgstr "Expira em: %(date)s" | |
769 | - | |
770 | -#: colab/templates/dpaste/snippet_details.html:49 | |
771 | -msgid "Snippet never expires" | |
772 | -msgstr "Snippet nunca expira" | |
773 | - | |
774 | -#: colab/templates/dpaste/snippet_details.html:51 | |
775 | -#, fuzzy | |
776 | -#| msgid "One Time Snippet" | |
777 | -msgid "One-time snippet" | |
778 | -msgstr "Uma única visualização" | |
779 | - | |
780 | -#: colab/templates/dpaste/snippet_details.html:56 | |
781 | -msgid "Really delete this snippet?" | |
782 | -msgstr "Deseja realmente deletar esse snippet?" | |
783 | - | |
784 | -#: colab/templates/dpaste/snippet_details.html:58 | |
785 | -#, fuzzy | |
786 | -#| msgid "Delete" | |
787 | -msgid "Delete Now" | |
788 | -msgstr "Apagar" | |
789 | - | |
790 | -#: colab/templates/dpaste/snippet_details.html:63 | |
791 | -#: colab/templates/dpaste/snippet_details.html:65 | |
792 | -#, fuzzy | |
793 | -#| msgid "One Time Snippet" | |
794 | -msgid "Compare Snippets" | |
795 | -msgstr "Uma única visualização" | |
796 | - | |
797 | -#: colab/templates/dpaste/snippet_details.html:69 | |
798 | -#: colab/templates/dpaste/snippet_details.html:71 | |
799 | -msgid "View Raw" | |
800 | -msgstr "Ver código" | |
801 | - | |
802 | -#: colab/templates/dpaste/snippet_details.html:75 | |
803 | -msgid "Gist" | |
804 | -msgstr "Gist" | |
805 | - | |
806 | -#: colab/templates/dpaste/snippet_details.html:88 | |
807 | -msgid "This is a one-time snippet." | |
808 | -msgstr "Esste é um snippet que será usado apenas uma vez." | |
809 | - | |
810 | -#: colab/templates/dpaste/snippet_details.html:90 | |
811 | -msgid "It will automatically get deleted after {{ remaining }} further views." | |
812 | -msgstr "Isso será automaticamente deletado depois de {{ remaining }} visualizações." | |
813 | - | |
814 | -#: colab/templates/dpaste/snippet_details.html:92 | |
815 | -msgid "It will automatically get deleted after the next view." | |
816 | -msgstr "Isso será automaticamente deletado após a próxima visualização." | |
817 | - | |
818 | -#: colab/templates/dpaste/snippet_details.html:94 | |
819 | -msgid "It cannot be viewed again." | |
820 | -msgstr "Isso não pode ser visto novamente." | |
821 | - | |
822 | -#: colab/templates/dpaste/snippet_details.html:109 | |
823 | -msgid "Reply to this snippet" | |
824 | -msgstr "Responda esse snippet" | |
825 | - | |
826 | -#: colab/templates/dpaste/snippet_diff.html:5 | |
827 | -#, python-format | |
828 | -msgid "" | |
829 | -"\n" | |
830 | -" Diff between <a href=\"%(filea_url)s\">#%(filea_id)s</a> and <a href=" | |
831 | -"\"%(fileb_url)s\">#%(fileb_id)s</a>\n" | |
832 | -" " | |
833 | -msgstr "" | |
834 | -"\n" | |
835 | - " Diferença entre <a href=\"%(filea_url)s\">#%(filea_id)s</a> e <a href=" | |
836 | - "\"%(fileb_url)s\">#%(fileb_id)s</a>\n" | |
837 | - " " | |
838 | - | |
839 | -#: colab/templates/dpaste/snippet_form.html:28 | |
840 | -msgid "Paste it" | |
674 | +#: templates/header.html:26 | |
675 | +msgid "Paste" | |
841 | 676 | msgstr "Cole aqui" |
842 | 677 | |
843 | -#: colab/templates/home.html:17 | |
678 | +#: templates/home.html:17 | |
844 | 679 | msgid "Latest Collaborations" |
845 | 680 | msgstr "Últimas Colaborações" |
846 | 681 | |
847 | -#: colab/templates/home.html:21 | |
682 | +#: templates/home.html:21 | |
848 | 683 | msgid "RSS - Latest collaborations" |
849 | 684 | msgstr "RSS - Últimas Colaborações" |
850 | 685 | |
851 | -#: colab/templates/home.html:30 | |
686 | +#: templates/home.html:30 | |
852 | 687 | msgid "View more collaborations..." |
853 | 688 | msgstr "Ver mais colaborações..." |
854 | 689 | |
855 | -#: colab/templates/home.html:37 | |
690 | +#: templates/home.html:37 | |
856 | 691 | msgid "Collaboration Graph" |
857 | 692 | msgstr "Gráfico de Colaborações" |
858 | 693 | |
859 | -#: colab/templates/home.html:48 | |
694 | +#: templates/home.html:48 | |
860 | 695 | msgid "Most Relevant Threads" |
861 | 696 | msgstr "Discussões Mais Relevantes" |
862 | 697 | |
863 | -#: colab/templates/home.html:52 | |
698 | +#: templates/home.html:52 | |
864 | 699 | msgid "RSS - Most Relevant Threads" |
865 | 700 | msgstr "RSS - Discussões Mais Relevantes" |
866 | 701 | |
867 | -#: colab/templates/home.html:60 colab/templates/home.html.py:79 | |
702 | +#: templates/home.html:60 templates/home.html.py:79 | |
868 | 703 | msgid "View more discussions..." |
869 | 704 | msgstr "Ver mais discussões..." |
870 | 705 | |
871 | -#: colab/templates/home.html:67 | |
706 | +#: templates/home.html:67 | |
872 | 707 | msgid "Latest Threads" |
873 | 708 | msgstr "Últimas Discussões" |
874 | 709 | |
875 | -#: colab/templates/home.html:71 | |
710 | +#: templates/home.html:71 | |
876 | 711 | msgid "RSS - Latest Threads" |
877 | 712 | msgstr "RSS - Últimas Discussões" |
878 | - | |
879 | -#: colab/templates/open-data.html:6 | |
880 | -msgid "OpenData - Communities" | |
881 | -msgstr "OpenData - Comunidades" | |
882 | - | |
883 | -#: colab/templates/open-data.html:7 | |
884 | -msgid "" | |
885 | -"If you are interested in any other data that is not provided by this API, " | |
886 | -"please contact us via the ticketing system (you must be registered in order " | |
887 | -"to create a ticket)." | |
888 | -msgstr "" | |
889 | -"Se você estiver interessado por qualquer outra informação não provida por " | |
890 | -"esta API, por favor nos contacte através do nosso sistema de tíquetes (você " | |
891 | -"deve estar logado para conseguir criar um tíquete). " | |
892 | - | |
893 | -#: colab/templates/open-data.html:9 | |
894 | -msgid "Retrieving data via API" | |
895 | -msgstr "Recuperando informação através da API" | |
896 | - | |
897 | -#: colab/templates/open-data.html:10 | |
898 | -msgid "Colab API works through HTTP/REST, always returning JSON objects." | |
899 | -msgstr "" | |
900 | -"A API do Colab funciona com a utilização de HTTP/REST e sempre retorna " | |
901 | -"objetos JSON." | |
902 | - | |
903 | -#: colab/templates/open-data.html:12 | |
904 | -msgid "The base API URL is" | |
905 | -msgstr "A URL base da API é" | |
906 | - | |
907 | -#: colab/templates/open-data.html:19 | |
908 | -msgid "" | |
909 | -"Each model listed below has a resource_uri field available, which is the " | |
910 | -"object's data URI." | |
911 | -msgstr "" | |
912 | -"Cada modelo listado abaixo tem um resource_uri que representa a URI do objeto" | |
913 | - | |
914 | -#: colab/templates/open-data.html:20 | |
915 | -msgid "" | |
916 | -"The following list contains the available models to retrieve data and its " | |
917 | -"fields available for filtering" | |
918 | -msgstr "" | |
919 | -"A lista abaixo contém a lista de modelo disponíveis para pesquisa e os " | |
920 | -"campos disponíveis para filtro" | |
921 | - | |
922 | -#: colab/templates/open-data.html:24 colab/templates/open-data.html.py:39 | |
923 | -#: colab/templates/open-data.html:50 colab/templates/open-data.html.py:62 | |
924 | -#: colab/templates/open-data.html:74 colab/templates/open-data.html.py:95 | |
925 | -msgid "Fields" | |
926 | -msgstr "Campos" | |
927 | - | |
928 | -#: colab/templates/open-data.html:25 | |
929 | -msgid "" | |
930 | -"The email field is not shown for user's privacy, but you can use it to filter" | |
931 | -msgstr "" | |
932 | -"O campo email não é exibido por uma questão de privacidade do usuário, por " | |
933 | -"outro lado ele poderá ser utilizado em filtros" | |
934 | - | |
935 | -#: colab/templates/open-data.html:27 | |
936 | -msgid "The user's username" | |
937 | -msgstr "O username do usuário" | |
938 | - | |
939 | -#: colab/templates/open-data.html:28 | |
940 | -msgid "The user's email address" | |
941 | -msgstr "O endereço e-mail do usuário" | |
942 | - | |
943 | -#: colab/templates/open-data.html:29 | |
944 | -msgid "What is the user's institution" | |
945 | -msgstr "Instituição do usuário" | |
946 | - | |
947 | -#: colab/templates/open-data.html:30 | |
948 | -msgid "What is the user's role" | |
949 | -msgstr "Posição do usuário" | |
950 | - | |
951 | -#: colab/templates/open-data.html:31 | |
952 | -msgid "The user's first name" | |
953 | -msgstr "Primeiro nome do usuário" | |
954 | - | |
955 | -#: colab/templates/open-data.html:32 | |
956 | -msgid "The user's last name" | |
957 | -msgstr "Último nome do usuário" | |
958 | - | |
959 | -#: colab/templates/open-data.html:33 | |
960 | -msgid "A mini bio of the user" | |
961 | -msgstr "O mini bio do usuário" | |
962 | - | |
963 | -#: colab/templates/open-data.html:40 | |
964 | -msgid "" | |
965 | -"The address field is not shown for user's privacy, but you can use it to " | |
966 | -"filter" | |
967 | -msgstr "" | |
968 | -"O campo email não é exibido por uma questão de privacidade do usuário, por " | |
969 | -"outro lado ele poderá ser utilizado em filtros" | |
970 | - | |
971 | -#: colab/templates/open-data.html:42 | |
972 | -msgid "It has a relationshop with the user described above" | |
973 | -msgstr "Tem um relacionamento com usuário como descrito acima" | |
974 | - | |
975 | -#: colab/templates/open-data.html:43 | |
976 | -msgid "An email address" | |
977 | -msgstr "Um endereço de e-mail" | |
978 | - | |
979 | -#: colab/templates/open-data.html:44 | |
980 | -msgid "The user's real name" | |
981 | -msgstr "O nome real do usuário" | |
982 | - | |
983 | -#: colab/templates/open-data.html:52 | |
984 | -msgid "It has a relationship with the emailaddress described above" | |
985 | -msgstr "Tem um relacionamento com emailaddress como descrito acima" | |
986 | - | |
987 | -#: colab/templates/open-data.html:53 | |
988 | -msgid "The message's body" | |
989 | -msgstr "O corpo da mensagem" | |
990 | - | |
991 | -#: colab/templates/open-data.html:54 | |
992 | -msgid "The message's subject" | |
993 | -msgstr "O título da mensagem" | |
994 | - | |
995 | -#: colab/templates/open-data.html:55 | |
996 | -msgid "The message's id" | |
997 | -msgstr "O ID da mensagem" | |
998 | - | |
999 | -#: colab/templates/open-data.html:56 | |
1000 | -msgid "The message's received time" | |
1001 | -msgstr "A hora que a mensagem foi recebida" | |
1002 | - | |
1003 | -#: colab/templates/open-data.html:64 | |
1004 | -msgid "The revision's author username" | |
1005 | -msgstr "O username do autor da revisão" | |
1006 | - | |
1007 | -#: colab/templates/open-data.html:65 | |
1008 | -msgid "When the revision's were created" | |
1009 | -msgstr "Quando a revisão foi criada" | |
1010 | - | |
1011 | -#: colab/templates/open-data.html:66 | |
1012 | -msgid "The revision's key" | |
1013 | -msgstr "A chave da revisão" | |
1014 | - | |
1015 | -#: colab/templates/open-data.html:67 | |
1016 | -msgid "The revision's message" | |
1017 | -msgstr "A mensagem da revisão" | |
1018 | - | |
1019 | -#: colab/templates/open-data.html:68 | |
1020 | -msgid "The revision's repository name" | |
1021 | -msgstr "O nome do repositório da revisão" | |
1022 | - | |
1023 | -#: colab/templates/open-data.html:76 | |
1024 | -msgid "The ticket's author username" | |
1025 | -msgstr "O nome do autor do tíquete" | |
1026 | - | |
1027 | -#: colab/templates/open-data.html:77 | |
1028 | -msgid "The ticket's component" | |
1029 | -msgstr "O componente do tíquete" | |
1030 | - | |
1031 | -#: colab/templates/open-data.html:78 | |
1032 | -msgid "When the ticket's were created" | |
1033 | -msgstr "Quando o tíquete foi criado" | |
1034 | - | |
1035 | -#: colab/templates/open-data.html:79 | |
1036 | -msgid "The ticket's description" | |
1037 | -msgstr "A descrição do tíquete" | |
1038 | - | |
1039 | -#: colab/templates/open-data.html:80 | |
1040 | -msgid "The ticket's id" | |
1041 | -msgstr "O ID do tíquete" | |
1042 | - | |
1043 | -#: colab/templates/open-data.html:81 | |
1044 | -msgid "The ticket's keywords" | |
1045 | -msgstr "As keywords do tíquete" | |
1046 | - | |
1047 | -#: colab/templates/open-data.html:82 | |
1048 | -msgid "The ticket's milestone" | |
1049 | -msgstr "O milestone do tíquete" | |
1050 | - | |
1051 | -#: colab/templates/open-data.html:83 colab/templates/open-data.html.py:99 | |
1052 | -msgid "The time of the last modification" | |
1053 | -msgstr "A hora da última modificação" | |
1054 | - | |
1055 | -#: colab/templates/open-data.html:84 | |
1056 | -msgid "The username of the last user who modified the ticket" | |
1057 | -msgstr "O username do último usuário que modificou o tíquete" | |
1058 | - | |
1059 | -#: colab/templates/open-data.html:85 | |
1060 | -msgid "The ticket's priority" | |
1061 | -msgstr "A prioridade do tíquete" | |
1062 | - | |
1063 | -#: colab/templates/open-data.html:86 | |
1064 | -msgid "The ticket's severity" | |
1065 | -msgstr "A gravidade do tíquete" | |
1066 | - | |
1067 | -#: colab/templates/open-data.html:87 | |
1068 | -msgid "The ticket's status" | |
1069 | -msgstr "O status do tíquete" | |
1070 | - | |
1071 | -#: colab/templates/open-data.html:88 | |
1072 | -msgid "The ticket's summary" | |
1073 | -msgstr "O resumo do tíquete" | |
1074 | - | |
1075 | -#: colab/templates/open-data.html:89 | |
1076 | -msgid "The ticket's version" | |
1077 | -msgstr "A versão do tíquete" | |
1078 | - | |
1079 | -#: colab/templates/open-data.html:97 | |
1080 | -msgid "The wiki's author username" | |
1081 | -msgstr "O username do autor da wiki" | |
1082 | - | |
1083 | -#: colab/templates/open-data.html:98 | |
1084 | -msgid "When the wiki's were created" | |
1085 | -msgstr "Quando a wiki foi criada" | |
1086 | - | |
1087 | -#: colab/templates/open-data.html:100 | |
1088 | -msgid "The username of the last user who modified the wiki" | |
1089 | -msgstr "O username do último usuário a modificar a wiki" | |
1090 | - | |
1091 | -#: colab/templates/open-data.html:101 | |
1092 | -msgid "The wiki's name" | |
1093 | -msgstr "O nome da wiki" | |
1094 | - | |
1095 | -#: colab/templates/open-data.html:102 | |
1096 | -msgid "the wiki's content" | |
1097 | -msgstr "O conteúdo da wiki" | |
1098 | - | |
1099 | -#: colab/templates/open-data.html:109 | |
1100 | -msgid "Parameters" | |
1101 | -msgstr "Parâmetros" | |
1102 | - | |
1103 | -#: colab/templates/open-data.html:112 | |
1104 | -msgid "Results per page" | |
1105 | -msgstr "Resultados por página" | |
1106 | - | |
1107 | -#: colab/templates/open-data.html:113 | |
1108 | -msgid "Number of results to be displayed per page." | |
1109 | -msgstr "Número de resultados a serem exibidos por página." | |
1110 | - | |
1111 | -#: colab/templates/open-data.html:114 | |
1112 | -msgid "Default: 20" | |
1113 | -msgstr "Padrão: 20" | |
1114 | - | |
1115 | -#: colab/templates/open-data.html:118 | |
1116 | -msgid "Starts of n element" | |
1117 | -msgstr "Inicia pelo n-ésimo elemento" | |
1118 | - | |
1119 | -#: colab/templates/open-data.html:119 | |
1120 | -msgid "Where n is the index of the first result to appear in the page." | |
1121 | -msgstr "Onde n é o índice do primeiro resultado a ser exibido na página." | |
1122 | - | |
1123 | -#: colab/templates/open-data.html:120 | |
1124 | -msgid "Default: 0" | |
1125 | -msgstr "Padrão: 0" | |
1126 | - | |
1127 | -#: colab/templates/open-data.html:122 | |
1128 | -msgid "Filtering" | |
1129 | -msgstr "Filtrando" | |
1130 | - | |
1131 | -#: colab/templates/open-data.html:124 | |
1132 | -msgid "The field name" | |
1133 | -msgstr "O nome do campo" | |
1134 | - | |
1135 | -#: colab/templates/open-data.html:125 | |
1136 | -msgid "" | |
1137 | -"If you are looking for a specific wiki, and you know the wiki's name, you " | |
1138 | -"can filter it as below" | |
1139 | -msgstr "" | |
1140 | -"Se você está buscando especificamente por uma wiki e você sabe o nome da " | |
1141 | -"wiki, você pode utilizar o filtro abaixo" | |
1142 | - | |
1143 | -#: colab/templates/open-data.html:126 | |
1144 | -msgid "WikiName" | |
1145 | -msgstr "WikiName" | |
1146 | - | |
1147 | -#: colab/templates/open-data.html:127 | |
1148 | -msgid "" | |
1149 | -"Where "name" is the fieldname and "WikiName" is the " | |
1150 | -"value you want to filter." | |
1151 | -msgstr "" | |
1152 | -"Onde "name" é o fieldname e "WikiName" é o value que " | |
1153 | -"você quer filtrar." | |
1154 | - | |
1155 | -#: colab/templates/open-data.html:128 | |
1156 | -msgid "Usage" | |
1157 | -msgstr "Uso" | |
1158 | - | |
1159 | -#: colab/templates/open-data.html:129 | |
1160 | -msgid "" | |
1161 | -"You can also filter using Django lookup fields with the double underscores, " | |
1162 | -"just as below" | |
1163 | -msgstr "" | |
1164 | -"Você também pode filtrar usando lookup fields do Django com underscores " | |
1165 | -"duplos, como demonstrado abaixo" | |
1166 | - | |
1167 | -#: colab/templates/open-data.html:131 colab/templates/open-data.html.py:132 | |
1168 | -msgid "test" | |
1169 | -msgstr "test" | |
1170 | - | |
1171 | -#: colab/templates/open-data.html:133 | |
1172 | -msgid "Usage with relationships" | |
1173 | -msgstr "Uso com relacionamentos" | |
1174 | - | |
1175 | -#: colab/templates/open-data.html:134 | |
1176 | -msgid "" | |
1177 | -"You can use related fields to filter too. So, you can filter by any field of " | |
1178 | -"emailaddress using the 'from_address' field of message, which has a relation " | |
1179 | -"to emailaddress. You will achieve the related fields by using double " | |
1180 | -"underscore and the field's name. See the example below" | |
1181 | -msgstr "" | |
1182 | -"Você pode também pode utilizar campos relacionados para filtrar. Você pode " | |
1183 | -"filtrar por qualquer campo de emailaddress utilizando o 'from_address' da " | |
1184 | -"mensagem, que tem relação com emailaddress. Para tal você precisará utilizar " | |
1185 | -"os underscores duplos e o nome do campo desejado. Veja o exemplo abaixo" | |
1186 | - | |
1187 | -#: colab/templates/open-data.html:136 | |
1188 | -msgid "" | |
1189 | -"So, real_name is a field of emailaddress, and you had access to this field " | |
1190 | -"by a message field called from_address and using double underscore to say " | |
1191 | -"you want to use a field of that relationship" | |
1192 | -msgstr "" | |
1193 | -"real_name é um campo de emailaddress e você pode acessá-lo através de um " | |
1194 | -"campo do do objeto message, from_address, e underscores duplos para " | |
1195 | -"referenciar que este campo pertence ao modelo relacionado" | |
1196 | - | |
1197 | -#: colab/templates/open-data.html:137 | |
1198 | -msgid "" | |
1199 | -"Note: email filters must be exact. Which means that __contains, " | |
1200 | -"__startswith, __endswith and others won't work" | |
1201 | -msgstr "" | |
1202 | -"Nota: os filtros de email devem ser exatos. Isso significa que __contains, " | |
1203 | -"__startswith, __endswith e outros métodos de busca parcial não funcionarão" | |
1204 | - | |
1205 | -#: colab/templates/open-data.html:138 | |
1206 | -msgid "" | |
1207 | -"Another example of usage with relations. Used to retrieve all messages of a " | |
1208 | -"given user, using the username or the email field" | |
1209 | -msgstr "" | |
1210 | -"Outro exemplo de uso com relacionamento. Usado para recuperar todos as " | |
1211 | -"mensagem de um dado usuário usando o campo username ou email" | |
1212 | - | |
1213 | - | |
1214 | -#: colab/accounts/forms.py:276 | |
1215 | -msgid "This value may contain only letters and numbers." | |
1216 | -msgstr "Esse campo só pode conter letras e/ou numeros." | |
1217 | - | |
1218 | -#~ msgid "Please correct the errors below and try again" | |
1219 | -#~ msgstr "Por favor, corrija os erros abaixo e tente novamente" | |
1220 | - | |
1221 | -#, fuzzy | |
1222 | -#~| msgid "Please correct the error below and try again" | |
1223 | -#~ msgid "Please correct the error below and try again" | |
1224 | -#~ msgstr "Por favor, corrija o erro abaixo e tente novamente" | |
1225 | - | |
1226 | -#~ msgid "%(count)s users deleted." | |
1227 | -#~ msgstr "%(count)s usuários deletados." | |
1228 | - | |
1229 | -#~ msgid "" | |
1230 | -#~ "You must login to validated your profile. Profiles not validated are " | |
1231 | -#~ "deleted in 24h." | |
1232 | -#~ msgstr "" | |
1233 | -#~ "Você deve se logar para validar seu perfil. Perfis não validados serão " | |
1234 | -#~ "deletados em 24h." | ... | ... |
... | ... | @@ -0,0 +1,8 @@ |
1 | + | |
2 | + | |
3 | +default_app_config = 'colab.plugins.gitlab.apps.ProxyGitlabAppConfig' | |
4 | + | |
5 | +from colab.plugins.utils.widget_manager import WidgetManager | |
6 | +from colab.plugins.gitlab.widgets import GitlabProfileWidget | |
7 | + | |
8 | +WidgetManager.register_widget('profile', GitlabProfileWidget()) | ... | ... |
... | ... | @@ -0,0 +1,36 @@ |
1 | +<rules | |
2 | + xmlns="http://namespaces.plone.org/diazo" | |
3 | + xmlns:css="http://namespaces.plone.org/diazo/css" | |
4 | + xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | |
5 | + | |
6 | + <xsl:variable name="username" select="str:replace(//a/@href[(contains(., '/gitlab/u/'))], '/gitlab/u/', '')" /> | |
7 | + <xsl:template match="a/@href[(contains(., '/profile/'))]"> | |
8 | + <xsl:attribute name="href">/account/<xsl:value-of select="$username"/>/edit?code=<xsl:value-of select="."/>/</xsl:attribute> | |
9 | + </xsl:template> | |
10 | + <xsl:template match="form/@action[(contains(., '/gitlab/'))]"> | |
11 | + <xsl:attribute name="action">/account/<xsl:value-of select="$username"/>/edit?code=<xsl:value-of select="."/>/</xsl:attribute> | |
12 | + </xsl:template> | |
13 | + | |
14 | + <!-- Drop colab stuff --> | |
15 | + <drop css:theme="nav.navbar-fixed-top" /> | |
16 | + <drop css:theme="div.footer" /> | |
17 | + | |
18 | + <!-- Drop unused tabs on gitlab --> | |
19 | + <drop content="div[@class='container']/ul/li[1]" /> | |
20 | + <drop content="div[@class='container']/ul/li[3]" /> | |
21 | + <drop content="div[@class='container']/ul/li[4]" /> | |
22 | + <drop content="div[@class='container']/ul/li[7]" /> | |
23 | + <drop content="fieldset[@class='update-username']" /> | |
24 | + | |
25 | + <before theme-children="/html/head" content-children="/html/head" /> | |
26 | + <before css:theme-children="#main-content" css:content-children="body" /> | |
27 | + | |
28 | + <merge attributes="class" css:theme="body" css:content="body" /> | |
29 | + | |
30 | + <!-- Add gitlab properties --> | |
31 | + <merge attributes="data-page" css:theme="body" css:content="body" /> | |
32 | + <merge attributes="data-project-id" css:theme="body" css:content="body" /> | |
33 | + | |
34 | + <drop css:content="#top-panel" /> | |
35 | + <drop css:content=".navbar-gitlab" /> | |
36 | +</rules> | ... | ... |
colab/plugins/gitlab/templates/proxy/gitlab_profile.html
0 → 100644
... | ... | @@ -0,0 +1,49 @@ |
1 | + | |
2 | +{% load static from staticfiles %} | |
3 | + | |
4 | +{% block head_css %} | |
5 | +<style> | |
6 | + /* Reset left and with for .modal-dialog style (like gitlab does), | |
7 | + the bootstrap.css one makes it small */ | |
8 | + @media screen and (min-width: 768px) { | |
9 | + .modal-dialog { | |
10 | + left: auto; | |
11 | + width: auto; | |
12 | + } | |
13 | + } | |
14 | + | |
15 | + div#main-content div.container { | |
16 | + width: 1110px; | |
17 | + } | |
18 | + div#main-content div.flash-container{ | |
19 | + width: 85%; | |
20 | + } | |
21 | + #breadcrumbs { | |
22 | + border: 0 !important; | |
23 | + } | |
24 | + | |
25 | + #right-top-nav { | |
26 | + margin-right: 5em !important; | |
27 | + } | |
28 | +</style> | |
29 | +{% endblock %} | |
30 | + | |
31 | +{% block head_js %} | |
32 | +<script>jQuery.noConflict();</script> | |
33 | +{% endblock %} | |
34 | + | |
35 | +<div id="main-content"></div> | |
36 | +<script type="text/javascript"> | |
37 | + jQuery(function(){ | |
38 | + // bootstrap.css forces .hide {display:none!important}, and this makes | |
39 | + // gitlab .hide elements NEVER have a display:block, so | |
40 | + // instead of editing bootstrap.css, we just removed '.hide' css class and | |
41 | + // toggled | |
42 | + jQuery('.hide').removeClass('hide').css('display', 'none'); | |
43 | + }); | |
44 | + | |
45 | + // Extremelly ugly solutions to add Colab's CSRF token to Gitlab forms | |
46 | + // add CSRF token to HTTP header*** | |
47 | + jQuery('div#code form').append(jQuery("input[name='csrfmiddlewaretoken']")); | |
48 | + $('a.delete-key').attr('data-method', 'delete\" type=\"hidden\" /> <input name=\"csrfmiddlewaretoken\" value=\"' + jQuery("input[name='csrfmiddlewaretoken']").val()); | |
49 | +</script> | ... | ... |
... | ... | @@ -0,0 +1,22 @@ |
1 | + | |
2 | +from ..utils.views import ColabProxyView | |
3 | +import os, sys | |
4 | + | |
5 | + | |
6 | +class GitlabProxyView(ColabProxyView): | |
7 | + app_label = 'gitlab' | |
8 | + diazo_theme_template = 'proxy/gitlab.html' | |
9 | + | |
10 | + | |
11 | +class GitlabProfileProxyView(ColabProxyView): | |
12 | + app_label = 'gitlab' | |
13 | + diazo_theme_template = 'proxy/gitlab_profile.html' | |
14 | + | |
15 | + @property | |
16 | + def diazo_rules(self): | |
17 | + child_class_file = sys.modules[self.__module__].__file__ | |
18 | + app_path = os.path.abspath(os.path.dirname(child_class_file)) | |
19 | + diazo_path = os.path.join(app_path, 'profile/diazo.xml') | |
20 | + | |
21 | + self.log.debug("diazo_rules: %s", diazo_path) | |
22 | + return diazo_path | ... | ... |
... | ... | @@ -0,0 +1,35 @@ |
1 | +from colab.plugins.gitlab.views import GitlabProxyView, GitlabProfileProxyView | |
2 | +from colab.plugins.utils.widget_manager import Widget | |
3 | +from django.utils.safestring import mark_safe | |
4 | + | |
5 | + | |
6 | +class GitlabProfileWidget(GitlabProxyView, Widget): | |
7 | + identifier = 'code' | |
8 | + name = 'Gitlab Profile' | |
9 | + default_url = '/gitlab/profile/account' | |
10 | + | |
11 | + def get_body(self): | |
12 | + start = self.content.find('<body') | |
13 | + start = self.content.find('>', start) | |
14 | + end = self.content.find('</body>') | |
15 | + print "start = " + str(start) + ", end = " + str(end) | |
16 | + print "content = " + self.content | |
17 | + | |
18 | + if -1 in [start, end]: | |
19 | + return '' | |
20 | + | |
21 | + body = self.content[start + len('>'):end] | |
22 | + return mark_safe(body) | |
23 | + | |
24 | + def generate_content(self, request): | |
25 | + requested_url = request.GET.get('code', self.default_url) | |
26 | + g = GitlabProfileProxyView() | |
27 | + r = g.dispatch(request, requested_url) | |
28 | + | |
29 | + if r.status_code == 302: | |
30 | + location = r.get('Location') | |
31 | + requested_url = location[location.find('/{}/'.format(self.app_label)):] | |
32 | + request.method = 'GET' | |
33 | + r = g.dispatch(request, requested_url) | |
34 | + | |
35 | + self.content = r.content | ... | ... |
colab/settings.py
... | ... | @@ -241,10 +241,9 @@ SUPER_ARCHIVES_LOCK_FILE = '/var/lock/colab/import_emails.lock' |
241 | 241 | # Mailman API settings |
242 | 242 | MAILMAN_API_URL = 'http://localhost:8124/v2/' |
243 | 243 | |
244 | -LOGIN_URL = '/user/login' | |
244 | +LOGIN_URL = '/account/login' | |
245 | +LOGOUT_URL = '/account/logout' | |
245 | 246 | LOGIN_REDIRECT_URL = '/' |
246 | -LOGIN_REDIRECT_URL_FAILURE = '/?bid_login_failed=true' | |
247 | -LOGOUT_REDIRECT_URL = '/' | |
248 | 247 | |
249 | 248 | REVPROXY_ADD_REMOTE_USER = True |
250 | 249 | |
... | ... | @@ -294,3 +293,5 @@ TEMPLATE_DIRS += ( |
294 | 293 | ) |
295 | 294 | |
296 | 295 | conf.validate_database(DATABASES, DEFAULT_DATABASE, DEBUG) |
296 | + | |
297 | +conf.load_widgets_settings() | ... | ... |
No preview for this file type
colab/super_archives/locale/en/LC_MESSAGES/django.po
... | ... | @@ -8,7 +8,7 @@ msgid "" |
8 | 8 | msgstr "" |
9 | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2014-11-21 17:05+0000\n" | |
11 | +"POT-Creation-Date: 2015-09-01 13:15+0000\n" | |
12 | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
... | ... | @@ -21,65 +21,65 @@ msgstr "" |
21 | 21 | msgid "[Colab] Warning - Email sent with a blank subject." |
22 | 22 | msgstr "" |
23 | 23 | |
24 | -#: super_archives/models.py:61 | |
24 | +#: super_archives/models.py:77 | |
25 | 25 | #: super_archives/templates/message-preview.html:62 |
26 | 26 | #: super_archives/templates/message-thread.html:4 |
27 | 27 | msgid "Anonymous" |
28 | 28 | msgstr "" |
29 | 29 | |
30 | -#: super_archives/models.py:111 | |
30 | +#: super_archives/models.py:133 | |
31 | 31 | msgid "Mailing List" |
32 | 32 | msgstr "" |
33 | 33 | |
34 | -#: super_archives/models.py:112 | |
34 | +#: super_archives/models.py:134 | |
35 | 35 | msgid "The Mailing List where is the thread" |
36 | 36 | msgstr "" |
37 | 37 | |
38 | -#: super_archives/models.py:115 | |
38 | +#: super_archives/models.py:137 | |
39 | 39 | msgid "Latest message" |
40 | 40 | msgstr "" |
41 | 41 | |
42 | -#: super_archives/models.py:116 | |
42 | +#: super_archives/models.py:138 | |
43 | 43 | msgid "Latest message posted" |
44 | 44 | msgstr "" |
45 | 45 | |
46 | -#: super_archives/models.py:117 | |
46 | +#: super_archives/models.py:139 | |
47 | 47 | msgid "Score" |
48 | 48 | msgstr "" |
49 | 49 | |
50 | -#: super_archives/models.py:117 | |
50 | +#: super_archives/models.py:140 | |
51 | 51 | msgid "Thread score" |
52 | 52 | msgstr "" |
53 | 53 | |
54 | -#: super_archives/models.py:126 | |
54 | +#: super_archives/models.py:153 | |
55 | 55 | msgid "Thread" |
56 | 56 | msgstr "" |
57 | 57 | |
58 | -#: super_archives/models.py:127 | |
58 | +#: super_archives/models.py:154 | |
59 | 59 | msgid "Threads" |
60 | 60 | msgstr "" |
61 | 61 | |
62 | -#: super_archives/models.py:241 | |
62 | +#: super_archives/models.py:267 | |
63 | 63 | msgid "Subject" |
64 | 64 | msgstr "" |
65 | 65 | |
66 | -#: super_archives/models.py:242 | |
66 | +#: super_archives/models.py:268 | |
67 | 67 | msgid "Please enter a message subject" |
68 | 68 | msgstr "" |
69 | 69 | |
70 | -#: super_archives/models.py:245 | |
70 | +#: super_archives/models.py:271 | |
71 | 71 | msgid "Message body" |
72 | 72 | msgstr "" |
73 | 73 | |
74 | -#: super_archives/models.py:246 | |
74 | +#: super_archives/models.py:272 | |
75 | 75 | msgid "Please enter a message body" |
76 | 76 | msgstr "" |
77 | 77 | |
78 | -#: super_archives/models.py:256 | |
78 | +#: super_archives/models.py:282 | |
79 | 79 | msgid "Message" |
80 | 80 | msgstr "" |
81 | 81 | |
82 | -#: super_archives/models.py:257 | |
82 | +#: super_archives/models.py:283 | |
83 | 83 | msgid "Messages" |
84 | 84 | msgstr "" |
85 | 85 | |
... | ... | @@ -208,16 +208,16 @@ msgstr "" |
208 | 208 | msgid "%(number_of_users)s members" |
209 | 209 | msgstr "" |
210 | 210 | |
211 | -#: super_archives/templates/superarchives/thread-dashboard.html:23 | |
211 | +#: super_archives/templates/superarchives/thread-dashboard.html:20 | |
212 | 212 | msgid "latest" |
213 | 213 | msgstr "" |
214 | 214 | |
215 | -#: super_archives/templates/superarchives/thread-dashboard.html:31 | |
216 | -#: super_archives/templates/superarchives/thread-dashboard.html:45 | |
215 | +#: super_archives/templates/superarchives/thread-dashboard.html:28 | |
216 | +#: super_archives/templates/superarchives/thread-dashboard.html:42 | |
217 | 217 | msgid "more..." |
218 | 218 | msgstr "" |
219 | 219 | |
220 | -#: super_archives/templates/superarchives/thread-dashboard.html:37 | |
220 | +#: super_archives/templates/superarchives/thread-dashboard.html:34 | |
221 | 221 | msgid "most relevant" |
222 | 222 | msgstr "" |
223 | 223 | |
... | ... | @@ -225,45 +225,45 @@ msgstr "" |
225 | 225 | msgid "Please verify your email " |
226 | 226 | msgstr "" |
227 | 227 | |
228 | -#: super_archives/views.py:92 | |
228 | +#: super_archives/views.py:112 | |
229 | 229 | msgid "Error trying to connect to Mailman API" |
230 | 230 | msgstr "" |
231 | 231 | |
232 | -#: super_archives/views.py:95 | |
232 | +#: super_archives/views.py:115 | |
233 | 233 | msgid "Timeout trying to connect to Mailman API" |
234 | 234 | msgstr "" |
235 | 235 | |
236 | -#: super_archives/views.py:99 | |
236 | +#: super_archives/views.py:119 | |
237 | 237 | msgid "" |
238 | 238 | "Your message was sent to this topic. It may take some minutes before it's " |
239 | 239 | "delivered by email to the group. Why don't you breath some fresh air in the " |
240 | 240 | "meanwhile?" |
241 | 241 | msgstr "" |
242 | 242 | |
243 | -#: super_archives/views.py:108 | |
243 | +#: super_archives/views.py:128 | |
244 | 244 | msgid "You cannot send an empty email" |
245 | 245 | msgstr "" |
246 | 246 | |
247 | -#: super_archives/views.py:110 | |
247 | +#: super_archives/views.py:130 | |
248 | 248 | msgid "Mailing list does not exist" |
249 | 249 | msgstr "" |
250 | 250 | |
251 | -#: super_archives/views.py:112 | |
251 | +#: super_archives/views.py:133 | |
252 | 252 | msgid "Unknown error trying to connect to Mailman API" |
253 | 253 | msgstr "" |
254 | 254 | |
255 | -#: super_archives/views.py:152 | |
255 | +#: super_archives/views.py:188 | |
256 | 256 | msgid "" |
257 | 257 | "The email address you are trying to verify either has already been verified " |
258 | 258 | "or does not exist." |
259 | 259 | msgstr "" |
260 | 260 | |
261 | -#: super_archives/views.py:163 | |
261 | +#: super_archives/views.py:199 | |
262 | 262 | msgid "" |
263 | 263 | "The email address you are trying to verify is already an active email " |
264 | 264 | "address." |
265 | 265 | msgstr "" |
266 | 266 | |
267 | -#: super_archives/views.py:173 | |
267 | +#: super_archives/views.py:213 | |
268 | 268 | msgid "Email address verified!" |
269 | 269 | msgstr "" | ... | ... |
No preview for this file type
colab/super_archives/locale/pt_BR/LC_MESSAGES/django.mo
No preview for this file type
colab/super_archives/locale/pt_BR/LC_MESSAGES/django.po
... | ... | @@ -8,7 +8,7 @@ msgid "" |
8 | 8 | msgstr "" |
9 | 9 | "Project-Id-Version: colab\n" |
10 | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2015-01-21 13:55+0000\n" | |
11 | +"POT-Creation-Date: 2015-09-01 13:15+0000\n" | |
12 | 12 | "PO-Revision-Date: 2014-11-21 17:38+0000\n" |
13 | 13 | "Last-Translator: Sergio Oliveira <seocam@seocam.com>\n" |
14 | 14 | "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" |
... | ... | @@ -19,137 +19,137 @@ msgstr "" |
19 | 19 | "Content-Transfer-Encoding: 8bit\n" |
20 | 20 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
21 | 21 | |
22 | -#: colab/super_archives/management/commands/import_emails.py:213 | |
22 | +#: super_archives/management/commands/import_emails.py:213 | |
23 | 23 | msgid "[Colab] Warning - Email sent with a blank subject." |
24 | 24 | msgstr "[Colab] Atenção - Email enviado sem assunto." |
25 | 25 | |
26 | -#: colab/super_archives/models.py:68 | |
27 | -#: colab/super_archives/templates/message-preview.html:62 | |
28 | -#: colab/super_archives/templates/message-thread.html:4 | |
26 | +#: super_archives/models.py:77 | |
27 | +#: super_archives/templates/message-preview.html:62 | |
28 | +#: super_archives/templates/message-thread.html:4 | |
29 | 29 | msgid "Anonymous" |
30 | 30 | msgstr "Anônimo" |
31 | 31 | |
32 | -#: colab/super_archives/models.py:118 | |
32 | +#: super_archives/models.py:133 | |
33 | 33 | msgid "Mailing List" |
34 | 34 | msgstr "Lista de discussão" |
35 | 35 | |
36 | -#: colab/super_archives/models.py:119 | |
36 | +#: super_archives/models.py:134 | |
37 | 37 | msgid "The Mailing List where is the thread" |
38 | 38 | msgstr "Lista de emails da discussão" |
39 | 39 | |
40 | -#: colab/super_archives/models.py:122 | |
40 | +#: super_archives/models.py:137 | |
41 | 41 | msgid "Latest message" |
42 | 42 | msgstr "Última mensagem" |
43 | 43 | |
44 | -#: colab/super_archives/models.py:123 | |
44 | +#: super_archives/models.py:138 | |
45 | 45 | msgid "Latest message posted" |
46 | 46 | msgstr "Última mensagem enviada" |
47 | 47 | |
48 | -#: colab/super_archives/models.py:124 | |
48 | +#: super_archives/models.py:139 | |
49 | 49 | msgid "Score" |
50 | 50 | msgstr "Pontuação" |
51 | 51 | |
52 | -#: colab/super_archives/models.py:124 | |
52 | +#: super_archives/models.py:140 | |
53 | 53 | msgid "Thread score" |
54 | 54 | msgstr "Pontuação da discussão" |
55 | 55 | |
56 | -#: colab/super_archives/models.py:133 | |
56 | +#: super_archives/models.py:153 | |
57 | 57 | msgid "Thread" |
58 | 58 | msgstr "Discussão" |
59 | 59 | |
60 | -#: colab/super_archives/models.py:134 | |
60 | +#: super_archives/models.py:154 | |
61 | 61 | msgid "Threads" |
62 | 62 | msgstr "Discussões" |
63 | 63 | |
64 | -#: colab/super_archives/models.py:248 | |
64 | +#: super_archives/models.py:267 | |
65 | 65 | msgid "Subject" |
66 | 66 | msgstr "Assuntos" |
67 | 67 | |
68 | -#: colab/super_archives/models.py:249 | |
68 | +#: super_archives/models.py:268 | |
69 | 69 | msgid "Please enter a message subject" |
70 | 70 | msgstr "Por favor digite um assunto de email" |
71 | 71 | |
72 | -#: colab/super_archives/models.py:252 | |
72 | +#: super_archives/models.py:271 | |
73 | 73 | msgid "Message body" |
74 | 74 | msgstr "Corpo do email" |
75 | 75 | |
76 | -#: colab/super_archives/models.py:253 | |
76 | +#: super_archives/models.py:272 | |
77 | 77 | msgid "Please enter a message body" |
78 | 78 | msgstr "Por favor digite o corpo do email" |
79 | 79 | |
80 | -#: colab/super_archives/models.py:263 | |
80 | +#: super_archives/models.py:282 | |
81 | 81 | msgid "Message" |
82 | 82 | msgstr "Mensagem" |
83 | 83 | |
84 | -#: colab/super_archives/models.py:264 | |
84 | +#: super_archives/models.py:283 | |
85 | 85 | msgid "Messages" |
86 | 86 | msgstr "Mensagens" |
87 | 87 | |
88 | -#: colab/super_archives/templates/message-preview.html:42 | |
89 | -#: colab/super_archives/templates/message-preview.html:62 | |
88 | +#: super_archives/templates/message-preview.html:42 | |
89 | +#: super_archives/templates/message-preview.html:62 | |
90 | 90 | msgid "by" |
91 | 91 | msgstr "por" |
92 | 92 | |
93 | -#: colab/super_archives/templates/message-preview.html:65 | |
94 | -#: colab/super_archives/templates/message-thread.html:161 | |
93 | +#: super_archives/templates/message-preview.html:65 | |
94 | +#: super_archives/templates/message-thread.html:161 | |
95 | 95 | msgid "ago" |
96 | 96 | msgstr "atrás" |
97 | 97 | |
98 | -#: colab/super_archives/templates/message-thread.html:35 | |
98 | +#: super_archives/templates/message-thread.html:35 | |
99 | 99 | msgid "You must login before voting." |
100 | 100 | msgstr "Você deve logar antes de votar." |
101 | 101 | |
102 | -#: colab/super_archives/templates/message-thread.html:132 | |
102 | +#: super_archives/templates/message-thread.html:132 | |
103 | 103 | msgid "Order by" |
104 | 104 | msgstr "Ordenar por" |
105 | 105 | |
106 | -#: colab/super_archives/templates/message-thread.html:136 | |
106 | +#: super_archives/templates/message-thread.html:136 | |
107 | 107 | msgid "Votes" |
108 | 108 | msgstr "Votos" |
109 | 109 | |
110 | -#: colab/super_archives/templates/message-thread.html:140 | |
110 | +#: super_archives/templates/message-thread.html:140 | |
111 | 111 | msgid "Date" |
112 | 112 | msgstr "Data" |
113 | 113 | |
114 | -#: colab/super_archives/templates/message-thread.html:145 | |
114 | +#: super_archives/templates/message-thread.html:145 | |
115 | 115 | msgid "Related:" |
116 | 116 | msgstr "Relacionado:" |
117 | 117 | |
118 | -#: colab/super_archives/templates/message-thread.html:156 | |
118 | +#: super_archives/templates/message-thread.html:156 | |
119 | 119 | msgid "Statistics:" |
120 | 120 | msgstr "Estatísticas:" |
121 | 121 | |
122 | -#: colab/super_archives/templates/message-thread.html:160 | |
122 | +#: super_archives/templates/message-thread.html:160 | |
123 | 123 | msgid "started at" |
124 | 124 | msgstr "iniciada em" |
125 | 125 | |
126 | -#: colab/super_archives/templates/message-thread.html:166 | |
126 | +#: super_archives/templates/message-thread.html:166 | |
127 | 127 | msgid "viewed" |
128 | 128 | msgstr "vizualizada" |
129 | 129 | |
130 | -#: colab/super_archives/templates/message-thread.html:167 | |
131 | -#: colab/super_archives/templates/message-thread.html:172 | |
132 | -#: colab/super_archives/templates/message-thread.html:177 | |
130 | +#: super_archives/templates/message-thread.html:167 | |
131 | +#: super_archives/templates/message-thread.html:172 | |
132 | +#: super_archives/templates/message-thread.html:177 | |
133 | 133 | msgid "times" |
134 | 134 | msgstr "vezes" |
135 | 135 | |
136 | -#: colab/super_archives/templates/message-thread.html:171 | |
136 | +#: super_archives/templates/message-thread.html:171 | |
137 | 137 | msgid "answered" |
138 | 138 | msgstr "respondida" |
139 | 139 | |
140 | -#: colab/super_archives/templates/message-thread.html:176 | |
140 | +#: super_archives/templates/message-thread.html:176 | |
141 | 141 | msgid "voted" |
142 | 142 | msgstr "votada" |
143 | 143 | |
144 | -#: colab/super_archives/templates/message-thread.html:182 | |
144 | +#: super_archives/templates/message-thread.html:182 | |
145 | 145 | msgid "Tags:" |
146 | 146 | msgstr "Tags:" |
147 | 147 | |
148 | -#: colab/super_archives/templates/superarchives/emails/email_blank_subject.txt:2 | |
148 | +#: super_archives/templates/superarchives/emails/email_blank_subject.txt:2 | |
149 | 149 | msgid "Hello" |
150 | 150 | msgstr "Olá" |
151 | 151 | |
152 | -#: colab/super_archives/templates/superarchives/emails/email_blank_subject.txt:3 | |
152 | +#: super_archives/templates/superarchives/emails/email_blank_subject.txt:3 | |
153 | 153 | #, python-format |
154 | 154 | msgid "" |
155 | 155 | "\n" |
... | ... | @@ -172,7 +172,7 @@ msgstr "" |
172 | 172 | "\n" |
173 | 173 | "Obrigado.\n" |
174 | 174 | |
175 | -#: colab/super_archives/templates/superarchives/emails/email_verification.txt:2 | |
175 | +#: super_archives/templates/superarchives/emails/email_verification.txt:2 | |
176 | 176 | #, python-format |
177 | 177 | msgid "" |
178 | 178 | "Hey, we want to verify that you are indeed \"%(fullname)s (%(username)s)\". " |
... | ... | @@ -181,7 +181,7 @@ msgstr "" |
181 | 181 | "Ei, nós queremos verificar que você é realmente \"%(fullname)s " |
182 | 182 | "(%(username)s)\". Se este for o caso, por favor clique no link abaixo:" |
183 | 183 | |
184 | -#: colab/super_archives/templates/superarchives/emails/email_verification.txt:6 | |
184 | +#: super_archives/templates/superarchives/emails/email_verification.txt:6 | |
185 | 185 | #, python-format |
186 | 186 | msgid "" |
187 | 187 | "If you're not %(username)s or didn't request verification you can ignore " |
... | ... | @@ -190,20 +190,20 @@ msgstr "" |
190 | 190 | "Se você não é %(username)s ou não solicitou verificação apenas ignore este " |
191 | 191 | "email." |
192 | 192 | |
193 | -#: colab/super_archives/templates/superarchives/includes/message.html:17 | |
194 | -#: colab/super_archives/templates/superarchives/includes/message.html:18 | |
193 | +#: super_archives/templates/superarchives/includes/message.html:17 | |
194 | +#: super_archives/templates/superarchives/includes/message.html:18 | |
195 | 195 | msgid "Link to this message" |
196 | 196 | msgstr "Link para esta mensagem" |
197 | 197 | |
198 | -#: colab/super_archives/templates/superarchives/includes/message.html:46 | |
198 | +#: super_archives/templates/superarchives/includes/message.html:46 | |
199 | 199 | msgid "Reply" |
200 | 200 | msgstr "Responder" |
201 | 201 | |
202 | -#: colab/super_archives/templates/superarchives/includes/message.html:63 | |
202 | +#: super_archives/templates/superarchives/includes/message.html:63 | |
203 | 203 | msgid "Send a message" |
204 | 204 | msgstr "Enviar mensagem" |
205 | 205 | |
206 | -#: colab/super_archives/templates/superarchives/includes/message.html:66 | |
206 | +#: super_archives/templates/superarchives/includes/message.html:66 | |
207 | 207 | msgid "" |
208 | 208 | "After sending a message it will take few minutes before it shows up in here. " |
209 | 209 | "Why don't you grab a coffee?" |
... | ... | @@ -211,46 +211,46 @@ msgstr "" |
211 | 211 | "Após enviar uma mensagem pode levar alguns minutos até que ela seja exibida " |
212 | 212 | "aqui. Por que você não busca um café enquanto isso?" |
213 | 213 | |
214 | -#: colab/super_archives/templates/superarchives/includes/message.html:69 | |
214 | +#: super_archives/templates/superarchives/includes/message.html:69 | |
215 | 215 | msgid "Send" |
216 | 216 | msgstr "Enviar" |
217 | 217 | |
218 | -#: colab/super_archives/templates/superarchives/thread-dashboard.html:4 | |
219 | -#: colab/super_archives/templates/superarchives/thread-dashboard.html:7 | |
218 | +#: super_archives/templates/superarchives/thread-dashboard.html:4 | |
219 | +#: super_archives/templates/superarchives/thread-dashboard.html:7 | |
220 | 220 | msgid "Groups" |
221 | 221 | msgstr "Grupos" |
222 | 222 | |
223 | -#: colab/super_archives/templates/superarchives/thread-dashboard.html:14 | |
223 | +#: super_archives/templates/superarchives/thread-dashboard.html:14 | |
224 | 224 | #, python-format |
225 | 225 | msgid "%(number_of_users)s members" |
226 | 226 | msgstr "%(number_of_users)s membros" |
227 | 227 | |
228 | -#: colab/super_archives/templates/superarchives/thread-dashboard.html:23 | |
228 | +#: super_archives/templates/superarchives/thread-dashboard.html:20 | |
229 | 229 | msgid "latest" |
230 | 230 | msgstr "última" |
231 | 231 | |
232 | -#: colab/super_archives/templates/superarchives/thread-dashboard.html:31 | |
233 | -#: colab/super_archives/templates/superarchives/thread-dashboard.html:45 | |
232 | +#: super_archives/templates/superarchives/thread-dashboard.html:28 | |
233 | +#: super_archives/templates/superarchives/thread-dashboard.html:42 | |
234 | 234 | msgid "more..." |
235 | 235 | msgstr "mais..." |
236 | 236 | |
237 | -#: colab/super_archives/templates/superarchives/thread-dashboard.html:37 | |
237 | +#: super_archives/templates/superarchives/thread-dashboard.html:34 | |
238 | 238 | msgid "most relevant" |
239 | 239 | msgstr "Mais relevante" |
240 | 240 | |
241 | -#: colab/super_archives/utils/email.py:14 | |
241 | +#: super_archives/utils/email.py:14 | |
242 | 242 | msgid "Please verify your email " |
243 | 243 | msgstr "Por favor verifique seu email" |
244 | 244 | |
245 | -#: colab/super_archives/views.py:93 | |
245 | +#: super_archives/views.py:112 | |
246 | 246 | msgid "Error trying to connect to Mailman API" |
247 | 247 | msgstr "Erro tentando conectar à API do Mailman" |
248 | 248 | |
249 | -#: colab/super_archives/views.py:96 | |
249 | +#: super_archives/views.py:115 | |
250 | 250 | msgid "Timeout trying to connect to Mailman API" |
251 | -msgstr "Timeout tentando conectar à API do Mailman" | |
251 | +msgstr "Tempo excedido tentando conectar à API do Mailman" | |
252 | 252 | |
253 | -#: colab/super_archives/views.py:100 | |
253 | +#: super_archives/views.py:119 | |
254 | 254 | msgid "" |
255 | 255 | "Your message was sent to this topic. It may take some minutes before it's " |
256 | 256 | "delivered by email to the group. Why don't you breath some fresh air in the " |
... | ... | @@ -260,19 +260,19 @@ msgstr "" |
260 | 260 | "minutos até que ela seja enviada por email para o grupo. Por que você não " |
261 | 261 | "respira um ar fresco enquanto isso?" |
262 | 262 | |
263 | -#: colab/super_archives/views.py:109 | |
263 | +#: super_archives/views.py:128 | |
264 | 264 | msgid "You cannot send an empty email" |
265 | 265 | msgstr "Você não pode enviar um email vazio" |
266 | 266 | |
267 | -#: colab/super_archives/views.py:111 | |
267 | +#: super_archives/views.py:130 | |
268 | 268 | msgid "Mailing list does not exist" |
269 | 269 | msgstr "Lista de email inexistente" |
270 | 270 | |
271 | -#: colab/super_archives/views.py:113 | |
271 | +#: super_archives/views.py:133 | |
272 | 272 | msgid "Unknown error trying to connect to Mailman API" |
273 | 273 | msgstr "Erro desconhecido tentando conectar à API do Mailman" |
274 | 274 | |
275 | -#: colab/super_archives/views.py:153 | |
275 | +#: super_archives/views.py:188 | |
276 | 276 | msgid "" |
277 | 277 | "The email address you are trying to verify either has already been verified " |
278 | 278 | "or does not exist." |
... | ... | @@ -280,12 +280,12 @@ msgstr "" |
280 | 280 | "O email que você está tentando verificar não existe ou já foi verificado " |
281 | 281 | "anteriormente. " |
282 | 282 | |
283 | -#: colab/super_archives/views.py:164 | |
283 | +#: super_archives/views.py:199 | |
284 | 284 | msgid "" |
285 | 285 | "The email address you are trying to verify is already an active email " |
286 | 286 | "address." |
287 | 287 | msgstr "O email que você está tentando verificar já é um email ativo." |
288 | 288 | |
289 | -#: colab/super_archives/views.py:178 | |
289 | +#: super_archives/views.py:213 | |
290 | 290 | msgid "Email address verified!" |
291 | 291 | msgstr "Endereço de email verificado!" | ... | ... |
colab/templates/base.html
... | ... | @@ -50,7 +50,7 @@ |
50 | 50 | </head> |
51 | 51 | |
52 | 52 | <!-- data-no-turbolink will disable Rails TurboLinks for all pages under Colab --> |
53 | - <body class="container" data-no-turbolink> | |
53 | + <body data-no-turbolink> | |
54 | 54 | |
55 | 55 | {% block ribbon %} |
56 | 56 | {% if ribbon %} |
... | ... | @@ -62,84 +62,8 @@ |
62 | 62 | {% endif %} |
63 | 63 | {% endblock %} |
64 | 64 | |
65 | - {% block navbar %} | |
66 | - <nav class="navbar navbar-default navbar-fixed-top" role="navigation"> | |
67 | - <div class="container"> | |
68 | - <div class="navbar-header"> | |
69 | - | |
70 | - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-main"> | |
71 | - <span class="sr-only">Toggle navigation</span> | |
72 | - <span class="icon-bar"></span> | |
73 | - <span class="icon-bar"></span> | |
74 | - <span class="icon-bar"></span> | |
75 | - <span class="icon-bar"></span> | |
76 | - </button> | |
77 | - <a class="navbar-brand" href="/"><img alt="Colab" src="{% static 'img/logo.svg' %}"></a> | |
78 | - </div> | |
79 | - <div class="collapse navbar-collapse navbar-main"> | |
80 | - <ul class="nav navbar-nav"> | |
81 | - | |
82 | - <li> | |
83 | - <a href="{% url 'thread_list' %}">{% trans "Groups" %}</a> | |
84 | - </li> | |
85 | - | |
86 | - {% plugins_menu %} | |
87 | - | |
88 | - <li class="hidden-lg hidden-md"> | |
89 | - <a href="{% url 'haystack_search' %}?q=">{% trans "Search" %}</a> | |
90 | - </li> | |
91 | - </ul> | |
92 | - | |
93 | - <ul class="nav navbar-nav navbar-right"> | |
94 | - {% if not user.is_authenticated %} | |
95 | - | |
96 | - <li class="dropdown hidden-xs hidden-lg"> | |
97 | - <a href="#" class="dropdown-toggle" data-toggle="dropdown">Acesso <b class="caret"></b></a> | |
98 | - <ul class="dropdown-menu"> | |
99 | - {% trans 'Login' as login_text %} | |
100 | - <li><a href="{% url 'signup' %}">{% trans "Register" %}</a></li> | |
101 | - <li><a href="{% url 'login' %}">{% trans "Login" %}</a></li> | |
102 | - </ul> | |
103 | - </li> | |
104 | - {% trans 'Login' as login_text %} | |
105 | - <li class="visible-xs hidden-sm hidden-md"><a href="{% url 'signup' %}">{% trans "Register" %}</a></li> | |
106 | - <li class="visible-xs hidden-sm hidden-md"><a href="{% url 'login' %}">{% trans "Login" %}</a></li> | |
107 | - {% else %} | |
108 | - <li id="user-menu" class="dropdown"> | |
109 | - <a href="#" class="dropdown-toggle user" data-toggle="dropdown">{% gravatar user.email 40 %} <b class="caret"></b> </a> | |
110 | - <ul class="dropdown-menu" role="menu"> | |
111 | - <li> | |
112 | - <div class="wrapper"> | |
113 | - <div class="thumbnail">{% gravatar user.email 100 %}</div> | |
114 | - <div class="user-info"> | |
115 | - <span><b>{{ user.get_full_name }}</b></span> | |
116 | - <span class="quiet">{{ user.email }}</span> | |
117 | - </div> | |
118 | - <div> | |
119 | - <a class="btn btn-info pull-left" href="{% url 'user_profile' user.username %}">{% trans "My Profile" %}</a> | |
120 | - {% trans 'Logout' as logout_text %} | |
121 | - <a class="btn btn-default pull-right" href="{% url 'logout' %}"> {% trans "Logout" %}</a> | |
122 | - </div> | |
123 | - </div> | |
124 | - </li> | |
125 | - </ul> | |
126 | - </li> | |
127 | - {% endif %} | |
128 | - </ul> | |
129 | - | |
130 | - <form action="{% url 'haystack_search' %}" method="GET" id="search-form" class="navbar-form navbar-right hidden-xs hidden-sm" role="search"> | |
131 | - <div class="form-group"> | |
132 | - <label class="sr-only" for="header-searchbox">{% trans 'Search here...' %}</label> | |
133 | - <input name="q" id="header-searchbox" | |
134 | - class="form-control" value="{{ request.GET.q }}" | |
135 | - type="search" placeholder="{% trans 'Search here...' %}" /> | |
136 | - </div> | |
137 | - <button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button> | |
138 | - </form> | |
139 | - </div> | |
140 | - </div> | |
141 | - </nav> | |
142 | - | |
65 | + {% block header %} | |
66 | + {% include 'header.html' %} | |
143 | 67 | {% endblock %} |
144 | 68 | |
145 | 69 | {% block messages %} |
... | ... | @@ -166,8 +90,6 @@ |
166 | 90 | {% block main-content %}{% endblock %} |
167 | 91 | </div> |
168 | 92 | |
169 | - <div class="row"> </div> | |
170 | - | |
171 | 93 | {% block footer %} |
172 | 94 | |
173 | 95 | {% include "footer.html" %} | ... | ... |
colab/templates/header.html
... | ... | @@ -23,8 +23,6 @@ |
23 | 23 | |
24 | 24 | {% plugins_menu %} |
25 | 25 | |
26 | - <li><a href="/paste">{% trans "Paste" %}</a></li> | |
27 | - | |
28 | 26 | <li class="hidden-lg hidden-md"> |
29 | 27 | <a href="{% url 'haystack_search' %}?q=">{% trans "Search" %}</a> |
30 | 28 | </li> |
... | ... | @@ -42,8 +40,8 @@ |
42 | 40 | </ul> |
43 | 41 | </li> |
44 | 42 | {% trans 'Login' as login_text %} |
45 | - <li class="visible-xs hidden-sm hidden-md"><a href="{% url 'signup' %}">{% trans "Register" %}</a></li> | |
46 | - <li class="visible-xs hidden-sm hidden-md"><a href="{% url 'login' %}">{% trans "Login" %}</a></li> | |
43 | + <li class="visible-xs hidden-sm hidden-md"><a href="{% url 'signup' %}">{% trans "Register" %}</a></li> | |
44 | + <li class="visible-xs hidden-sm hidden-md"><a href="{% url 'login' %}">{% trans "Login" %}</a></li> | |
47 | 45 | {% else %} |
48 | 46 | <li id="user-menu" class="dropdown"> |
49 | 47 | <a href="#" class="dropdown-toggle user" data-toggle="dropdown">{% gravatar user.email 40 %} <b class="caret"></b> </a> |
... | ... | @@ -71,8 +69,8 @@ |
71 | 69 | <div class="form-group"> |
72 | 70 | <label class="sr-only" for="header-searchbox">{% trans 'Search here...' %}</label> |
73 | 71 | <input name="q" id="header-searchbox" |
74 | - class="form-control" value="{{ request.GET.q }}" | |
75 | - type="search" placeholder="{% trans 'Search here...' %}" /> | |
72 | + class="form-control" value="{{ request.GET.q }}" | |
73 | + type="search" placeholder="{% trans 'Search here...' %}" /> | |
76 | 74 | </div> |
77 | 75 | <button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button> |
78 | 76 | </form> | ... | ... |
colab/urls.py
colab/utils/conf.py
... | ... | @@ -127,7 +127,7 @@ def load_colab_apps(): |
127 | 127 | |
128 | 128 | fields = ['verbose_name', 'upstream', 'urls', |
129 | 129 | 'menu_urls', 'middlewares', 'dependencies', |
130 | - 'context_processors', 'private_token', 'name'] | |
130 | + 'context_processors', 'private_token', 'name', 'extra'] | |
131 | 131 | |
132 | 132 | for key in fields: |
133 | 133 | value = py_settings_d.get(key) |
... | ... | @@ -137,6 +137,43 @@ def load_colab_apps(): |
137 | 137 | return {'COLAB_APPS': COLAB_APPS} |
138 | 138 | |
139 | 139 | |
140 | +def load_widgets_settings(): | |
141 | + settings_file = os.getenv('COLAB_WIDGETS_SETTINGS', | |
142 | + '/etc/colab/widgets_settings.py') | |
143 | + settings_module = settings_file.split('.')[-2].split('/')[-1] | |
144 | + py_path = "/".join(settings_file.split('/')[:-1]) | |
145 | + logger.info('Widgets Settings file: %s', settings_file) | |
146 | + | |
147 | + if not os.path.exists(py_path): | |
148 | + return | |
149 | + | |
150 | + original_path = sys.path | |
151 | + sys.path.append(py_path) | |
152 | + importlib.import_module(settings_module) | |
153 | + | |
154 | + # Read settings from widgets.d | |
155 | + settings_dir = os.getenv('COLAB_WIDGETS', | |
156 | + '/etc/colab/widgets.d') | |
157 | + logger.info('Widgets Settings directory: %s', settings_dir) | |
158 | + sys.path = original_path | |
159 | + | |
160 | + if not os.path.exists(settings_dir): | |
161 | + return | |
162 | + | |
163 | + for file_name in os.listdir(settings_dir): | |
164 | + if not file_name.endswith('.py'): | |
165 | + continue | |
166 | + | |
167 | + original_path = sys.path | |
168 | + sys.path.append(settings_dir) | |
169 | + | |
170 | + file_module = file_name.split('.')[0] | |
171 | + importlib.import_module(file_module) | |
172 | + logger.info('Loaded %s/%s', settings_dir, file_name) | |
173 | + | |
174 | + sys.path = original_path | |
175 | + | |
176 | + | |
140 | 177 | def validate_database(database_dict, default_db, debug): |
141 | 178 | db_name = database_dict.get('default', {}).get('NAME') |
142 | 179 | if not debug and db_name == default_db: | ... | ... |
... | ... | @@ -0,0 +1,12 @@ |
1 | +from django.test import TestCase | |
2 | + | |
3 | +from colab.widgets.widget_manager import WidgetManager, Widget | |
4 | + | |
5 | +class WidgetManagerTest(TestCase): | |
6 | + | |
7 | + def test_add_widgets_to_key_area(self): | |
8 | + area = 'profile' | |
9 | + WidgetManager.register_widget(area, Widget()) | |
10 | + | |
11 | + self.assertEqual(len(WidgetManager.get_widgets(area)), 1) | |
12 | + | ... | ... |
... | ... | @@ -0,0 +1,53 @@ |
1 | +from django.utils.safestring import mark_safe | |
2 | + | |
3 | +class Widget(object): | |
4 | + identifier = None | |
5 | + name = None | |
6 | + default_url = None | |
7 | + content = '' | |
8 | + | |
9 | + def get_body(self): | |
10 | + # avoiding regex in favor of performance | |
11 | + start = self.content.find('<body>') | |
12 | + end = self.content.find('</body>') | |
13 | + | |
14 | + if -1 in [start, end]: | |
15 | + return '' | |
16 | + | |
17 | + body = self.content[start + len('<body>'):end] | |
18 | + return mark_safe(body) | |
19 | + | |
20 | + def get_header(self): | |
21 | + # avoiding regex in favor of performance | |
22 | + start = self.content.find('<head>') | |
23 | + end = self.content.find('</head>') | |
24 | + | |
25 | + if -1 in [start, end]: | |
26 | + return '' | |
27 | + | |
28 | + head = self.content[start + len('<head>'):end] | |
29 | + return mark_safe(head) | |
30 | + | |
31 | + def generate_content(self, request=None): | |
32 | + self.content = '' | |
33 | + | |
34 | + | |
35 | +class WidgetManager(object): | |
36 | + widget_categories = {} | |
37 | + | |
38 | + @staticmethod | |
39 | + def register_widget(category, widget): | |
40 | + if not WidgetManager.widget_categories.has_key(category): | |
41 | + WidgetManager.widget_categories[category] = [] | |
42 | + | |
43 | + WidgetManager.widget_categories[category].append(widget) | |
44 | + | |
45 | + @staticmethod | |
46 | + def get_widgets(category, request=None): | |
47 | + if not WidgetManager.widget_categories.has_key(category): | |
48 | + return [] | |
49 | + | |
50 | + widgets = WidgetManager.widget_categories[category] | |
51 | + for widget in widgets: | |
52 | + widget.generate_content(request) | |
53 | + return widgets | ... | ... |
No preview for this file type
misc/etc/cron.d/colab
misc/lib/systemd/system/colab.service
setup.py
... | ... | @@ -24,6 +24,7 @@ REQUIREMENTS = [ |
24 | 24 | 'django-taggit>=0.12.1', |
25 | 25 | 'html2text>=3.200.3', |
26 | 26 | 'chardet>=2.3.0', |
27 | + 'requests>=2.7.0' | |
27 | 28 | ] |
28 | 29 | |
29 | 30 | TEST_REQUIREMENTS = [ |
... | ... | @@ -41,7 +42,7 @@ EXCLUDE_FROM_PACKAGES = [] |
41 | 42 | |
42 | 43 | setup( |
43 | 44 | name='colab', |
44 | - version='1.10.1', | |
45 | + version='1.11', | |
45 | 46 | url='https://github.com/colab-community/colab', |
46 | 47 | author='Sergio Oliveira', |
47 | 48 | author_email='sergio@tracy.com.br', | ... | ... |
tests/run.py
... | ... | @@ -5,7 +5,9 @@ import sys |
5 | 5 | |
6 | 6 | os.environ['DJANGO_SETTINGS_MODULE'] = 'colab.settings' |
7 | 7 | os.environ['COLAB_SETTINGS'] = 'tests/colab_settings.py' |
8 | +os.environ['COLAB_WIDGETS_SETTINGS'] = 'tests/widgets_settings.py' | |
8 | 9 | os.environ['COLAB_PLUGINS'] = 'tests/plugins.d' |
10 | +os.environ['COLAB_WIDGETS'] = 'tests/widgets.d' | |
9 | 11 | os.environ['COVERAGE_PROCESS_START'] = '.coveragerc' |
10 | 12 | |
11 | 13 | ... | ... |