Przeglądaj źródła

Translate individual counter page

Camille Masset 9 lat temu
rodzic
commit
b65f417483

+ 1 - 1
counter/models.py

@@ -26,7 +26,7 @@ class Counter(models.Model):
26 26
 class Reset(models.Model):
27 27
     timestamp = models.DateTimeField(_('datetime'), auto_now_add=True)
28 28
     reason = models.TextField(_('reason'))
29
-    counter = models.ForeignKey('Counter', related_name='counter', verbose_name=_('victim'))
29
+    counter = models.ForeignKey('Counter', related_name='resets', verbose_name=_('victim'))
30 30
     who = models.ForeignKey('Counter', related_name='who', verbose_name=_('seum giver'), blank=True, null=True, default=None)
31 31
 
32 32
     def __str__(self):

+ 47 - 34
counter/templates/counterTemplate.html

@@ -1,7 +1,14 @@
1
-{% extends 'baseTemplate.html' %} {% block title %}{{counter.trigramme}}{% endblock %} {% block content %} {% load hashtags %}
1
+{% extends 'baseTemplate.html' %}
2
+
3
+{% block title %}{{counter.trigramme}}{% endblock %}
4
+
5
+{% block content %}
6
+{% load i18n %}
7
+{% load hashtags %}
8
+
2 9
 <div class="text-center">
3 10
   <h1>
4
-      <a class="counter-link" href="{% url 'home' %}"><b>{{counter.trigramme}}</b> <small>{{ counter.name }}</small></a>
11
+      <a class="counter-link" href="{% url 'home' %}"><b>{{ counter.trigramme }}</b> <small>{{ counter.name }}</small></a>
5 12
   </h1>
6 13
 </div>
7 14
 <div class="container-fluid">
@@ -37,32 +44,34 @@
37 44
         </div>
38 45
         <div class="seum-counter panel-body" style="height:125px" id="container{{counter.id}}">
39 46
           {% if counter.lastReset.noSeum %}
40
-          <strong>N'a pas encore eu le seum.</strong>
41
-          <br> {% else %}
42
-          <strong>
43
-          {% if counter.lastReset.selfSeum %}
44
-              A eu le seum il y a {{ counter.lastReset.formatted_delta }}.
47
+            <strong>{% trans "Has not got the seum yet" %}.</strong><br />
45 48
           {% else %}
46
-              {{ counter.lastReset.who.trigramme }} lui a foutu le seum il y a {{ counter.lastReset.formatted_delta }}.
49
+            <strong>
50
+            {% if counter.lastReset.selfSeum %}
51
+              {% trans "Has got the seum" %} {{ counter.lastReset.formatted_delta }}.
52
+            {% else %}
53
+              {{ counter.lastReset.who.trigramme }} {% trans "threw him/her the seum" %} {{ counter.lastReset.formatted_delta }}.
54
+            {% endif %}
55
+            </strong><br />
47 56
           {% endif %}
48
-          </strong>
49
-          <br> {% endif %}
50 57
 
51 58
           <p>{{ counter.lastReset.reason | hashtag }}</p>
52 59
           <div class="text-center">
53
-            <button id="button{{counter.id}}" class="btn btn-default btn-danger" type="button" onclick="revealSeumForm({{counter.id}})">Remettre à zéro</button>
60
+            <button id="button{{counter.id}}" class="btn btn-default btn-danger" type="button" onclick="revealSeumForm({{counter.id}})">
61
+              {% trans "Reset" %}
62
+            </button>
54 63
           </div>
55 64
           <form style="display:none" id="counter{{counter.id}}" action="{% url 'reset-counter' %}" method="post">
56 65
             {% csrf_token %}
57 66
             <div class="form-group">
58
-              <label for="reason">Motif du seum :</label>
67
+              <label for="reason">{% trans "Motive for the seum:" %}</label>
59 68
               <input id="reason{{counter.id}}" type="text" class="form-control" name="reason"></input>
60 69
             </div>
