Explorar o código

Translate individual counter page

Camille Masset %!s(int64=9) %!d(string=hai) anos
pai
achega
b65f417483

+ 1 - 1
counter/models.py

26
 class Reset(models.Model):
26
 class Reset(models.Model):
27
     timestamp = models.DateTimeField(_('datetime'), auto_now_add=True)
27
     timestamp = models.DateTimeField(_('datetime'), auto_now_add=True)
28
     reason = models.TextField(_('reason'))
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
     who = models.ForeignKey('Counter', related_name='who', verbose_name=_('seum giver'), blank=True, null=True, default=None)
30
     who = models.ForeignKey('Counter', related_name='who', verbose_name=_('seum giver'), blank=True, null=True, default=None)
31
 
31
 
32
     def __str__(self):
32
     def __str__(self):

+ 47 - 34
counter/templates/counterTemplate.html

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
 <div class="text-center">
9
 <div class="text-center">
3
   <h1>
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
   </h1>
12
   </h1>
6
 </div>
13
 </div>
7
 <div class="container-fluid">
14
 <div class="container-fluid">
37
         </div>
44
         </div>
38
         <div class="seum-counter panel-body" style="height:125px" id="container{{counter.id}}">
45
         <div class="seum-counter panel-body" style="height:125px" id="container{{counter.id}}">
39
           {% if counter.lastReset.noSeum %}
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
           {% else %}
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
           {% endif %}
56
           {% endif %}
48
-          </strong>
49
-          <br> {% endif %}
50
 
57
 
51
           <p>{{ counter.lastReset.reason | hashtag }}</p>
58
           <p>{{ counter.lastReset.reason | hashtag }}</p>
52
           <div class="text-center">
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
           </div>
63
           </div>
55
           <form style="display:none" id="counter{{counter.id}}" action="{% url 'reset-counter' %}" method="post">
64
           <form style="display:none" id="counter{{counter.id}}" action="{% url 'reset-counter' %}" method="post">
56
             {% csrf_token %}
65
             {% csrf_token %}
57
             <div class="form-group">
66
             <div class="form-group">
58
-              <label for="reason">Motif du seum :</label>
67
+              <label for="reason">{% trans "Motive for the seum:" %}</label>
59
               <input id="reason{{counter.id}}" type="text" class="form-control" name="reason"></input>
68
               <input id="reason{{counter.id}}" type="text" class="form-control" name="reason"></input>
60
             </div>
69
             </div>
61
             <input type="hidden" name="counter" value="{{counter.id}}"></input>
70
             <input type="hidden" name="counter" value="{{counter.id}}"></input>
62
             <input type="hidden" name="redirect" value="{% url 'counter' id_counter=counter.id %}"></input>
71
             <input type="hidden" name="redirect" value="{% url 'counter' id_counter=counter.id %}"></input>
63
             <input type="hidden" name="who" value="{{myCounter.id}}"></input>
72
             <input type="hidden" name="who" value="{{myCounter.id}}"></input>
64
             <div class="text-center">
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
             </div>
75
             </div>
67
           </form>
76
           </form>
68
         </div>
77
         </div>
71
     <div class="col-md-9">
80
     <div class="col-md-9">
72
       <div class="panel panel-info">
81
       <div class="panel panel-info">
73
         <div class="panel-heading">
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
         </div>
84
         </div>
76
         <div class="graphs timeline panel-body">
85
         <div class="graphs timeline panel-body">
77
             {% if counter.lastReset.noSeum %}
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
             {% else %}
90
             {% else %}
82
-            {{chart.as_html}}
91
+              {{ chart.as_html }}
83
             {% endif %}
92
             {% endif %}
84
         </div>
93
         </div>
85
       </div>
94
       </div>
89
     <div class="col-sm-12">
98
     <div class="col-sm-12">
90
       <div class="panel panel-default">
99
       <div class="panel panel-default">
91
         <div class="panel-heading">
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
         </div>
105
         </div>
94
         <div class="panel-body">
106
         <div class="panel-body">
95
           <table class="table table-striped">
107
           <table class="table table-striped">
96
             <thead>
108
             <thead>
97
               <tr>
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
               </tr>
114
               </tr>
103
             </thead>
115
             </thead>
104
             <tbody>
116
             <tbody>
105
               {% for reset in resets %}
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
               {% endfor %}
128
               {% endfor %}
117
             </tbody>
129
             </tbody>
118
           </table>
130
           </table>
123
 </div>
135
 </div>
124
 <div class="row">
136
 <div class="row">
125
   <div class="text-center">
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
   </div>
139
   </div>
128
 </div>
140
 </div>
129
 </div>
141
 </div>
142
+
130
 {% endblock %}
143
 {% endblock %}

+ 1 - 1
counter/templates/hashtagTemplate.html

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

+ 2 - 2
counter/urls.py

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

+ 103 - 0
counter/views/counter.py

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

+ 0 - 130
counter/views/views.py

353
     return HttpResponseRedirect(data['redirect'][0])
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
 def createUser(request):