61 70
             <input type="hidden" name="counter" value="{{counter.id}}"></input>
62 71
             <input type="hidden" name="redirect" value="{% url 'counter' id_counter=counter.id %}"></input>
63 72
             <input type="hidden" name="who" value="{{myCounter.id}}"></input>
64 73
             <div class="text-center">
65
-              <button type="submit" class="btn btn-default btn-success">Foutre le seum</button>
74
+              <button type="submit" class="btn btn-default btn-success">{% trans "Throw the seum" %}</button>
66 75
             </div>
67 76
           </form>
68 77
         </div>
@@ -71,15 +80,15 @@
71 80
     <div class="col-md-9">
72 81
       <div class="panel panel-info">
73 82
         <div class="panel-heading">
74
-          <h2 class="panel-title">Timeline du seum</h2>
83
+          <h2 class="panel-title">{% trans "Timeline of the seum" %}</h2>
75 84
         </div>
76 85
         <div class="graphs timeline panel-body">
77 86
             {% if counter.lastReset.noSeum %}
78
-            <div class="text-center text-muted">
79
-                <p>Pas encore de timeline du seum...</p>
80
-            </div>
87
+              <div class="text-center text-muted">
88
+                <p>{% trans "No timeline of the seum yet..." %}</p>
89
+              </div>
81 90
             {% else %}
82
-            {{chart.as_html}}
91
+              {{ chart.as_html }}
83 92
             {% endif %}
84 93
         </div>
85 94
       </div>
@@ -89,30 +98,33 @@
89 98
     <div class="col-sm-12">
90 99
       <div class="panel panel-default">
91 100
         <div class="panel-heading">
92
-          <h2 class="panel-title">Historique du seum <small class="badge pull-right">{{seumFrequency}}/seum</small></h2>
101
+          <h2 class="panel-title">
102
+            {% trans "Seum history" %}
103
+            <small class="badge pull-right">{{ seumFrequency }}/seum</small>
104
+          </h2>
93 105
         </div>
94 106
         <div class="panel-body">
95 107
           <table class="table table-striped">
96 108
             <thead>
97 109
               <tr>
98
-                <th>Date</th>
99
-                <th>Motif</th>
100
-                <th>Fouteur de seum</th>
101
-                <th>Nombre de likes</th>
110
+                <th>{% trans "Date" %}</th>
111
+                <th>{% trans "Motive" %}</th>
112
+                <th>{% trans "Seum thrower" %}</th>
113
+                <th>{% trans "Number of likes" %}</th>
102 114
               </tr>
103 115
             </thead>
104 116
             <tbody>
105 117
               {% for reset in resets %}
106
-              <tr>
107
-                <td><b>{{ reset.date }}</b></td>
108
-                <td>{{ reset.reason | hashtag }}</td>
109
-                <td>
110
-                {% if not reset.selfSeum %}
111
-                    {{ reset.who.trigramme }}
112
-                {% endif %}
113
-                </td>
114
-                <td>{{ reset.likeCount }}</td>
115
-              </tr>
118
+                <tr>
119
+                  <td><b>{{ reset.date | date:"SHORT_DATETIME_FORMAT" }}</b></td>
120
+                  <td>{{ reset.reason | hashtag }}</td>
121
+                  <td>
122
+                    {% if not reset.selfSeum %}
123
+                      {{ reset.who.trigramme }}
124
+                    {% endif %}
125
+                  </td>
126
+                  <td>{{ reset.likeCount }}</td>
127
+                </tr>
116 128
               {% endfor %}
117 129
             </tbody>
118 130
           </table>
@@ -123,8 +135,9 @@
123 135
 </div>
124 136
 <div class="row">
125 137
   <div class="text-center">
126
-    <a class="btn btn-success" href="{% url 'home' %}">Retour à la liste des compteurs</a>
138
+    <a class="btn btn-success" href="{% url 'home' %}">{% trans "Back to counters list" %}</a>
127 139
   </div>
128 140
 </div>
129 141
 </div>
142
+
130 143
 {% endblock %}

+ 1 - 1
counter/templates/hashtagTemplate.html

@@ -26,7 +26,7 @@
26 26
                 <th>{% trans "Date" %}</th>
27 27
                 <th>{% trans "Motive" %}</th>
28 28
                 <th>{% trans "Victim" %}</th>
29
-                <th>{% trans "Seum giver" %}</th>
29
+                <th>{% trans "Seum thrower" %}</th>
30 30
                 <th>{% trans "Number of likes" %}</th>
31 31
               </tr>
32 32
             </thead>

+ 2 - 2
counter/urls.py

@@ -3,12 +3,12 @@ from counter.rss import SeumFeed
3 3
 from django.contrib.auth import views as auth_views
4 4
 from django.views.generic.base import RedirectView
5 5
 
6
-from .views import views, hashtag
6
+from .views import views, hashtag, counter
7 7
 
8 8
 urlpatterns = [
9 9
     url(r'^$', views.home, name='home'),
10 10
     url(r'^reset-counter/$', views.resetCounter, name='reset-counter'),
11
-    url(r'^counter/(?P<id_counter>\d+)/$', views.counter, name='counter'),
11
+    url(r'^counter/(?P<id_counter>\d+)/$', counter.get, name='counter'),
12 12
     url(r'^hashtag/(?P<keyword>.+)/$', hashtag.get, name='hashtag'),
13 13
     url(r'^rss/$', SeumFeed()),
14 14
     url(r'^create_user/$', views.createUser, name='create_user'),

+ 103 - 0
counter/views/counter.py

@@ -0,0 +1,103 @@
1
+from datetime import datetime, timedelta
2
+import copy
3
+
4
+from django.contrib.auth.decorators import login_required
5
+from django.core.urlresolvers import reverse
6
+from django.http import HttpResponseRedirect
7
+from django.shortcuts import render
8
+from django.utils.translation import ugettext as _, get_language
9
+
10
+import arrow
11
+from babel.dates import format_timedelta, format_datetime
12
+from graphos.renderers import gchart
13
+from graphos.sources.model import ModelDataSource
14
+
15
+from counter.models import *
16
+
17
+
18
+@login_required
19
+def get(request, id_counter):
20
+    try:
21
+        myCounter = Counter.objects.get(user__id=request.user.id)
22
+    except Counter.DoesNotExist:
23
+        return HttpResponseRedirect(reverse('login'))
24
+
25
+    counter = Counter.objects.prefetch_related('resets', 'resets__likes').get(pk=id_counter)
26
+    resets = counter.resets.order_by('-timestamp')
27
+    timezero = timedelta(0)
28
+
29
+    # Display
30
+    if resets.count() == 0:
31
+        counter.lastReset = Reset()
32
+        counter.lastReset.delta = timezero
33
+        counter.lastReset.noSeum = True
34
+        seumFrequency = _('unknown')
35
+    else:
36
+        firstReset = resets.reverse()[0]
37
+        counter.lastReset = resets[0]
38
+        counter.lastReset.noSeum = False
39
+        if counter.lastReset.who is None or counter.lastReset.who == counter:
40
+            counter.lastReset.selfSeum = True
41
+        else:
42
+            counter.lastReset.selfSeum = False
43
+
44
+        counter.lastReset.formatted_delta = arrow.Arrow.fromdatetime(counter.lastReset.timestamp).humanize(locale=get_language())
45
+        counter.seumCount = counter.resets.count()
46
+        seumFrequency = format_timedelta((datetime.now() - firstReset.timestamp.replace(tzinfo=None)) / counter.seumCount,
47
+            locale=get_language(), threshold=1)
48
+
49
+        counter.lastLikes = list(counter.lastReset.likes.all())
50
+        counter.alreadyLiked = myCounter.id in [l.liker.id for l in counter.lastLikes]
51
+        counter.likeCount = len(counter.lastLikes)
52
+        if counter.likeCount > 0:
53
+            counter.likersString = ", ".join(like.liker.trigramme for like in counter.lastLikes)
54
+
55
+    for reset in resets:
56
+        if reset.who is None or reset.who == reset.counter:
57
+            reset.selfSeum = True
58
+        else:
59
+            reset.selfSeum = False
60
+        reset.date = reset.timestamp
61
+        reset.likeCount = reset.likes.count()
62
+
63
+    # Timeline graph
64
+    # Data pre-processing
65
+    if not counter.lastReset.noSeum:
66
+        resets_graph = resets
67
+        for reset in resets_graph:
68
+            reset.timestamp = {
69
+                'v': reset.timestamp.timestamp(),
70
+                'f': arrow.Arrow.fromdatetime(reset.timestamp).humanize(locale=get_language())
71
+            }
72
+            if reset.selfSeum:
73
+                reset.Seum = {'v': 0, 'f': reset.reason}
74
+            else:
75
+                reset.Seum = {'v': 0, 'f': _('From %(who)s: %(reason)s') % {'who': reset.who.trigramme, 'reason': reset.reason}}
76
+
77
+        # Drawing the graph
78
+        data = ModelDataSource(resets, fields=['timestamp', 'Seum'])
79
+        chart = gchart.LineChart(data, options={
80
+            'lineWidth': 0,
81
+            'pointSize': 10,
82
+            'title': '',
83
+            'vAxis': {'ticks': []},
84
+            'hAxis': {'ticks': [{
85
+                'v': firstReset.timestamp.timestamp(),
86
+                'f': arrow.Arrow.fromdatetime(firstReset.timestamp).humanize(locale=get_language())
87
+            }, {
88
+                'v': datetime.now().timestamp(),
89
+                'f': 'Présent'}
90
+            ]},
91
+            'legend': 'none',
92
+            'height': 90
93
+        })
94
+    else:
95
+        chart = None
96
+
97
+    return render(request, 'counterTemplate.html', {
98
+        'counter': counter,
99
+        'chart': chart,
100
+        'resets': resets,
101
+        'seumFrequency': seumFrequency,
102
+        'myCounter': myCounter,
103
+    })

+ 3 - 3
counter/views/hashtag.py

@@ -1,12 +1,12 @@
1
-from babel.dates import format_timedelta, format_datetime
2
-import arrow
3
-
4 1
 from django.contrib.auth.decorators import login_required
5 2
 from django.core.urlresolvers import reverse
6 3
 from django.http import HttpResponseRedirect
7 4
 from django.shortcuts import render
8 5
 from django.utils.translation import ugettext as _, get_language
9 6
 
7
+import arrow
8
+from babel.dates import format_timedelta, format_datetime
9
+
10 10
 from counter.models import *
11 11
 
12 12
 

+ 0 - 130
counter/views/views.py

@@ -353,136 +353,6 @@ def resetCounter(request):
353 353
     return HttpResponseRedirect(data['redirect'][0])
354 354
 
355 355
 
356
-@login_required
357
-def counter(request, id_counter):
358
-    try:
359
-        myCounter = Counter.objects.get(user__id=request.user.id)
360
-    except Counter.DoesNotExist:
361
-        return HttpResponseRedirect(reverse('login'))
362
-
363
-    counter = Counter.objects.get(pk=id_counter)
364
-    resets = Reset.objects.filter(counter=counter).order_by('-timestamp')
365
-    timezero = timedelta(0)
366
-    # Display
367
-    if (resets.count() == 0):
368
-        counter.lastReset = Reset()
369
-        counter.lastReset.delta = timezero
370
-        counter.lastReset.noSeum = True
371
-        seumFrequency = 'inconnu'
372
-    else:
373
-        firstReset = copy.copy(resets[len(resets) - 1])
374
-        counter.lastReset = resets[0]
375
-        counter.lastReset.noSeum = False
376
-        if (counter.lastReset.who is None or
377
-                counter.lastReset.who.id == counter.id):
378
-            counter.lastReset.selfSeum = True
379
-        else:
380
-            counter.lastReset.selfSeum = False
381
-        counter.lastReset.delta = datetime.now(
382
-        ) - counter.lastReset.timestamp.replace(tzinfo=None)
383
-        counter.lastReset.formatted_delta = format_timedelta(
384
-            counter.lastReset.delta, locale='fr', threshold=1)
385
-        counter.seumCount = Reset.objects.filter(
386
-            counter=counter).count()
387
-        seumFrequency = format_timedelta((
388
-            datetime.now() - firstReset.timestamp.replace(tzinfo=None)) /
389
-            counter.seumCount, locale='fr', threshold=1)
390
-        counter.alreadyLiked = (Like.objects.filter(
391
-            reset=counter.lastReset, liker=myCounter).exists())
392
-        likesMe = Like.objects.filter(
393
-            reset=counter.lastReset)
394
-        counter.likeCount = likesMe.count()
395
-        if counter.likeCount > 0:
396
-            counter.likersString = functools.reduce(
397
-                lambda a, b: a + ", " + b,
398
-                [like.liker.trigramme for like in likesMe])
399
-
400
-    for reset in resets:
401
-        if (reset.who is None or
402
-                reset.who.id == reset.counter.id):
403
-            reset.selfSeum = True
404
-        else:
405
-            reset.selfSeum = False
406
-        reset.date = format_datetime(
407
-            reset.timestamp, locale='fr',
408
-            format="dd/MM/Y HH:mm")
409
-        reset.likeCount = Like.objects.filter(reset=reset).count()
410
-
411
-    # Timeline graph
412
-    # Data pre-processing
413
-    if not counter.lastReset.noSeum:
414
-        resets_graph = resets
415
-        for reset in resets_graph:
416
-            reset.timestamp = {
417
-                'v': reset.timestamp.timestamp(),
418
-                'f': "Il y a " + format_timedelta(
419
-                    datetime.now() - reset.timestamp.replace(tzinfo=None),
420
-                    locale='fr', threshold=1)
421
-            }
422
-            if reset.selfSeum:
423
-                reset.Seum = {'v': 0, 'f': reset.reason}
424
-            else:
425
-                reset.Seum = {'v': 0, 'f': 'De ' +
426
-                              reset.who.trigramme + ' : ' + reset.reason}
427
-        # Drawing the graph
428
-        data = ModelDataSource(
429
-            resets, fields=['timestamp', 'Seum'])
430
-        chart = gchart.LineChart(data, options={
431
-            'lineWidth': 0,
432
-            'pointSize': 10,
433
-            'title': '',
434
-            'vAxis': {'ticks': []},
435
-            'hAxis': {'ticks': [{
436
-                'v': firstReset.timestamp.timestamp(),
437
-                'f': 'Il y a ' + format_timedelta(
438
-                    datetime.now() - firstReset.timestamp.replace(tzinfo=None),
439
-                    locale='fr', threshold=1)
440
-            }, {
441
-                'v': datetime.now().timestamp(),
442
-                'f': 'Présent'}
443
-            ]},
444
-            'legend': 'none',
445
-            'height': 90
446
-        })
447
-    else:
448
-        chart = None
449
-
450
-    return render(request, 'counterTemplate.html', {
451
-        'counter': counter,
452
-        'chart': chart,
453
-        'resets': resets,
454
-        'seumFrequency': seumFrequency,
455
-        'myCounter': myCounter,
456
-    })
457
-
458
-
459
-# @login_required
460
-# def hashtag(request, keyword):
461
-#     try:
462
-#         keyword = Keyword.objects.get(text=keyword)
463
-#     except Keyword.DoesNotExist:
464
-#         print('erreur !')
465
-#         return HttpResponseRedirect(reverse('home'))
466
-#     hashtag = '#' + keyword.text
467
-#     resets = Reset.objects.filter(
468
-#         hashtag__keyword=keyword).order_by('-timestamp')
469
-#     for reset in resets:
470
-#         if (reset.who is None or
471
-#                 reset.who.id == reset.counter.id):
472
-#             reset.selfSeum = True
473
-#         else:
474
-#             reset.selfSeum = False
475
-#         reset.date = format_datetime(
476
-#             reset.timestamp, locale='fr',
477
-#             format="dd/MM/Y HH:mm")
478
-#         reset.likeCount = Like.objects.filter(reset=reset).count()
479
-#     return render(request, 'hashtagTemplate.html', {
480
-#         'hashtag': hashtag,
481
-#         'totalNumber': resets.count(),
482
-#         'resets': resets,
483
-#     })
484
-
485
-
486 356
 def createUser(request):
487 357
     if (request.method == 'POST'):
488 358
         # create a form instance and populate it with data from the request:

+ 58 - 8
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: 2017-01-21 14:29+0100\n"
11
+"POT-Creation-Date: 2017-01-21 15:44+0100\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"
@@ -121,34 +121,84 @@ msgstr ""
121 121
 msgid "%(keyword)s for %(who)s"
122 122
 msgstr ""
123 123
 
124
-#: counter/templates/hashtagTemplate.html:20
125
-msgid "Seums containing"
124
+#: counter/templates/counterTemplate.html:47
125
+msgid "Has not got the seum yet"
126
+msgstr ""
127
+
128
+#: counter/templates/counterTemplate.html:51
129
+msgid "Has got the seum"
130
+msgstr ""
131
+
132
+#: counter/templates/counterTemplate.html:53
133
+msgid "threw him/her the seum"
134
+msgstr ""
135
+
136
+#: counter/templates/counterTemplate.html:61
137
+msgid "Reset"
138
+msgstr ""
139
+
140
+#: counter/templates/counterTemplate.html:67
141
+msgid "Motive for the seum:"
142
+msgstr ""
143
+
144
+#: counter/templates/counterTemplate.html:74
145
+msgid "Throw the seum"
146
+msgstr ""
147
+
148
+#: counter/templates/counterTemplate.html:83
149
+msgid "Timeline of the seum"
150
+msgstr ""
151
+
152
+#: counter/templates/counterTemplate.html:88
153
+msgid "No timeline of the seum yet..."
154
+msgstr ""
155
+
156
+#: counter/templates/counterTemplate.html:102
157
+msgid "Seum history"
126 158
 msgstr ""
127 159
 
160
+#: counter/templates/counterTemplate.html:110
128 161
 #: counter/templates/hashtagTemplate.html:26
129 162
 msgid "Date"
130 163
 msgstr ""
131 164
 
165
+#: counter/templates/counterTemplate.html:111
132 166
 #: counter/templates/hashtagTemplate.html:27
133 167
 msgid "Motive"
134 168
 msgstr ""
135 169
 
136
-#: counter/templates/hashtagTemplate.html:28
137
-msgid "Victim"
138
-msgstr ""
139
-
170
+#: counter/templates/counterTemplate.html:112
140 171
 #: counter/templates/hashtagTemplate.html:29
141
-msgid "Seum giver"
172
+msgid "Seum thrower"
142 173
 msgstr ""
143 174
 
175
+#: counter/templates/counterTemplate.html:113
144 176
 #: counter/templates/hashtagTemplate.html:30
145 177
 msgid "Number of likes"
146 178
 msgstr ""
147 179
 
180
+#: counter/templates/counterTemplate.html:138
148 181
 #: counter/templates/hashtagTemplate.html:56
149 182
 msgid "Back to counters list"
150 183
 msgstr ""
151 184
 
185
+#: counter/templates/hashtagTemplate.html:20
186
+msgid "Seums containing"
187
+msgstr ""
188
+
189
+#: counter/templates/hashtagTemplate.html:28
190
+msgid "Victim"
191
+msgstr ""
192
+
193
+#: counter/views/counter.py:34
194
+msgid "unknown"
195
+msgstr ""
196
+
197
+#: counter/views/counter.py:75
198
+#, python-format
199
+msgid "From %(who)s: %(reason)s"
200
+msgstr ""
201
+
152 202
 #: seum/settings.py:111
153 203
 msgid "English"
154 204
 msgstr ""

+ 61 - 9
locale/fr/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: 2017-01-21 14:29+0100\n"
11
+"POT-Creation-Date: 2017-01-21 15:44+0100\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"
@@ -126,34 +126,86 @@ msgstr "hashtags"
126 126
 msgid "%(keyword)s for %(who)s"
127 127
 msgstr "%(keyword)s pour %(who)s"
128 128
 
129
-#: counter/templates/hashtagTemplate.html:20
130
-msgid "Seums containing"
131
-msgstr "Liste des seums contenant"
129
+#: counter/templates/counterTemplate.html:47
130
+msgid "Has not got the seum yet"
131
+msgstr "N'a pas encore eu le seum"
132
+
133
+#: counter/templates/counterTemplate.html:51
134
+msgid "Has got the seum"
135
+msgstr "A eu le seum"
136
+
137
+#: counter/templates/counterTemplate.html:53
138
+msgid "threw him/her the seum"
139
+msgstr "a foutu le seum"
140
+
141
+#: counter/templates/counterTemplate.html:61
142
+#, fuzzy
143
+#| msgid "reset"
144
+msgid "Reset"
145
+msgstr "Remise à zéro"
132 146
 
147
+#: counter/templates/counterTemplate.html:67
148
+msgid "Motive for the seum:"
149
+msgstr "Motif du seum"
150
+
151
+#: counter/templates/counterTemplate.html:74
152
+msgid "Throw the seum"
153
+msgstr "Foutre le seum"
154
+
155
+#: counter/templates/counterTemplate.html:83
156
+msgid "Timeline of the seum"
157
+msgstr "Timeline du seum"
158
+
159
+#: counter/templates/counterTemplate.html:88
160
+msgid "No timeline of the seum yet..."
161
+msgstr "Pas encore de timeline du seum..."
162
+
163
+#: counter/templates/counterTemplate.html:102
164
+msgid "Seum history"
165
+msgstr "Historique du seum"
166
+
167
+#: counter/templates/counterTemplate.html:110
133 168
 #: counter/templates/hashtagTemplate.html:26
134 169
 msgid "Date"
135 170
 msgstr "Date"
136 171
 
172
+#: counter/templates/counterTemplate.html:111
137 173
 #: counter/templates/hashtagTemplate.html:27
138 174
 msgid "Motive"
139 175
 msgstr "Motif"
140 176
 
141
-#: counter/templates/hashtagTemplate.html:28
142
-msgid "Victim"
143
-msgstr "Victime"
144
-
177
+#: counter/templates/counterTemplate.html:112
145 178
 #: counter/templates/hashtagTemplate.html:29
146
-msgid "Seum giver"
179
+msgid "Seum thrower"
147 180
 msgstr "Fouteur de seum"
148 181
 
182
+#: counter/templates/counterTemplate.html:113
149 183
 #: counter/templates/hashtagTemplate.html:30
150 184
 msgid "Number of likes"
151 185
 msgstr "Nombre de likes"
152 186
 
187
+#: counter/templates/counterTemplate.html:138
153 188
 #: counter/templates/hashtagTemplate.html:56
154 189
 msgid "Back to counters list"
155 190
 msgstr "Retour à la liste des compteurs"
156 191
 
192
+#: counter/templates/hashtagTemplate.html:20
193
+msgid "Seums containing"
194
+msgstr "Liste des seums contenant"
195
+
196
+#: counter/templates/hashtagTemplate.html:28
197
+msgid "Victim"
198
+msgstr "Victime"
199
+
200
+#: counter/views/counter.py:34
201
+msgid "unknown"
202
+msgstr "inconnu"
203
+
204
+#: counter/views/counter.py:75
205
+#, python-format
206
+msgid "From %(who)s: %(reason)s"
207
+msgstr "De %(who)s : %(reason)s"
208
+
157 209
 #: seum/settings.py:111
158 210
 msgid "English"
159 211
 msgstr "Anglais"