356
 def createUser(request):
487
     if (request.method == 'POST'):
357
     if (request.method == 'POST'):
488
         # create a form instance and populate it with data from the request:
358
         # create a form instance and populate it with data from the request:

+ 58 - 8
locale/en/LC_MESSAGES/django.po

8
 msgstr ""
8
 msgstr ""
9
 "Project-Id-Version: PACKAGE VERSION\n"
9
 "Project-Id-Version: PACKAGE VERSION\n"
10
 "Report-Msgid-Bugs-To: \n"
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
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
 "Language-Team: LANGUAGE <LL@li.org>\n"
14
 "Language-Team: LANGUAGE <LL@li.org>\n"
121
 msgid "%(keyword)s for %(who)s"
121
 msgid "%(keyword)s for %(who)s"
122
 msgstr ""
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
 msgstr ""
158
 msgstr ""
127
 
159
 
160
+#: counter/templates/counterTemplate.html:110
128
 #: counter/templates/hashtagTemplate.html:26
161
 #: counter/templates/hashtagTemplate.html:26
129
 msgid "Date"
162
 msgid "Date"
130
 msgstr ""
163
 msgstr ""
131
 
164
 
165
+#: counter/templates/counterTemplate.html:111
132
 #: counter/templates/hashtagTemplate.html:27
166
 #: counter/templates/hashtagTemplate.html:27
133
 msgid "Motive"
167
 msgid "Motive"
134
 msgstr ""
168
 msgstr ""
135
 
169
 
136
-#: counter/templates/hashtagTemplate.html:28
137
-msgid "Victim"
138
-msgstr ""
139
-
170
+#: counter/templates/counterTemplate.html:112
140
 #: counter/templates/hashtagTemplate.html:29
171
 #: counter/templates/hashtagTemplate.html:29
141
-msgid "Seum giver"
172
+msgid "Seum thrower"
142
 msgstr ""
173
 msgstr ""
143
 
174
 
175
+#: counter/templates/counterTemplate.html:113
144
 #: counter/templates/hashtagTemplate.html:30
176
 #: counter/templates/hashtagTemplate.html:30
145
 msgid "Number of likes"
177
 msgid "Number of likes"
146
 msgstr ""
178
 msgstr ""
147
 
179
 
180
+#: counter/templates/counterTemplate.html:138
148
 #: counter/templates/hashtagTemplate.html:56
181
 #: counter/templates/hashtagTemplate.html:56
149
 msgid "Back to counters list"
182
 msgid "Back to counters list"
150
 msgstr ""
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
 #: seum/settings.py:111
202
 #: seum/settings.py:111
153
 msgid "English"
203
 msgid "English"
154
 msgstr ""
204
 msgstr ""

+ 61 - 9
locale/fr/LC_MESSAGES/django.po

8
 msgstr ""
8
 msgstr ""
9
 "Project-Id-Version: PACKAGE VERSION\n"
9
 "Project-Id-Version: PACKAGE VERSION\n"
10
 "Report-Msgid-Bugs-To: \n"
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
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
 "Language-Team: LANGUAGE <LL@li.org>\n"
14
 "Language-Team: LANGUAGE <LL@li.org>\n"
126
 msgid "%(keyword)s for %(who)s"
126
 msgid "%(keyword)s for %(who)s"
127
 msgstr "%(keyword)s pour %(who)s"
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
 #: counter/templates/hashtagTemplate.html:26
168
 #: counter/templates/hashtagTemplate.html:26
134
 msgid "Date"
169
 msgid "Date"
135
 msgstr "Date"
170
 msgstr "Date"
136
 
171
 
172
+#: counter/templates/counterTemplate.html:111
137
 #: counter/templates/hashtagTemplate.html:27
173
 #: counter/templates/hashtagTemplate.html:27
138
 msgid "Motive"
174
 msgid "Motive"
139
 msgstr "Motif"
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
 #: counter/templates/hashtagTemplate.html:29
178
 #: counter/templates/hashtagTemplate.html:29
146
-msgid "Seum giver"
179
+msgid "Seum thrower"
147
 msgstr "Fouteur de seum"
180
 msgstr "Fouteur de seum"
148
 
181
 
182
+#: counter/templates/counterTemplate.html:113
149
 #: counter/templates/hashtagTemplate.html:30
183
 #: counter/templates/hashtagTemplate.html:30
150
 msgid "Number of likes"
184
 msgid "Number of likes"
151
 msgstr "Nombre de likes"
185
 msgstr "Nombre de likes"
152
 
186
 
187
+#: counter/templates/counterTemplate.html:138
153
 #: counter/templates/hashtagTemplate.html:56
188
 #: counter/templates/hashtagTemplate.html:56
154
 msgid "Back to counters list"
189
 msgid "Back to counters list"
155
 msgstr "Retour à la liste des compteurs"
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
 #: seum/settings.py:111
209
 #: seum/settings.py:111
158
 msgid "English"
210
 msgid "English"
159
 msgstr "Anglais"
211
 msgstr "Anglais"