forked from 42CTF/website
Compare commits
113 Commits
translatio
...
main
Author | SHA1 | Date |
---|---|---|
Danhia | f1b1214291 | |
Danhia | 8b28f73bdb | |
Danhia | c8adc6caf9 | |
Danhia | 6ecb94eab5 | |
Danhia | 44897411f5 | |
Danhia | 5a10e033a2 | |
Danhia | 3d86f21ba2 | |
Starthur | 691c53e110 | |
Starthur | 2d4816e78f | |
Danhia | 5d84174db2 | |
Danhia | 9ad64e72bc | |
Danhia | 9d0a420cac | |
Starthur | 7120a80c1d | |
Starthur | fe71460537 | |
Danhia | 32bbc392d6 | |
UncleReaton | acf306097a | |
UncleReaton | dc955fc189 | |
UncleReaton | e304f7cd15 | |
Danhia | 73cf94515d | |
Danhia | 94237bd9b6 | |
Starthur | a983aafba2 | |
Starthur | cce09ed254 | |
Danhia | c2e58c4f92 | |
Danhia | eba672d067 | |
Danhia | 1a6c31f5e8 | |
Danhia | bd17ad5f8f | |
Danhia | 40984a2a0c | |
Danhia | 9ac003ea3c | |
Danhia | 5cf86b9c36 | |
zero | 7c06c24d9f | |
zero | 9b2da1e2cc | |
zero | 891c2530e6 | |
Danhia | 13895d7712 | |
Danhia | 0f64c7579c | |
zero | 02331beff4 | |
zero | 5b2abeac20 | |
Danhia | 1771f3c2bb | |
Danhia | 09118cac7a | |
Danhia | 7cd43ca35f | |
Danhia | d21915405e | |
zero | dd7a69aa50 | |
Danhia | 8a2cc6f3ae | |
Danhia | e36ca2b146 | |
Danhia | 63876e91ef | |
Danhia | eadede339b | |
zero | d1992e1476 | |
Danhia | 00acec6fdb | |
Danhia | 1ee02fc964 | |
Starthur | ff23250275 | |
Starthur | c449f26ad7 | |
Danhia | 42858e4342 | |
Danhia | ec61f06be0 | |
Danhia | 2233474c89 | |
Danhia | 7b9dfad15d | |
Starthur | 46ea80161d | |
Starthur | d222784bb0 | |
Starthur | 86fbf93dbf | |
Arthur-TRT | ff657c070a | |
Starthur | a1ec3e5f20 | |
Starthur | 0d7f39d335 | |
Danhia | f56322bd6e | |
Danhia | 506eb54d49 | |
Starthur | 87efa03ed0 | |
Starthur | 5435ea3316 | |
Starthur | 4245cfd19f | |
Starthur | f391a5a5cb | |
Starthur | ebdc3b9c9e | |
Starthur | 9d3b9ebf5f | |
Starthur | 04318e3b0a | |
Starthur | eeb752d605 | |
Starthur | 2d466454f5 | |
Starthur | 7ff972e623 | |
Starthur | d8791353fb | |
Starthur | dc3e7f4b27 | |
Starthur | 763853b3c6 | |
Starthur | c1c82ff9e0 | |
Starthur | fdc3796667 | |
Starthur | b25bf03485 | |
Starthur | 5a08764df7 | |
UncleReaton | 084fb1a62d | |
Starthur | d8c35db454 | |
UncleReaton | 6e860b2997 | |
Starthur | 4ee613d9af | |
Starthur | 9c75b317eb | |
Starthur | 2d2e97e794 | |
Arthur-TRT | 66ab43bf2b | |
Starthur | 4213883774 | |
Arthur-TRT | 9cb4b2b3a8 | |
Starthur | b90cc55b8d | |
UncleReaton | d19514f629 | |
Aslan | 6b2b0cef7d | |
Aslan | d7bf9ae74e | |
Danhia | dfa36b58a6 | |
Starthur | bf5678d371 | |
Danhia | 3c013794d7 | |
Danhia | 6110408cd0 | |
Starthur | bb2617a3e4 | |
Starthur | e23d6d7f49 | |
Starthur | 978dd24a00 | |
Danhia | 15f3a21c60 | |
Starthur | e480aec493 | |
Starthur | 3991dda7d3 | |
Starthur | e8575d559e | |
Starthur | ea691204c4 | |
Arthur TROUILLET | 21f38906df | |
Arthur TROUILLET | 39e3859836 | |
Arthur-TRT | a26784cd98 | |
Yir | ba7992e7be | |
Danhia | 7dad96d79f | |
Danhia | d554961dd1 | |
Danhia | 280ba0d1fc | |
Bertrand C | bdd51b6cf9 | |
Bertrand C | c004c18e75 |
|
@ -1,5 +1,6 @@
|
||||||
from .models import UserProfileInfo
|
from .models import UserProfileInfo
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
from .models import Campus
|
||||||
|
|
||||||
#admin.site.register(UserProfileInfo)
|
#admin.site.register(UserProfileInfo)
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
|
@ -7,6 +8,10 @@ from django.contrib import admin
|
||||||
@admin.register(UserProfileInfo)
|
@admin.register(UserProfileInfo)
|
||||||
class userprofile(admin.ModelAdmin):
|
class userprofile(admin.ModelAdmin):
|
||||||
#list display
|
#list display
|
||||||
list_display = ['user', 'score', 'last_submission_date']
|
list_display = ['user', 'score', 'last_submission_date', 'campus']
|
||||||
# search list
|
# search list
|
||||||
search_fields = ['score', 'user__username']
|
search_fields = ['score', 'user__username', 'campus__name']
|
||||||
|
|
||||||
|
@admin.register(Campus)
|
||||||
|
class campus(admin.ModelAdmin):
|
||||||
|
list_display = ['name']
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
from collections import defaultdict
|
||||||
|
from django.core.management.base import BaseCommand, CommandError
|
||||||
|
from accounts import models as acc_models
|
||||||
|
from django.contrib.auth import models as auth_models
|
||||||
|
from django.contrib.auth.models import timezone
|
||||||
|
from datetime import timedelta
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
help = 'Remove all users who never logged in'
|
||||||
|
|
||||||
|
def handle(self, *args, **options):
|
||||||
|
all_users = acc_models.UserProfileInfo.objects.filter(score=0).select_related()
|
||||||
|
to_remove = []
|
||||||
|
for elem in all_users:
|
||||||
|
user = elem.user
|
||||||
|
if user.last_login is None and user.date_joined < timezone.now() - timedelta(hours=72):
|
||||||
|
to_remove.append(user)
|
||||||
|
print("You are going to remove {} users.".format(len(to_remove)))
|
||||||
|
answer = input("Continue ? [y/N] ")
|
||||||
|
|
||||||
|
if answer.lower() in ["y","yes"]:
|
||||||
|
for elem in to_remove:
|
||||||
|
elem.delete()
|
||||||
|
print("Users have been successfully pruned.")
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Generated by Django 3.2.11 on 2022-03-29 08:34
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('accounts', '0007_auto_20220123_1704'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='userprofileinfo',
|
||||||
|
name='intra42_campus',
|
||||||
|
field=models.CharField(blank=True, max_length=50, null=True),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='userprofileinfo',
|
||||||
|
name='intra42_id',
|
||||||
|
field=models.CharField(blank=True, max_length=20, null=True, unique=True),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Generated by Django 3.2.11 on 2022-03-29 11:39
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('accounts', '0008_auto_20220329_1034'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name='userprofileinfo',
|
||||||
|
options={'ordering': ['-score', 'last_submission_date', 'user__username', 'intra42_campus'], 'permissions': (('view_info', 'View user info'),), 'verbose_name': 'profile', 'verbose_name_plural': 'profiles'},
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='userprofileinfo',
|
||||||
|
name='intra42_campus_id',
|
||||||
|
field=models.CharField(blank=True, max_length=10, null=True),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,31 @@
|
||||||
|
# Generated by Django 3.2.11 on 2022-05-17 12:52
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('accounts', '0009_auto_20220329_1339'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Campus',
|
||||||
|
fields=[
|
||||||
|
('id', models.IntegerField(primary_key=True, serialize=False, unique=True)),
|
||||||
|
('name', models.CharField(max_length=50)),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'campus',
|
||||||
|
'verbose_name_plural': 'campuses',
|
||||||
|
'permissions': (('view_info', 'View user info'),),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='userprofileinfo',
|
||||||
|
name='campus',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='accounts.campus'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Generated by Django 3.2.11 on 2022-05-17 12:54
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
from accounts.models import UserProfileInfo
|
||||||
|
from accounts.models import Campus
|
||||||
|
|
||||||
|
def migrate_campus(apps, schema_editor):
|
||||||
|
UserProfileInfo = apps.get_model('accounts', 'UserProfileInfo')
|
||||||
|
Campus = apps.get_model('accounts', 'Campus')
|
||||||
|
for user in UserProfileInfo.objects.all():
|
||||||
|
if user.intra42_campus_id:
|
||||||
|
user.campus, created = Campus.objects.get_or_create(id=user.intra42_campus_id, name=user.intra42_campus)
|
||||||
|
user.save()
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('accounts', '0010_auto_20220517_1452'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RunPython(migrate_campus),
|
||||||
|
]
|
|
@ -0,0 +1,25 @@
|
||||||
|
# Generated by Django 3.2.11 on 2022-08-01 20:12
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('accounts', '0011_migration_campus'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name='userprofileinfo',
|
||||||
|
options={'ordering': ['-score', 'last_submission_date', 'user__username', 'campus'], 'permissions': (('view_info', 'View user info'),), 'verbose_name': 'profile', 'verbose_name_plural': 'profiles'},
|
||||||
|
),
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='userprofileinfo',
|
||||||
|
name='intra42_campus',
|
||||||
|
),
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='userprofileinfo',
|
||||||
|
name='intra42_campus_id',
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,25 @@
|
||||||
|
# Generated by Django 3.2.11 on 2022-08-18 15:41
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('accounts', '0012_auto_20220801_2212'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='campus',
|
||||||
|
name='logo',
|
||||||
|
field=models.URLField(default='https://42.fr'),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='campus',
|
||||||
|
name='url',
|
||||||
|
field=models.URLField(default='https://42.fr', max_length=100),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Generated by Django 3.2.11 on 2022-08-18 15:44
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('accounts', '0013_auto_20220818_1741'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='campus',
|
||||||
|
name='logo',
|
||||||
|
field=models.URLField(blank=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='campus',
|
||||||
|
name='url',
|
||||||
|
field=models.URLField(blank=True, max_length=100),
|
||||||
|
),
|
||||||
|
]
|
|
@ -12,15 +12,29 @@ class UserProfileInfo(models.Model):
|
||||||
last_submission_date = models.DateTimeField('Last Submission Date', default=timezone.now)
|
last_submission_date = models.DateTimeField('Last Submission Date', default=timezone.now)
|
||||||
token = models.CharField(max_length=200, blank=True)
|
token = models.CharField(max_length=200, blank=True)
|
||||||
discord_id = models.CharField(max_length=20, null=True, blank=True, unique=True)
|
discord_id = models.CharField(max_length=20, null=True, blank=True, unique=True)
|
||||||
|
intra42_id = models.CharField(max_length=20, null=True, blank=True, unique=True)
|
||||||
|
campus = models.ForeignKey('Campus', on_delete=models.DO_NOTHING, null=True, blank=True)
|
||||||
member = models.BooleanField(default=False)
|
member = models.BooleanField(default=False)
|
||||||
member_since = models.DateTimeField('Member since', default=timezone.now)
|
member_since = models.DateTimeField('Member since', default=timezone.now)
|
||||||
member_until = models.DateTimeField('Member until', default=timezone.now)
|
member_until = models.DateTimeField('Member until', default=timezone.now)
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.user.username
|
return self.user.username
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['-score', 'last_submission_date', 'user__username']
|
ordering = ['-score', 'last_submission_date', 'user__username', 'campus']
|
||||||
verbose_name = 'profile'
|
verbose_name = 'profile'
|
||||||
verbose_name_plural = 'profiles'
|
verbose_name_plural = 'profiles'
|
||||||
permissions = (("view_info", "View user info"),)
|
permissions = (("view_info", "View user info"),)
|
||||||
|
|
||||||
|
class Campus(models.Model):
|
||||||
|
id = models.IntegerField(primary_key=True, unique=True)
|
||||||
|
name = models.CharField(max_length=50)
|
||||||
|
url = models.URLField(max_length=100,blank=True)
|
||||||
|
logo = models.URLField(max_length=200,blank=True)
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'campus'
|
||||||
|
verbose_name_plural = 'campuses'
|
||||||
|
permissions = (("view_info", "View user info"),)
|
||||||
|
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
|
|
@ -60,6 +60,21 @@
|
||||||
</form>
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="d-flex">
|
||||||
|
{% if user.userprofileinfo.intra42_id|length > 0 %}
|
||||||
|
<form action="{% url 'accounts:connections-disconnect-intra42' %}" method='POST'
|
||||||
|
class="form-inline p-2">
|
||||||
|
{%csrf_token%}
|
||||||
|
<button class="btn btn-dark" type="submit">{% trans "Disconnect 42" %}</button>
|
||||||
|
</form>
|
||||||
|
{% else %}
|
||||||
|
<form action="{% url 'accounts:connections-connect-intra42' %}" method='POST'
|
||||||
|
class="form-inline p-2">
|
||||||
|
{%csrf_token%}
|
||||||
|
<button class="btn btn-dark" type="submit">{% trans "Connect 42" %}</button>
|
||||||
|
</form>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -77,6 +92,13 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li class="list-group-item">{% trans "Registered since" %} {{ user.date_joined|date:"Y-m-d" }}</li>
|
<li class="list-group-item">{% trans "Registered since" %} {{ user.date_joined|date:"Y-m-d" }}</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<ul class="list-group">
|
||||||
|
<form method='GET' action="{% url 'accounts:profile' user %}">
|
||||||
|
<li class="list-group-item">
|
||||||
|
<input class="form-control" type="submit" value="{% trans " View my profile" %}">
|
||||||
|
</li>
|
||||||
|
</form>
|
||||||
|
</ul>
|
||||||
<ul class="list-group">
|
<ul class="list-group">
|
||||||
<form method='GET' action="{% url 'accounts:delete_account' %}">
|
<form method='GET' action="{% url 'accounts:delete_account' %}">
|
||||||
{%csrf_token%}
|
{%csrf_token%}
|
||||||
|
@ -87,4 +109,4 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -53,9 +53,9 @@
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if member %}
|
{% if member %}
|
||||||
<li class="list-group-item is-member">{% trans "Status: Member" %}</li>
|
<li class="list-group-item">Status: <a class="{{ is_member }}" href="{% url 'resources:becomeMember' %}">{% trans "Member" %}</a></li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li class="list-group-item">{% trans "Status: Visitor" %}</li>
|
<li class="list-group-item">Status: {% trans " Visitor" %}</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li class="list-group-item">{% trans "Registered since" %} {{ user.date_joined|date:"d-m-Y" }}</li>
|
<li class="list-group-item">{% trans "Registered since" %} {{ user.date_joined|date:"d-m-Y" }}</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -75,13 +75,26 @@
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<ul class="list-group">
|
||||||
|
<ul class="list-group">
|
||||||
|
<li class="list-group-item">{% trans "Challenges created" %}</li>
|
||||||
|
{% if created %}
|
||||||
|
{% for creat in created %}
|
||||||
|
<li class="list-group-item"><a href="{% url 'ctf' cat_slug=creat.category.slug ctf_slug=creat.slug %}">{{ creat.name }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
<li class="list-group-item">{% trans "It seems that this user has not created any challenge yet..." %}</li>
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="https://code.highcharts.com/highcharts.src.js"></script>
|
<script src="https://code.highcharts.com/highcharts.src.js"></script>
|
||||||
<script>
|
<script>
|
||||||
Highcharts.theme={colors:["#2b908f","#90ee7e","#f45b5b","#7798BF","#aaeeee","#ff0066","#eeaaee","#55BF3B","#DF5353","#7798BF","#aaeeee"],chart:{backgroundColor:{linearGradient:{x1:0,y1:0,x2:1,y2:1},stops:[[0,"#1D1D1D"],[1,"#1D1D1D"]]},style:{fontFamily:"'Unica One', sans-serif"},plotBorderColor:"#606063"},title:{style:{color:"#E0E0E3",textTransform:"uppercase",fontSize:"20px"}},subtitle:{style:{color:"#E0E0E3",textTransform:"uppercase"}},xAxis:{gridLineColor:"#707073",labels:{style:{color:"#E0E0E3"}},lineColor:"#707073",minorGridLineColor:"#505053",tickColor:"#707073",title:{style:{color:"#A0A0A3"}}},yAxis:{gridLineColor:"#707073",labels:{style:{color:"#E0E0E3"}},lineColor:"#707073",minorGridLineColor:"#505053",tickColor:"#707073",tickWidth:1,title:{style:{color:"#A0A0A3"}}},tooltip:{backgroundColor:"rgba(0, 0, 0, 0.85)",style:{color:"#F0F0F0"}},plotOptions:{series:{dataLabels:{color:"#F0F0F3",style:{fontSize:"13px"}},marker:{lineColor:"#333"}},boxplot:{fillColor:"#505053"},candlestick:{lineColor:"white"},errorbar:{color:"white"}},legend:{backgroundColor:"#1D1D1D",itemStyle:{color:"#E0E0E3"},itemHoverStyle:{color:"#FFF"},itemHiddenStyle:{color:"#606063"},title:{style:{color:"#C0C0C0"}}},credits:{style:{color:"#666"}},labels:{style:{color:"#707073"}},drilldown:{activeAxisLabelStyle:{color:"#F0F0F3"},activeDataLabelStyle:{color:"#F0F0F3"}},navigation:{buttonOptions:{symbolStroke:"#DDDDDD",theme:{fill:"#505053"}}},rangeSelector:{buttonTheme:{fill:"#505053",stroke:"#000000",style:{color:"#CCC"},states:{hover:{fill:"#707073",stroke:"#000000",style:{color:"white"}},select:{fill:"#000003",stroke:"#000000",style:{color:"white"}}}},inputBoxBorderColor:"#505053",inputStyle:{backgroundColor:"#333",color:"silver"},labelStyle:{color:"silver"}},navigator:{handles:{backgroundColor:"#666",borderColor:"#AAA"},outlineColor:"#CCC",maskFill:"rgba(255,255,255,0.1)",series:{color:"#7798BF",lineColor:"#A6C7ED"},xAxis:{gridLineColor:"#505053"}},scrollbar:{barBackgroundColor:"#808083",barBorderColor:"#808083",buttonArrowColor:"#CCC",buttonBackgroundColor:"#606063",buttonBorderColor:"#606063",rifleColor:"#FFF",trackBackgroundColor:"#404043",trackBorderColor:"#404043"}};
|
Highcharts.theme={colors:["#2b908f","#90ee7e","#f45b5b","#7798BF","#aaeeee","#ff0066","#eeaaee","#55BF3B","#DF5353","#7798BF","#aaeeee"],chart:{backgroundColor:{linearGradient:{x1:0,y1:0,x2:1,y2:1},stops:[[0,"#1D1D1D"],[1,"#1D1D1D"]]},style:{fontFamily:"'Unica One', sans-serif"},plotBorderColor:"#606063"},title:{style:{color:"#E0E0E3",textTransform:"uppercase",fontSize:"20px"}},subtitle:{style:{color:"#E0E0E3",textTransform:"uppercase"}},xAxis:{gridLineColor:"#707073",labels:{style:{color:"#E0E0E3"}},lineColor:"#707073",minorGridLineColor:"#505053",tickColor:"#707073",title:{style:{color:"#A0A0A3"}}},yAxis:{gridLineColor:"#707073",labels:{style:{color:"#E0E0E3"}},lineColor:"#707073",minorGridLineColor:"#505053",tickColor:"#707073",tickWidth:1,title:{style:{color:"#A0A0A3"}}},tooltip:{backgroundColor:"rgba(0, 0, 0, 0.85)",style:{color:"#F0F0F0"}},plotOptions:{series:{dataLabels:{color:"#F0F0F3",style:{fontSize:"13px"}},marker:{lineColor:"#333"}},boxplot:{fillColor:"#505053"},candlestick:{lineColor:"white"},errorbar:{color:"white"}},legend:{backgroundColor:"#1D1D1D",itemStyle:{color:"#E0E0E3"},itemHoverStyle:{color:"#FFF"},itemHiddenStyle:{color:"#606063"},title:{style:{color:"#C0C0C0"}}},credits:{style:{color:"#666"}},labels:{style:{color:"#707073"}},drilldown:{activeAxisLabelStyle:{color:"#F0F0F3"},activeDataLabelStyle:{color:"#F0F0F3"}},navigation:{buttonOptions:{symbolStroke:"#DDDDDD",theme:{fill:"#505053"}}},rangeSelector:{buttonTheme:{fill:"#505053",stroke:"#000000",style:{color:"#CCC"},states:{hover:{fill:"#707073",stroke:"#000000",style:{color:"white"}},select:{fill:"#000003",stroke:"#000000",style:{color:"white"}}}},inputBoxBorderColor:"#505053",inputStyle:{backgroundColor:"#333",color:"silver"},labelStyle:{color:"silver"}},navigator:{handles:{backgroundColor:"#666",borderColor:"#AAA"},outlineColor:"#CCC",maskFill:"rgba(255,255,255,0.1)",series:{color:"#7798BF",lineColor:"#A6C7ED"},xAxis:{gridLineColor:"#505053"}},scrollbar:{barBackgroundColor:"#808083",barBorderColor:"#808083",buttonArrowColor:"#CCC",buttonBackgroundColor:"#606063",buttonBorderColor:"#606063",rifleColor:"#FFF",trackBackgroundColor:"#404043",trackBorderColor:"#404043"}};
|
||||||
|
|
||||||
Highcharts.setOptions(Highcharts.theme);
|
Highcharts.setOptions(Highcharts.theme);
|
||||||
|
|
||||||
Highcharts.chart('time-chart', {
|
Highcharts.chart('time-chart', {
|
||||||
|
@ -122,7 +135,7 @@
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
name: 'Total',
|
name: 'Total',
|
||||||
data: {{ solved|safe }}
|
data: {{ solved|safe }}
|
||||||
},
|
},
|
||||||
{% for cat in cats %}
|
{% for cat in cats %}
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,42 +2,40 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 col-md-9">
|
<div class="col-sm-12 col-md-9">
|
||||||
<div class="ctf-block">
|
<div class="ctf-block">
|
||||||
<div class="ctf-head">
|
<div class="ctf-head">
|
||||||
<h3>Register</h3>
|
<h3>Register</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="ctf-body sign-body">
|
<div class="ctf-body sign-body">
|
||||||
<div class="col-sm-8 col-md-6 mx-auto">
|
<div class="col-sm-8 col-md-6 mx-auto">
|
||||||
{% if registered %}
|
{% if registered %}
|
||||||
<h1>{% trans "Welcome !" %}</h1>
|
<h1>{% trans "Welcome !" %}</h1>
|
||||||
<span class="message success-msg">{% trans "Your account has been created." %}</span>
|
<span class="message success-msg">{% trans "Your account has been created." %}</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if registered_failed %}
|
{% if registered_failed %}
|
||||||
<span class="message error-msg">{{ registered_failed }}</span>
|
<span class="message error-msg">{{ registered_failed }}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<form enctype="multipart/form-data" method="POST">
|
<form enctype="multipart/form-data" method="POST">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input class="form-control" type="text" name="username" placeholder="{% trans "Username" %} *" maxlength="150" required="" id="id_username"></br>
|
<input class="form-control" type="text" name="username" placeholder="{% trans "Username" %} *" maxlength="150" required="" id="id_username" value="{{ old_username }}"></br>
|
||||||
<input class="form-control" type="password" name="password" placeholder="{% trans "Password" %} *" required="" id="id_password"></br>
|
<input class="form-control" type="password" name="password" placeholder="{% trans "Password" %} *" required="" id="id_password"></br>
|
||||||
<input class="form-control" type="email" name="email" placeholder="pleasedontgivemy@private.infos*" required="" maxlength="254" id="id_email"></br>
|
<input class="form-control" type="email" name="email" placeholder="pleasedontgivemy@private.infos*" required="" maxlength="254" id="id_email" value="{{ old_email }}"></br>
|
||||||
<input class="form-control" type="url" name="portfolio_site" placeholder="{% trans "Personal website" %}"maxlength="200" id="id_portfolio_site"></br>
|
<input class="form-control" type="url" name="portfolio_site" placeholder="{% trans "Personal website" %}"maxlength="200" id="id_portfolio_site" value="{{ old_website }}"></br>
|
||||||
<input type="submit" name="" class="form-control" value="{% trans "Register" %}">
|
<input type="submit" name="" class="form-control" value="{% trans "Register" %}">
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
<div class="col-sm-12 col-md-3 right-sidebar">
|
||||||
<div class="col-sm-12 col-md-3 right-sidebar">
|
<ul class="list-group">
|
||||||
<ul class="list-group">
|
<a href="/accounts/signup" class="list-group-item">{% trans "Sign up" %}</a>
|
||||||
<a href="/accounts/signup" class="list-group-item">{% trans "Sign up" %}</a>
|
<a href="/accounts/signin" class="list-group-item">{% trans "Login" %}</a>
|
||||||
<a href="/accounts/signin" class="list-group-item">{% trans "Login" %}</a>
|
</ul>
|
||||||
</ul>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
|
@ -10,8 +10,11 @@ urlpatterns = [
|
||||||
path('edit/', views.edit, name='edit'),
|
path('edit/', views.edit, name='edit'),
|
||||||
path('logout/', views.out, name='out'),
|
path('logout/', views.out, name='out'),
|
||||||
path('rank/<str:token>', views.rank, name='rank'),
|
path('rank/<str:token>', views.rank, name='rank'),
|
||||||
path('connections/connect/discord', views.connection.connect, name='connections-connect-discord'),
|
path('connections/connect/discord', views.connection.connect_discord, name='connections-connect-discord'),
|
||||||
path('connections/connect/discord/authorize', views.connection.authorize, name='connections-connect-discord-authorize'),
|
path('connections/connect/discord/authorize', views.connection.authorize_discord, name='connections-connect-discord-authorize'),
|
||||||
path('connections/disconnect/discord', views.connection.disconnect, name='connections-disconnect-discord'),
|
path('connections/disconnect/discord', views.connection.disconnect_discord, name='connections-disconnect-discord'),
|
||||||
|
path('connections/connect/intra42', views.connection.connect_intra42, name='connections-connect-intra42'),
|
||||||
|
path('connections/connect/intra42/authorize', views.connection.authorize_intra42, name='connections-connect-intra42-authorize'),
|
||||||
|
path('connections/disconnect/intra42', views.connection.disconnect_intra42, name='connections-disconnect-intra42'),
|
||||||
path('delete_account/', views.delete_account, name='delete_account'),
|
path('delete_account/', views.delete_account, name='delete_account'),
|
||||||
]
|
]
|
||||||
|
|
|
@ -5,6 +5,8 @@ from django.views.defaults import bad_request
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
from django.contrib.sites.models import Site
|
from django.contrib.sites.models import Site
|
||||||
|
from accounts.models import Campus
|
||||||
|
from django.db import IntegrityError
|
||||||
import os
|
import os
|
||||||
|
|
||||||
oauth = OAuth()
|
oauth = OAuth()
|
||||||
|
@ -19,19 +21,71 @@ oauth.register(
|
||||||
api_base_url='https://discord.com/api/'
|
api_base_url='https://discord.com/api/'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
oauth.register(
|
||||||
|
name='intra42',
|
||||||
|
client_id=os.getenv('OAUTH2_INTRA42_CLIENT_ID'),
|
||||||
|
client_secret=os.getenv('OAUTH2_INTRA42_CLIENT_SECRET'),
|
||||||
|
access_token_url='https://api.intra.42.fr/oauth/token',
|
||||||
|
authorize_url='https://api.intra.42.fr/oauth/authorize',
|
||||||
|
api_base_url='https://api.intra.42.fr/'
|
||||||
|
)
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@require_POST
|
@require_POST
|
||||||
def connect(request):
|
def connect_intra42(request):
|
||||||
|
if request.user.userprofileinfo.intra42_id:
|
||||||
|
return bad_request(request, "Already connected")
|
||||||
|
site = Site.objects.get_current()
|
||||||
|
redirect_uri = reverse('accounts:connections-connect-intra42-authorize')
|
||||||
|
redirect_uri = "https://" + site.domain + redirect_uri[3:] # remove language code
|
||||||
|
return oauth.intra42.authorize_redirect(request, redirect_uri)
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
def authorize_intra42(request):
|
||||||
|
if request.user.userprofileinfo.intra42_id:
|
||||||
|
return bad_request(request, "Already connected")
|
||||||
|
try:
|
||||||
|
token = oauth.intra42.authorize_access_token(request)
|
||||||
|
except:
|
||||||
|
return redirect('accounts:edit')
|
||||||
|
response = oauth.intra42.get('v2/me', token=token)
|
||||||
|
response = response.json()
|
||||||
|
intra42_id = response['id']
|
||||||
|
intra42_campus = response['campus'][0]['name']
|
||||||
|
intra42_campus_id = response['campus'][0]['id']
|
||||||
|
request.user.userprofileinfo.intra42_id = intra42_id
|
||||||
|
request.user.userprofileinfo.campus, created = Campus.objects.get_or_create(id=intra42_campus_id, name=intra42_campus)
|
||||||
|
try:
|
||||||
|
request.user.userprofileinfo.save()
|
||||||
|
return redirect('accounts:edit')
|
||||||
|
except IntegrityError:
|
||||||
|
return redirect('accounts:edit')
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
@require_POST
|
||||||
|
def disconnect_intra42(request):
|
||||||
|
if not request.user.userprofileinfo.intra42_id:
|
||||||
|
return bad_request(request, "Already disconnected")
|
||||||
|
request.user.userprofileinfo.intra42_id = None
|
||||||
|
request.user.userprofileinfo.intra42_campus = None
|
||||||
|
request.user.userprofileinfo.intra42_campus_id = None
|
||||||
|
request.user.userprofileinfo.campus = None
|
||||||
|
request.user.userprofileinfo.save()
|
||||||
|
return redirect('accounts:edit')
|
||||||
|
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
@require_POST
|
||||||
|
def connect_discord(request):
|
||||||
if request.user.userprofileinfo.discord_id:
|
if request.user.userprofileinfo.discord_id:
|
||||||
return bad_request(request, "Already connected")
|
return bad_request(request, "Already connected")
|
||||||
site = Site.objects.get_current()
|
site = Site.objects.get_current()
|
||||||
redirect_uri = reverse('accounts:connections-connect-discord-authorize')
|
redirect_uri = reverse('accounts:connections-connect-discord-authorize')
|
||||||
redirect_uri = "https://" + site.domain + redirect_uri[3:] # remove language code
|
redirect_uri = "https://" + site.domain + redirect_uri[3:] # remove language code
|
||||||
print(redirect_uri)
|
|
||||||
return oauth.discord.authorize_redirect(request, redirect_uri)
|
return oauth.discord.authorize_redirect(request, redirect_uri)
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def authorize(request):
|
def authorize_discord(request):
|
||||||
if request.user.userprofileinfo.discord_id:
|
if request.user.userprofileinfo.discord_id:
|
||||||
return bad_request(request, "Already connected")
|
return bad_request(request, "Already connected")
|
||||||
try:
|
try:
|
||||||
|
@ -47,7 +101,7 @@ def authorize(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@require_POST
|
@require_POST
|
||||||
def disconnect(request):
|
def disconnect_discord(request):
|
||||||
if not request.user.userprofileinfo.discord_id:
|
if not request.user.userprofileinfo.discord_id:
|
||||||
return bad_request(request, "Already disconnected")
|
return bad_request(request, "Already disconnected")
|
||||||
request.user.userprofileinfo.discord_id = None
|
request.user.userprofileinfo.discord_id = None
|
||||||
|
|
|
@ -43,32 +43,69 @@ def signup(request):
|
||||||
user_form = UserForm()
|
user_form = UserForm()
|
||||||
profile_form = UserProfileInfoForm()
|
profile_form = UserProfileInfoForm()
|
||||||
registered = False
|
registered = False
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
pass1 = request.POST.get('password')
|
username = request.POST.get('username')
|
||||||
if len(pass1) < 8:
|
passwd = request.POST.get('password')
|
||||||
return render(request,'accounts/register.html', {'user_form':user_form, 'profile_form':profile_form, 'registered_failed':"The new password must be at least %d characters long." % 8})
|
email = request.POST.get('email')
|
||||||
first_isalpha = pass1[0].isalpha()
|
website = request.POST.get('portfolio_site')
|
||||||
if not any(c.isdigit() for c in pass1) or not any(c.isalpha() for c in pass1):
|
|
||||||
return render(request,'accounts/register.html', {'user_form':user_form, 'profile_form':profile_form, 'registered_failed':_("The password must contain at least one letter and at least one digit or punctuation character.")})
|
if len(passwd) < 8:
|
||||||
|
return render(request, 'accounts/register.html', {
|
||||||
|
'user_form': user_form,
|
||||||
|
'profile_form': profile_form,
|
||||||
|
'registered_failed': _("The password must be at least 8 characters long."),
|
||||||
|
'old_username': username,
|
||||||
|
'old_email': email,
|
||||||
|
'old_website': website
|
||||||
|
})
|
||||||
|
|
||||||
|
if not any(c.isdigit() for c in passwd) or not any(c.isalpha() for c in passwd):
|
||||||
|
return render(request, 'accounts/register.html', {
|
||||||
|
'user_form': user_form,
|
||||||
|
'profile_form': profile_form,
|
||||||
|
'registered_failed': _("The password must contain at least one letter and at least one digit or punctuation character."),
|
||||||
|
'old_username': username,
|
||||||
|
'old_email': email,
|
||||||
|
'old_website': website
|
||||||
|
})
|
||||||
|
|
||||||
if User.objects.filter(email=request.POST.get('email')).exists():
|
if User.objects.filter(email=request.POST.get('email')).exists():
|
||||||
return render(request,'accounts/register.html', {'user_form':user_form, 'profile_form':profile_form, 'registered_failed':_("A user with that email already exists.")})
|
return render(request, 'accounts/register.html', {
|
||||||
|
'user_form': user_form,
|
||||||
|
'profile_form': profile_form,
|
||||||
|
'registered_failed': _("A user with that email already exists."),
|
||||||
|
'old_username': username,
|
||||||
|
'old_website': website
|
||||||
|
})
|
||||||
|
|
||||||
user_form = UserForm(data=request.POST)
|
user_form = UserForm(data=request.POST)
|
||||||
profile_form = UserProfileInfoForm(data=request.POST)
|
profile_form = UserProfileInfoForm(data=request.POST)
|
||||||
if user_form.is_valid() and profile_form.is_valid():
|
if user_form.is_valid() and profile_form.is_valid():
|
||||||
user = user_form.save()
|
user = user_form.save()
|
||||||
user.set_password(user.password)
|
user.set_password(user.password)
|
||||||
user.save()
|
user.save()
|
||||||
|
|
||||||
profile = profile_form.save(commit=False)
|
profile = profile_form.save(commit=False)
|
||||||
profile.user = user
|
profile.user = user
|
||||||
profile.token = token_hex(16)
|
profile.token = token_hex(16)
|
||||||
profile.save()
|
profile.save()
|
||||||
|
|
||||||
registered = True
|
registered = True
|
||||||
else:
|
else:
|
||||||
return render(request,'accounts/register.html', {'user_form':user_form, 'profile_form':profile_form, 'registered_failed':_("A user with that username already exists.")})
|
return render(request, 'accounts/register.html', {
|
||||||
return render(request,'accounts/register.html',
|
'user_form': user_form,
|
||||||
{'user_form':user_form,
|
'profile_form': profile_form,
|
||||||
'profile_form':profile_form,
|
'registered_failed': _("A user with that username already exists."),
|
||||||
'registered':registered})
|
'old_email': email,
|
||||||
|
'old_website': website
|
||||||
|
})
|
||||||
|
|
||||||
|
return render(request, 'accounts/register.html', {
|
||||||
|
'user_form': user_form,
|
||||||
|
'profile_form': profile_form,
|
||||||
|
'registered': registered
|
||||||
|
})
|
||||||
else:
|
else:
|
||||||
return HttpResponseRedirect(reverse('home'))
|
return HttpResponseRedirect(reverse('home'))
|
||||||
|
|
||||||
|
@ -135,7 +172,7 @@ def profile(request, user_name):
|
||||||
# get datas
|
# get datas
|
||||||
somme = 0
|
somme = 0
|
||||||
solved_count = len(solved)
|
solved_count = len(solved)
|
||||||
|
|
||||||
pointDatas[cat.name] = []
|
pointDatas[cat.name] = []
|
||||||
pointDatas[cat.name].append([user_obj.date_joined.timestamp() * 1000, 0])
|
pointDatas[cat.name].append([user_obj.date_joined.timestamp() * 1000, 0])
|
||||||
percent = (solved_count / max_count) * 100
|
percent = (solved_count / max_count) * 100
|
||||||
|
@ -151,9 +188,9 @@ def profile(request, user_name):
|
||||||
for s in solves.reverse():
|
for s in solves.reverse():
|
||||||
somme += s.ctf.points
|
somme += s.ctf.points
|
||||||
solved.append([s.flag_date.timestamp() * 1000,somme])
|
solved.append([s.flag_date.timestamp() * 1000,somme])
|
||||||
|
created = CTF.objects.filter(author=user_obj, event=None)
|
||||||
return render(request,'accounts/profile.html', {'user':user_obj, 'solves':solves,'solved':solved,'catsDatas': catsDatas, 'pointDatas': pointDatas,
|
return render(request,'accounts/profile.html', {'user':user_obj, 'solves':solves,'solved':solved,'catsDatas': catsDatas, 'pointDatas': pointDatas,
|
||||||
'rank': rank, 'score' : somme, 'member' : member, 'cats':cats})
|
'rank': rank, 'score' : somme, 'member' : member, 'cats':cats, 'created':created})
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def delete_account(request):
|
def delete_account(request):
|
||||||
|
|
|
@ -2,5 +2,8 @@ from django.urls import path
|
||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('bot/discord', views.discord_bot, name='discord_bot'),
|
path('bot/discord', views.bot_discord_rank, name='bot_discord_rank'), # legacy, to remove when new bot is deployed
|
||||||
|
path('bot/discord/rank', views.bot_discord_rank, name='bot_discord_rank'), # use this
|
||||||
|
path('bot/discord/campus', views.bot_discord_campus, name='bot_discord_campus'),
|
||||||
|
path('events/<str:event_slug>', views.events_data, name='events_data'),
|
||||||
]
|
]
|
||||||
|
|
|
@ -2,20 +2,21 @@ from django.shortcuts import render
|
||||||
from accounts.models import UserProfileInfo
|
from accounts.models import UserProfileInfo
|
||||||
from django.http import JsonResponse
|
from django.http import JsonResponse
|
||||||
import os
|
import os
|
||||||
|
from events.models import Event, Team, EventPlayer
|
||||||
|
from django.shortcuts import get_object_or_404
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
|
def bot_discord_rank(request):
|
||||||
def discord_bot(request):
|
|
||||||
if request.method != 'GET':
|
if request.method != 'GET':
|
||||||
return JsonResponse({'error':'bad request'})
|
return JsonResponse({'error':'bad request'})
|
||||||
|
|
||||||
token = request.GET.get('token')
|
token = request.GET.get('token')
|
||||||
auth_token = os.getenv('BOT_TOKEN')
|
auth_token = os.getenv('BOT_TOKEN')
|
||||||
|
|
||||||
if (token != auth_token or not auth_token):
|
if (token != auth_token or not auth_token):
|
||||||
return JsonResponse({'error':'not authorized'})
|
return JsonResponse({'error':'not authorized'})
|
||||||
|
|
||||||
all_users = UserProfileInfo.objects.select_related().order_by('-score', 'last_submission_date', 'user__username')
|
all_users = UserProfileInfo.objects.select_related().order_by('-score', 'last_submission_date', 'user__username')
|
||||||
data = {}
|
data = {}
|
||||||
rank = 1
|
rank = 1
|
||||||
|
@ -24,4 +25,48 @@ def discord_bot(request):
|
||||||
data[user.discord_id] = rank
|
data[user.discord_id] = rank
|
||||||
rank += 1
|
rank += 1
|
||||||
|
|
||||||
return JsonResponse(data)
|
return JsonResponse(data)
|
||||||
|
|
||||||
|
def bot_discord_campus(request):
|
||||||
|
if request.method != 'GET':
|
||||||
|
return JsonResponse({'error':'bad request'})
|
||||||
|
|
||||||
|
token = request.GET.get('token')
|
||||||
|
auth_token = os.getenv('BOT_TOKEN')
|
||||||
|
|
||||||
|
if (token != auth_token or not auth_token):
|
||||||
|
return JsonResponse({'error':'not authorized'})
|
||||||
|
|
||||||
|
all_users = UserProfileInfo.objects.select_related().order_by('-score', 'last_submission_date', 'user__username')
|
||||||
|
data = {}
|
||||||
|
for user in all_users:
|
||||||
|
if user.campus and user.discord_id:
|
||||||
|
data[user.discord_id] = user.campus.name
|
||||||
|
|
||||||
|
return JsonResponse(data)
|
||||||
|
|
||||||
|
def events_data(request, event_slug):
|
||||||
|
if request.method != 'GET':
|
||||||
|
return JsonResponse({'error':'bad request'})
|
||||||
|
|
||||||
|
event_info = get_object_or_404(Event, slug=event_slug)
|
||||||
|
|
||||||
|
if event_info.password and request.GET.get('password') != event_info.password:
|
||||||
|
return JsonResponse({'error':'not authorized'})
|
||||||
|
|
||||||
|
players = EventPlayer.objects.filter(event=event_info)
|
||||||
|
|
||||||
|
data = {}
|
||||||
|
if event_info.team_size > 1:
|
||||||
|
for player in players:
|
||||||
|
if not player.team:
|
||||||
|
continue
|
||||||
|
if not player.team.name in data:
|
||||||
|
data[player.team.name] = []
|
||||||
|
data[player.team.name].append({"name": player.user.username, "score": player.score})
|
||||||
|
else:
|
||||||
|
for player in players:
|
||||||
|
data[player.user.username] = player.score
|
||||||
|
|
||||||
|
return JsonResponse(data)
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,6 @@ from django.contrib import admin
|
||||||
from .models import Category, CTF, CTF_flags
|
from .models import Category, CTF, CTF_flags
|
||||||
|
|
||||||
admin.site.register(Category)
|
admin.site.register(Category)
|
||||||
#admin.site.register(CTF)
|
|
||||||
#admin.site.register(CTF_flags)
|
|
||||||
|
|
||||||
@admin.register(CTF_flags)
|
@admin.register(CTF_flags)
|
||||||
class ctf_flags(admin.ModelAdmin):
|
class ctf_flags(admin.ModelAdmin):
|
||||||
|
@ -14,12 +12,61 @@ class ctf_flags(admin.ModelAdmin):
|
||||||
# search list
|
# search list
|
||||||
search_fields = ['ctf__category__name', 'ctf__name', 'user__username']
|
search_fields = ['ctf__category__name', 'ctf__name', 'user__username']
|
||||||
|
|
||||||
|
def get_queryset(self, request):
|
||||||
|
qs = super().get_queryset(request)
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return qs
|
||||||
|
groups = list(request.user.groups.values_list('name', flat=True))
|
||||||
|
return qs.filter(event__name__in=groups)
|
||||||
|
|
||||||
|
def has_view_permission(self, request, obj=None):
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return True
|
||||||
|
if obj is not None:
|
||||||
|
return request.user.groups.filter(name=obj.event.name).exists()
|
||||||
|
return super().has_view_permission(request, obj)
|
||||||
|
|
||||||
|
def has_change_permission(self, request, obj=None):
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return True
|
||||||
|
if obj is not None:
|
||||||
|
return request.user.groups.filter(name=obj.event.name).exists()
|
||||||
|
return super().has_change_permission(request, obj)
|
||||||
|
|
||||||
|
def has_delete_permission(self, request, obj=None):
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return True
|
||||||
|
if obj is not None:
|
||||||
|
return request.user.groups.filter(name=obj.event.name).exists()
|
||||||
|
return super().has_delete_permission(request, obj)
|
||||||
|
|
||||||
@admin.register(CTF)
|
@admin.register(CTF)
|
||||||
class ctf(admin.ModelAdmin):
|
class ctf(admin.ModelAdmin):
|
||||||
#list display
|
#list display
|
||||||
list_display = ['name', 'event', 'category']
|
list_display = ['name', 'event', 'category', 'points']
|
||||||
#list Filter
|
#list Filter
|
||||||
list_filter = ('category', 'event')
|
list_filter = ('category', 'event')
|
||||||
# search list
|
# search list
|
||||||
search_fields = ['category__name', 'name', 'author__username']
|
search_fields = ['category__name', 'name', 'author__username']
|
||||||
# Register your models here.
|
|
||||||
|
def get_queryset(self, request):
|
||||||
|
qs = super().get_queryset(request)
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return qs
|
||||||
|
groups = list(request.user.groups.values_list('name', flat=True))
|
||||||
|
return qs.filter(event__name__in=groups)
|
||||||
|
|
||||||
|
def has_view_permission(self, request, obj=None):
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return True
|
||||||
|
if obj is not None:
|
||||||
|
return request.user.groups.filter(name=obj.event.name).exists()
|
||||||
|
return super().has_view_permission(request, obj)
|
||||||
|
|
||||||
|
def has_change_permission(self, request, obj=None):
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return True
|
||||||
|
if obj is not None:
|
||||||
|
return request.user.groups.filter(name=obj.event.name).exists()
|
||||||
|
return super().has_change_permission(request, obj)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 3.2.11 on 2023-09-17 17:57
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('ctfs', '0008_auto_20220215_1713'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='ctf_flags',
|
||||||
|
name='bonus',
|
||||||
|
field=models.PositiveSmallIntegerField(default=0),
|
||||||
|
),
|
||||||
|
]
|
|
@ -45,6 +45,7 @@ class CTF_flags(models.Model):
|
||||||
user = models.ForeignKey(User, unique=False, on_delete=models.CASCADE)
|
user = models.ForeignKey(User, unique=False, on_delete=models.CASCADE)
|
||||||
ctf = models.ForeignKey(CTF, unique=False, on_delete=models.CASCADE)
|
ctf = models.ForeignKey(CTF, unique=False, on_delete=models.CASCADE)
|
||||||
flag_date = models.DateTimeField('Flag date')
|
flag_date = models.DateTimeField('Flag date')
|
||||||
|
bonus = models.PositiveSmallIntegerField(default=0)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['-flag_date']
|
ordering = ['-flag_date']
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
from django.contrib import sitemaps
|
||||||
|
from django.urls import reverse
|
||||||
|
from .models import Category, CTF
|
||||||
|
from .views import category, ctf
|
||||||
|
|
||||||
|
class CategorySitemap(sitemaps.Sitemap):
|
||||||
|
changefreq = "weekly"
|
||||||
|
priority = 0.7
|
||||||
|
i18n = True
|
||||||
|
|
||||||
|
def items(self):
|
||||||
|
return Category.objects.all()
|
||||||
|
|
||||||
|
def location(self, obj):
|
||||||
|
return reverse(category, kwargs={'cat_slug': obj.slug})
|
||||||
|
|
||||||
|
class CTFSitemap(sitemaps.Sitemap):
|
||||||
|
changefreq = "weekly"
|
||||||
|
priority = 0.7
|
||||||
|
i18n = True
|
||||||
|
|
||||||
|
def items(self):
|
||||||
|
return CTF.objects.all()
|
||||||
|
|
||||||
|
def location(self, obj):
|
||||||
|
return reverse(ctf, kwargs={'cat_slug': obj.category.slug, 'ctf_slug': obj.slug})
|
|
@ -1 +1 @@
|
||||||
Subproject commit 18fac3978d21dc824bcffa2bc960aa2bf6b4abd9
|
Subproject commit 5c7b5995fe12c0ed1bb10f97e56ec89377c98b54
|
|
@ -8,7 +8,7 @@
|
||||||
<div class="col-sm-12 col-md-9">
|
<div class="col-sm-12 col-md-9">
|
||||||
<div class="ctf-block">
|
<div class="ctf-block">
|
||||||
<div class="ctf-head">
|
<div class="ctf-head">
|
||||||
<h3>{{ ctf.name }}</h3>
|
<h1>{{ ctf.name }}</h1>
|
||||||
<small>{% trans "Published date" %} : {{ ctf.pub_date }}</small>
|
<small>{% trans "Published date" %} : {{ ctf.pub_date }}</small>
|
||||||
</div>
|
</div>
|
||||||
{% if date < ctf.pub_date %}
|
{% if date < ctf.pub_date %}
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
<div class="col-12 ctf-head">
|
||||||
|
<h1>{{ cat.name }}</h1>
|
||||||
|
</div>
|
||||||
<div class="col-sm-12 col-md-9 news-card">
|
<div class="col-sm-12 col-md-9 news-card">
|
||||||
<h3>{{ cat.name }}</h3>
|
|
||||||
{% if ctfs %}
|
{% if ctfs %}
|
||||||
<table class="table table-striped table-dark">
|
<table class="table table-striped table-dark">
|
||||||
<thead>
|
<thead>
|
||||||
|
|
|
@ -4,9 +4,7 @@ register = template.Library()
|
||||||
|
|
||||||
@register.simple_tag
|
@register.simple_tag
|
||||||
def get_chall_by_lang(chall, lang):
|
def get_chall_by_lang(chall, lang):
|
||||||
print(chall.slug)
|
|
||||||
filepath = "ctfs/templates/challenges/"+ lang + "/" + chall.slug + ".html"
|
filepath = "ctfs/templates/challenges/"+ lang + "/" + chall.slug + ".html"
|
||||||
print(filepath)
|
|
||||||
try:
|
try:
|
||||||
with open(filepath) as fp:
|
with open(filepath) as fp:
|
||||||
return fp.read()
|
return fp.read()
|
||||||
|
|
|
@ -1,7 +1,15 @@
|
||||||
|
from django.contrib.sitemaps.views import sitemap
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
from .sitemaps import CategorySitemap, CTFSitemap
|
||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
|
sitemaps = {
|
||||||
|
'categories': CategorySitemap(),
|
||||||
|
'challenges': CTFSitemap(),
|
||||||
|
}
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('<str:cat_slug>/', views.category, name='category'),
|
path('<str:cat_slug>/', views.category, name='category'),
|
||||||
path('<str:cat_slug>/<str:ctf_slug>', views.ctf, name='ctf')
|
path('<str:cat_slug>/<str:ctf_slug>', views.ctf, name='ctf'),
|
||||||
|
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from .models import Event, EventPlayer, Team
|
from .models import Event, EventPlayer, Team, Bonus
|
||||||
|
|
||||||
@admin.register(Event)
|
@admin.register(Event)
|
||||||
class event(admin.ModelAdmin):
|
class event(admin.ModelAdmin):
|
||||||
|
@ -8,6 +8,27 @@ class event(admin.ModelAdmin):
|
||||||
# search list
|
# search list
|
||||||
search_fields = ['name', 'slug', 'description', 'password']
|
search_fields = ['name', 'slug', 'description', 'password']
|
||||||
|
|
||||||
|
def get_queryset(self, request):
|
||||||
|
qs = super().get_queryset(request)
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return qs
|
||||||
|
groups = list(request.user.groups.values_list('name', flat=True))
|
||||||
|
return qs.filter(name__in=groups)
|
||||||
|
|
||||||
|
def has_view_permission(self, request, obj=None):
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return True
|
||||||
|
if obj is not None:
|
||||||
|
return request.user.groups.filter(name=obj.name).exists()
|
||||||
|
return super().has_view_permission(request, obj)
|
||||||
|
|
||||||
|
def has_change_permission(self, request, obj=None):
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return True
|
||||||
|
if obj is not None:
|
||||||
|
return request.user.groups.filter(name=obj.name).exists()
|
||||||
|
return super().has_change_permission(request, obj)
|
||||||
|
|
||||||
@admin.register(EventPlayer)
|
@admin.register(EventPlayer)
|
||||||
class score(admin.ModelAdmin):
|
class score(admin.ModelAdmin):
|
||||||
#list display
|
#list display
|
||||||
|
@ -17,7 +38,33 @@ class score(admin.ModelAdmin):
|
||||||
# search list
|
# search list
|
||||||
search_fields = ['user__username', 'score', 'event__name']
|
search_fields = ['user__username', 'score', 'event__name']
|
||||||
|
|
||||||
# Register your models here.
|
def get_queryset(self, request):
|
||||||
|
qs = super().get_queryset(request)
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return qs
|
||||||
|
groups = list(request.user.groups.values_list('name', flat=True))
|
||||||
|
return qs.filter(event__name__in=groups)
|
||||||
|
|
||||||
|
def has_view_permission(self, request, obj=None):
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return True
|
||||||
|
if obj is not None:
|
||||||
|
return request.user.groups.filter(name=obj.event.name).exists()
|
||||||
|
return super().has_view_permission(request, obj)
|
||||||
|
|
||||||
|
def has_change_permission(self, request, obj=None):
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return True
|
||||||
|
if obj is not None:
|
||||||
|
return request.user.groups.filter(name=obj.event.name).exists()
|
||||||
|
return super().has_change_permission(request, obj)
|
||||||
|
|
||||||
|
def has_delete_permission(self, request, obj=None):
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return True
|
||||||
|
if obj is not None:
|
||||||
|
return request.user.groups.filter(name=obj.event.name).exists()
|
||||||
|
return super().has_delete_permission(request, obj)
|
||||||
|
|
||||||
@admin.register(Team)
|
@admin.register(Team)
|
||||||
class team(admin.ModelAdmin):
|
class team(admin.ModelAdmin):
|
||||||
|
@ -27,3 +74,36 @@ class team(admin.ModelAdmin):
|
||||||
list_filter = ('event',)
|
list_filter = ('event',)
|
||||||
# search list
|
# search list
|
||||||
search_fields = ['name']
|
search_fields = ['name']
|
||||||
|
|
||||||
|
def get_queryset(self, request):
|
||||||
|
qs = super().get_queryset(request)
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return qs
|
||||||
|
groups = list(request.user.groups.values_list('name', flat=True))
|
||||||
|
return qs.filter(event__name__in=groups)
|
||||||
|
|
||||||
|
def has_view_permission(self, request, obj=None):
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return True
|
||||||
|
if obj is not None:
|
||||||
|
return request.user.groups.filter(name=obj.event.name).exists()
|
||||||
|
return super().has_view_permission(request, obj)
|
||||||
|
|
||||||
|
def has_change_permission(self, request, obj=None):
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return True
|
||||||
|
if obj is not None:
|
||||||
|
return request.user.groups.filter(name=obj.event.name).exists()
|
||||||
|
return super().has_change_permission(request, obj)
|
||||||
|
|
||||||
|
def has_delete_permission(self, request, obj=None):
|
||||||
|
if request.user.is_superuser:
|
||||||
|
return True
|
||||||
|
if obj is not None:
|
||||||
|
return request.user.groups.filter(name=obj.event.name).exists()
|
||||||
|
return super().has_delete_permission(request, obj)
|
||||||
|
|
||||||
|
@admin.register(Bonus)
|
||||||
|
class bonus(admin.ModelAdmin):
|
||||||
|
#list display
|
||||||
|
list_display = ['points', 'absolute']
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Generated by Django 3.2.11 on 2022-05-30 07:30
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('accounts', '0011_migration_campus'),
|
||||||
|
('events', '0009_auto_20220215_1706'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='event',
|
||||||
|
name='campus',
|
||||||
|
field=models.ManyToManyField(blank=True, to='accounts.Campus'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,28 @@
|
||||||
|
# Generated by Django 3.2.11 on 2023-09-17 17:00
|
||||||
|
|
||||||
|
import django.core.validators
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('events', '0010_event_campus'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Bonus',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('absolute', models.BooleanField(default=True)),
|
||||||
|
('points', models.CharField(max_length=100, validators=[django.core.validators.int_list_validator])),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='event',
|
||||||
|
name='bonus',
|
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='events.bonus'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,24 @@
|
||||||
|
# Generated by Django 3.2.11 on 2023-09-17 18:38
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('events', '0011_bonus_points'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='event',
|
||||||
|
name='bonus',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='events.bonus'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='eventplayer',
|
||||||
|
name='team',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='events.team'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -1,9 +1,17 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.contrib.auth.models import timezone
|
from django.contrib.auth.models import timezone
|
||||||
|
from django.core.validators import int_list_validator
|
||||||
import uuid
|
import uuid
|
||||||
|
from accounts.models import Campus
|
||||||
|
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
class Bonus(models.Model):
|
||||||
|
absolute = models.BooleanField(default=True)
|
||||||
|
points = models.CharField(validators=[int_list_validator], max_length=100)
|
||||||
|
def __str__(self):
|
||||||
|
return self.points
|
||||||
|
|
||||||
class Event(models.Model):
|
class Event(models.Model):
|
||||||
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
||||||
name = models.CharField(max_length=200)
|
name = models.CharField(max_length=200)
|
||||||
|
@ -17,6 +25,8 @@ class Event(models.Model):
|
||||||
team_size = models.PositiveIntegerField(default=1)
|
team_size = models.PositiveIntegerField(default=1)
|
||||||
auto_match = models.BooleanField(default=False)
|
auto_match = models.BooleanField(default=False)
|
||||||
dynamic = models.BooleanField(default=False)
|
dynamic = models.BooleanField(default=False)
|
||||||
|
campus = models.ManyToManyField(Campus, blank=True)
|
||||||
|
bonus = models.ForeignKey(Bonus, null=True, on_delete=models.SET_NULL, blank=True)
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
@ -28,15 +38,13 @@ class Team(models.Model):
|
||||||
last_submission_date = models.DateTimeField('Last Submission Date', default=timezone.now)
|
last_submission_date = models.DateTimeField('Last Submission Date', default=timezone.now)
|
||||||
auto = models.BooleanField(default=False)
|
auto = models.BooleanField(default=False)
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
class EventPlayer(models.Model):
|
class EventPlayer(models.Model):
|
||||||
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||||
event = models.ForeignKey(Event, on_delete=models.CASCADE)
|
event = models.ForeignKey(Event, on_delete=models.CASCADE)
|
||||||
score = models.PositiveIntegerField(default=0, db_index=True)
|
score = models.PositiveIntegerField(default=0, db_index=True)
|
||||||
last_submission_date = models.DateTimeField('Last Submission Date', default=timezone.now)
|
last_submission_date = models.DateTimeField('Last Submission Date', default=timezone.now)
|
||||||
team = models.ForeignKey(Team, on_delete=models.CASCADE, null=True)
|
team = models.ForeignKey(Team, on_delete=models.CASCADE, null=True, blank=True)
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['-score', 'last_submission_date', 'user__username']
|
ordering = ['-score', 'last_submission_date', 'user__username']
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
from django.contrib import sitemaps
|
||||||
|
from django.urls import reverse
|
||||||
|
from .models import Event
|
||||||
|
|
||||||
|
class EventsSitemap(sitemaps.Sitemap):
|
||||||
|
changefreq = "daily"
|
||||||
|
priority = 0.7
|
||||||
|
i18n = True
|
||||||
|
|
||||||
|
def items(self):
|
||||||
|
return Event.objects.all()
|
||||||
|
|
||||||
|
def location(self, obj):
|
||||||
|
return reverse('events:event_info', kwargs={'event_slug': obj.slug})
|
||||||
|
|
||||||
|
class StaticViewSitemap(sitemaps.Sitemap):
|
||||||
|
priority = 0.7
|
||||||
|
changefreq = 'daily'
|
||||||
|
i18n = True
|
||||||
|
def items(self):
|
||||||
|
return ['events:events']
|
||||||
|
|
||||||
|
def location(self, item):
|
||||||
|
return reverse(item)
|
|
@ -16,6 +16,9 @@
|
||||||
{% if registered == False %}
|
{% if registered == False %}
|
||||||
<span class="message error-msg">{% trans "You need to be registered to the event." %}</span>
|
<span class="message error-msg">{% trans "You need to be registered to the event." %}</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
{% if invalid == True %}
|
||||||
|
<span class="message error-msg">{% trans "Invalid characters in name" %}</span>
|
||||||
|
{% endif %}
|
||||||
{% if exist == True %}
|
{% if exist == True %}
|
||||||
<span class="message error-msg">{% trans "Name already taken." %}</span>
|
<span class="message error-msg">{% trans "Name already taken." %}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<div class="ctf-block">
|
<div class="ctf-block">
|
||||||
<a href="{% url 'events:event_info' event_slug=event.slug %}">< Back to event</a>
|
<a href="{% url 'events:event_info' event_slug=event.slug %}">< Back to event</a>
|
||||||
<div class="ctf-head">
|
<div class="ctf-head">
|
||||||
<h2>{% trans "Event" %} - {{ event.name }}</h2>
|
<h1>{% trans "Event" %} - {{ event.name }}</h1>
|
||||||
<h4>{{ ctf.name }}</h4>
|
<h4>{{ ctf.name }}</h4>
|
||||||
<small>{% trans "Published date" %} : {{ ctf.pub_date }}</small>
|
<small>{% trans "Published date" %} : {{ ctf.pub_date }}</small>
|
||||||
</div>
|
</div>
|
||||||
|
@ -21,7 +21,10 @@
|
||||||
<div class="ctf-footer">
|
<div class="ctf-footer">
|
||||||
{% if request.user.is_authenticated %}
|
{% if request.user.is_authenticated %}
|
||||||
{% if congrat == True %}
|
{% if congrat == True %}
|
||||||
<p>{% trans "Congratulation !" %}</p>
|
<p>{% trans "Congratulation !" %}</p>
|
||||||
|
{% if bonus|add:"0" > 0 %}
|
||||||
|
<p>{% trans "Bonus points awarded" %} : {{ bonus }}</p>
|
||||||
|
{% endif %}
|
||||||
{% elif alreadyflag == True %}
|
{% elif alreadyflag == True %}
|
||||||
<p>{% trans "Already flagged" %}</p>
|
<p>{% trans "Already flagged" %}</p>
|
||||||
{% elif eventisover == True %}
|
{% elif eventisover == True %}
|
||||||
|
@ -96,6 +99,9 @@
|
||||||
<ul class="list-group">
|
<ul class="list-group">
|
||||||
<li class="list-group-item">{% trans "Author" %} : <a style="position:absolute;right: 15px;" class="profile_link {{is_member}}" href="{% url 'accounts:profile' user_name=ctf.author.username %}">{{ ctf.author.username }}</a></li>
|
<li class="list-group-item">{% trans "Author" %} : <a style="position:absolute;right: 15px;" class="profile_link {{is_member}}" href="{% url 'accounts:profile' user_name=ctf.author.username %}">{{ ctf.author.username }}</a></li>
|
||||||
<li class="list-group-item">{% trans "Point reward" %} : <span style="position:absolute;right: 15px;">{{ ctf.points }}</span></li>
|
<li class="list-group-item">{% trans "Point reward" %} : <span style="position:absolute;right: 15px;">{{ ctf.points }}</span></li>
|
||||||
|
{% if ctf.event.bonus %}
|
||||||
|
<li class="list-group-item">{% trans "Speed Bonuses" %} : <span style="position:absolute;right: 15px;">{{ bonus_points }}</span></li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="event-block">
|
<div class="event-block">
|
||||||
<div class="event-head" style="background-image:linear-gradient(180deg, rgba(102,102,102,0.3) 100%, rgba(29,29,29,1) 100%),url('{{ event.img }}');">
|
<div class="event-head" style="background-image:linear-gradient(180deg, rgba(102,102,102,0.3) 100%, rgba(29,29,29,1) 100%),url('{{ event.img }}');">
|
||||||
<h3>{{ event.name }}</h3>
|
<h1>{{ event.name }}</h1>
|
||||||
{% if ended == True %}
|
{% if ended == True %}
|
||||||
<small>{% trans "This event is over." %}</small>
|
<small>{% trans "This event is over." %}</small>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -26,7 +26,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="event-footer">
|
<div class="event-footer">
|
||||||
{% if begun == True %}
|
{% if begun == True or is_event_manager == True %}
|
||||||
<h4>{% trans "Challenges" %}</h4>
|
<h4>{% trans "Challenges" %}</h4>
|
||||||
|
|
||||||
{% if ctfs %}
|
{% if ctfs %}
|
||||||
|
|
|
@ -8,22 +8,38 @@
|
||||||
<h3>{{ event.name }}</h3>
|
<h3>{{ event.name }}</h3>
|
||||||
<small>{% trans "This event start at" %} : {{ event.start_date }}</small>
|
<small>{% trans "This event start at" %} : {{ event.start_date }}</small>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="ctf-footer">
|
<div class="ctf-footer">
|
||||||
{% if logged == True %}
|
{% if logged == True %}
|
||||||
{% if wrongpwd == True %}
|
{% if userHasCampus == False %}
|
||||||
<span class="message error-msg">{% trans "Wrong password submited." %}</span>
|
<span class="message error-msg">
|
||||||
|
{% trans "This event is reserved for one or more 42 campuses. If you have not connected your intranet to 42CTF, you can do so with this button: " %}
|
||||||
|
<form action="{% url 'accounts:connections-connect-intra42' %}" method='POST' class="form-inline p-2">
|
||||||
|
{%csrf_token%}
|
||||||
|
<button class="btn btn-dark" type="submit">{% trans "Connect 42" %}</button>
|
||||||
|
</form>
|
||||||
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if alreadyregistered == True %}
|
{% if campusCanJoin == False %}
|
||||||
<span class="message error-msg">{% trans "You're already registered to this event." %}</span>
|
<span class="message error-msg">
|
||||||
|
{% trans "This event is reserved for one or more 42 campuses. And unfortunately your campus can't participate. Do not hesitate to contact us to organize an event on your campus!" %}
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
|
{% if userHasCampus == True and campusCanJoin == True %}
|
||||||
|
{% if wrongpwd == True %}
|
||||||
|
<span class="message error-msg">{% trans "Wrong password submited." %}</span>
|
||||||
|
{% endif %}
|
||||||
|
{% if alreadyregistered == True %}
|
||||||
|
<span class="message error-msg">{% trans "You're already registered to this event." %}</span>
|
||||||
|
{% endif %}
|
||||||
|
<h4>{% trans "This event is password protected" %}</h4>
|
||||||
|
<small>{% trans "You need to submit the event password to gain access to this event." %}</small>
|
||||||
|
<form method="post" action="{% url 'events:submit_pwd' event_slug=event.slug %}" class="submitflag-form">
|
||||||
|
{% csrf_token %}
|
||||||
|
<input type="text" name="password" maxlength="48" required="">
|
||||||
|
<input class="form-control" type="submit" value=">">
|
||||||
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<h4>{% trans "This event is password protected" %}</h4>
|
|
||||||
<small>{% trans "You need to submit the event password to gain access to this event." %}</small>
|
|
||||||
<form method="post" action="{% url 'events:submit_pwd' event_slug=event.slug %}" class="submitflag-form">
|
|
||||||
{% csrf_token %}
|
|
||||||
<input type="text" name="password" maxlength="48" required="">
|
|
||||||
<input class="form-control" type="submit" value=">">
|
|
||||||
</form>
|
|
||||||
{% else %}
|
{% else %}
|
||||||
<h4>{% trans "You need to be logged to access this event." %}</h4>
|
<h4>{% trans "You need to be logged to access this event." %}</h4>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -35,7 +51,7 @@
|
||||||
<li class="list-group-item">{{ event.name }}</li>
|
<li class="list-group-item">{{ event.name }}</li>
|
||||||
<li class="list-group-item">{% trans "Starts at" %} : {{ event.start_date | date:'H:i d-m-y'}}</li>
|
<li class="list-group-item">{% trans "Starts at" %} : {{ event.start_date | date:'H:i d-m-y'}}</li>
|
||||||
<li class="list-group-item">{% trans "Ends at" %} : {{ event.end_date | date:'H:i d-m-y'}}</li>
|
<li class="list-group-item">{% trans "Ends at" %} : {{ event.end_date | date:'H:i d-m-y'}}</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12">
|
<div class="col-12 ctf-head">
|
||||||
<h3>{% trans "Events" %}</h3>
|
<h1>{% trans "Events" %}</h1>
|
||||||
</div>
|
</div>
|
||||||
{% if events %}
|
{% if events %}
|
||||||
{% for ev in events %}
|
{% for ev in events %}
|
||||||
|
|
|
@ -0,0 +1,168 @@
|
||||||
|
{% extends 'base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% load key_value %}
|
||||||
|
{% load is_member %}
|
||||||
|
{% ismember user.userprofileinfo as is_member %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12 col-md-9">
|
||||||
|
<a href="{% url 'events:event_info' event_slug=event.slug %}">< Back to event</a>
|
||||||
|
<div>
|
||||||
|
<h4>{% trans "Challenges Solved by" %} <span class="{{ is_member }}">{{ user.username }} - {{ event.name }}</span></h4>
|
||||||
|
{% if solves%}
|
||||||
|
|
||||||
|
<div class="table table-dark">
|
||||||
|
<div class="card-body">
|
||||||
|
<div id="time-chart"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<table class="table table-dark">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">{% trans "Challenge Name" %}</th>
|
||||||
|
<th scope="col">{% trans "Category" %}</th>
|
||||||
|
<th scope="col">{% trans "Points" %}</th>
|
||||||
|
<th scope="col">{% trans "Bonus" %}</th>
|
||||||
|
<th scope="col">{% trans "Date" %}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for s in solves %}
|
||||||
|
<tr>
|
||||||
|
<th scope="row"><a href="{% url 'events:event_chall_info' event_slug=event.slug chall_slug=s.ctf.slug %}">{{ s.ctf.name }}</a></th>
|
||||||
|
<td>{{ s.ctf.category.name}}</td>
|
||||||
|
<td>{{ s.ctf.points }}</td>
|
||||||
|
<td>{{ s.bonus }}</td>
|
||||||
|
<td>{{ s.flag_date|date:"Y-m-d H:i:s" }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
{% else %}
|
||||||
|
<p>{% trans "It seems that this user has not solved any challenge yet..." %}</p>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="d-none d-md-block col-10 col-md-3 right-sidebar">
|
||||||
|
<ul class="list-group">
|
||||||
|
<li class="list-group-item {{ is_member }}">{{ user.username }}</li>
|
||||||
|
<li class="list-group-item">{% trans "Score" %} : {{ score }}</li>
|
||||||
|
<li class="list-group-item">{% trans "Rank" %} : {{ rank }}</li>
|
||||||
|
{% if user.userprofileinfo.portfolio_site %}
|
||||||
|
<li class="list-group-item">
|
||||||
|
<a href="{{ user.userprofileinfo.portfolio_site }}" target="_blank">
|
||||||
|
{{ user.userprofileinfo.portfolio_site }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% if member %}
|
||||||
|
<li class="list-group-item is-member">{% trans "Status: Member" %}</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="list-group-item">{% trans "Status: Visitor" %}</li>
|
||||||
|
{% endif %}
|
||||||
|
<li class="list-group-item">{% trans "Registered since" %} {{ user.date_joined|date:"d-m-Y" }}</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<ul class="list-group">
|
||||||
|
<li class="list-group-item">{% trans "Categories stats" %}</li>
|
||||||
|
{% for cat in catsDatas %}
|
||||||
|
<li class="list-group-item" style="padding-bottom: 3;padding-top: 0;">
|
||||||
|
<span>{{ cat.0 }}</span>
|
||||||
|
<div class="progress">
|
||||||
|
{% if cat.3 == '0' %}
|
||||||
|
<div class="progress-bar bg-success" role="progressbar" style="width: 0%;color:#d9d9d9;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0 %</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="progress-bar bg-success" role="progressbar" style="width: {{ cat.3 }}%" aria-valuenow="{{ cat.3 }}" aria-valuemin="0" aria-valuemax="100">{{ cat.3 }} %</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<ul class="list-group">
|
||||||
|
<ul class="list-group">
|
||||||
|
<li class="list-group-item">{% trans "Challenges created" %}</li>
|
||||||
|
{% if created %}
|
||||||
|
{% for creat in created %}
|
||||||
|
<li class="list-group-item"><a href="{% url 'ctf' cat_slug=creat.category.slug ctf_slug=creat.slug %}">{{ creat.name }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
<li class="list-group-item">{% trans "It seems that this user has not created any challenge yet..." %}</li>
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="https://code.highcharts.com/highcharts.src.js"></script>
|
||||||
|
<script>
|
||||||
|
Highcharts.theme={colors:["#2b908f","#90ee7e","#f45b5b","#7798BF","#aaeeee","#ff0066","#eeaaee","#55BF3B","#DF5353","#7798BF","#aaeeee"],chart:{backgroundColor:{linearGradient:{x1:0,y1:0,x2:1,y2:1},stops:[[0,"#1D1D1D"],[1,"#1D1D1D"]]},style:{fontFamily:"'Unica One', sans-serif"},plotBorderColor:"#606063"},title:{style:{color:"#E0E0E3",textTransform:"uppercase",fontSize:"20px"}},subtitle:{style:{color:"#E0E0E3",textTransform:"uppercase"}},xAxis:{gridLineColor:"#707073",labels:{style:{color:"#E0E0E3"}},lineColor:"#707073",minorGridLineColor:"#505053",tickColor:"#707073",title:{style:{color:"#A0A0A3"}}},yAxis:{gridLineColor:"#707073",labels:{style:{color:"#E0E0E3"}},lineColor:"#707073",minorGridLineColor:"#505053",tickColor:"#707073",tickWidth:1,title:{style:{color:"#A0A0A3"}}},tooltip:{backgroundColor:"rgba(0, 0, 0, 0.85)",style:{color:"#F0F0F0"}},plotOptions:{series:{dataLabels:{color:"#F0F0F3",style:{fontSize:"13px"}},marker:{lineColor:"#333"}},boxplot:{fillColor:"#505053"},candlestick:{lineColor:"white"},errorbar:{color:"white"}},legend:{backgroundColor:"#1D1D1D",itemStyle:{color:"#E0E0E3"},itemHoverStyle:{color:"#FFF"},itemHiddenStyle:{color:"#606063"},title:{style:{color:"#C0C0C0"}}},credits:{style:{color:"#666"}},labels:{style:{color:"#707073"}},drilldown:{activeAxisLabelStyle:{color:"#F0F0F3"},activeDataLabelStyle:{color:"#F0F0F3"}},navigation:{buttonOptions:{symbolStroke:"#DDDDDD",theme:{fill:"#505053"}}},rangeSelector:{buttonTheme:{fill:"#505053",stroke:"#000000",style:{color:"#CCC"},states:{hover:{fill:"#707073",stroke:"#000000",style:{color:"white"}},select:{fill:"#000003",stroke:"#000000",style:{color:"white"}}}},inputBoxBorderColor:"#505053",inputStyle:{backgroundColor:"#333",color:"silver"},labelStyle:{color:"silver"}},navigator:{handles:{backgroundColor:"#666",borderColor:"#AAA"},outlineColor:"#CCC",maskFill:"rgba(255,255,255,0.1)",series:{color:"#7798BF",lineColor:"#A6C7ED"},xAxis:{gridLineColor:"#505053"}},scrollbar:{barBackgroundColor:"#808083",barBorderColor:"#808083",buttonArrowColor:"#CCC",buttonBackgroundColor:"#606063",buttonBorderColor:"#606063",rifleColor:"#FFF",trackBackgroundColor:"#404043",trackBorderColor:"#404043"}};
|
||||||
|
|
||||||
|
Highcharts.setOptions(Highcharts.theme);
|
||||||
|
|
||||||
|
Highcharts.chart('time-chart', {
|
||||||
|
title: {
|
||||||
|
text: 'Points earned for each category'
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
title: {
|
||||||
|
text: 'Points earned'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'datetime',
|
||||||
|
labels: {
|
||||||
|
formatter: function() {
|
||||||
|
return Highcharts.dateFormat('%d.%b %Y',
|
||||||
|
this.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
layout: 'vertical',
|
||||||
|
align: 'right',
|
||||||
|
verticalAlign: 'middle'
|
||||||
|
},
|
||||||
|
plotOptions: {
|
||||||
|
pointStart: {{ user.date_joined|timestamp_fromdate }},
|
||||||
|
series: {
|
||||||
|
label: {
|
||||||
|
connectorAllowed: false
|
||||||
|
},
|
||||||
|
allowPointSelect: true,
|
||||||
|
marker: {
|
||||||
|
enabled: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: 'Total',
|
||||||
|
data: {{ solved|safe }}
|
||||||
|
},
|
||||||
|
{% for cat in cats %}
|
||||||
|
{
|
||||||
|
name: '{{ cat.name }}',
|
||||||
|
data: {{ pointDatas|keyvalue:cat.name|safe }},
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
],
|
||||||
|
responsive: {
|
||||||
|
rules: [{
|
||||||
|
condition: {
|
||||||
|
maxWidth: 500
|
||||||
|
},
|
||||||
|
chartOptions: {
|
||||||
|
legend: {
|
||||||
|
layout: 'horizontal',
|
||||||
|
align: 'center',
|
||||||
|
verticalAlign: 'bottom'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
||||||
|
|
|
@ -1,10 +1,18 @@
|
||||||
|
from django.contrib.sitemaps.views import sitemap
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
from .sitemaps import StaticViewSitemap, EventsSitemap
|
||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
app_name = "events"
|
app_name = "events"
|
||||||
|
|
||||||
|
sitemaps = {
|
||||||
|
'events': EventsSitemap(),
|
||||||
|
'static': StaticViewSitemap(),
|
||||||
|
}
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', views.events, name='events'),
|
path('', views.events, name='events'),
|
||||||
|
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
|
||||||
path('<str:event_slug>', views.event, name='event_info'),
|
path('<str:event_slug>', views.event, name='event_info'),
|
||||||
path('<str:event_slug>/challenge/<str:chall_slug>', views.chall_event_info, name='event_chall_info'),
|
path('<str:event_slug>/challenge/<str:chall_slug>', views.chall_event_info, name='event_chall_info'),
|
||||||
path('pwd/<str:event_slug>', views.submit_pwd, name='submit_pwd'),
|
path('pwd/<str:event_slug>', views.submit_pwd, name='submit_pwd'),
|
||||||
|
|
|
@ -4,6 +4,7 @@ from django.contrib.auth.models import timezone
|
||||||
from ..forms import submit_flag
|
from ..forms import submit_flag
|
||||||
from ..models import Event, EventPlayer, Team
|
from ..models import Event, EventPlayer, Team
|
||||||
from ctfs.models import CTF, CTF_flags, Category
|
from ctfs.models import CTF, CTF_flags, Category
|
||||||
|
from accounts.models import UserProfileInfo
|
||||||
from django.utils.translation import get_language
|
from django.utils.translation import get_language
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
@ -40,6 +41,31 @@ def actualize_points(ctf):
|
||||||
player.team.score -= diff
|
player.team.score -= diff
|
||||||
player.team.save()
|
player.team.save()
|
||||||
|
|
||||||
|
def compute_bonus_points(ctf):
|
||||||
|
if not ctf.event.bonus:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
solves = CTF_flags.objects.filter(ctf=ctf)
|
||||||
|
bonuses = ctf.event.bonus.points.split(',')
|
||||||
|
|
||||||
|
if len(solves) >= len(bonuses):
|
||||||
|
return 0
|
||||||
|
else:
|
||||||
|
if ctf.event.bonus.absolute == True:
|
||||||
|
return int(bonuses[len(solves)])
|
||||||
|
else:
|
||||||
|
return int(bonuses[len(solves)]) * ctf.points // 100
|
||||||
|
|
||||||
|
def format_bonus_points(ctf):
|
||||||
|
if not ctf.event.bonus:
|
||||||
|
return None
|
||||||
|
|
||||||
|
bonuses = ctf.event.bonus.points.split(',')
|
||||||
|
if ctf.event.bonus.absolute == True:
|
||||||
|
return ''.join([b + ', ' for b in bonuses])[:-2]
|
||||||
|
return ''.join([str(ctf.points * int(b) // 100) + ', ' for b in bonuses])[:-2]
|
||||||
|
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
def events(request):
|
def events(request):
|
||||||
list_events = Event.objects.filter().order_by('-end_date', 'start_date')
|
list_events = Event.objects.filter().order_by('-end_date', 'start_date')
|
||||||
|
@ -49,7 +75,8 @@ def chall_event_info(request, event_slug, chall_slug):
|
||||||
event_info = get_object_or_404(Event, slug=event_slug)
|
event_info = get_object_or_404(Event, slug=event_slug)
|
||||||
ctf_info = get_object_or_404(CTF, event__slug=event_info.slug, slug=chall_slug)
|
ctf_info = get_object_or_404(CTF, event__slug=event_info.slug, slug=chall_slug)
|
||||||
|
|
||||||
if timezone.now() < ctf_info.pub_date:
|
is_event_manager = request.user.groups.filter(name=event_info.name).exists() or request.user.is_superuser
|
||||||
|
if timezone.now() < ctf_info.pub_date and not is_event_manager:
|
||||||
return redirect('events:event_info', event_slug=event_slug)
|
return redirect('events:event_info', event_slug=event_slug)
|
||||||
eventisover = False
|
eventisover = False
|
||||||
alreadyflag = False
|
alreadyflag = False
|
||||||
|
@ -59,6 +86,7 @@ def chall_event_info(request, event_slug, chall_slug):
|
||||||
notsub = False
|
notsub = False
|
||||||
noteam = False
|
noteam = False
|
||||||
player = None
|
player = None
|
||||||
|
bonus = 0
|
||||||
if request.user.is_authenticated and not request.user.is_staff:
|
if request.user.is_authenticated and not request.user.is_staff:
|
||||||
player = EventPlayer.objects.filter(event=event_info, user=request.user)
|
player = EventPlayer.objects.filter(event=event_info, user=request.user)
|
||||||
if not player:
|
if not player:
|
||||||
|
@ -79,6 +107,8 @@ def chall_event_info(request, event_slug, chall_slug):
|
||||||
notsub = True
|
notsub = True
|
||||||
if request.GET.get('NoTeam'):
|
if request.GET.get('NoTeam'):
|
||||||
noteam = True
|
noteam = True
|
||||||
|
bonus = request.GET.get('Bonus')
|
||||||
|
bonus_points = format_bonus_points(ctf_info)
|
||||||
solved_challs = CTF_flags.objects.filter(ctf=ctf_info).order_by('flag_date')
|
solved_challs = CTF_flags.objects.filter(ctf=ctf_info).order_by('flag_date')
|
||||||
solved_list = []
|
solved_list = []
|
||||||
for s in solved_challs:
|
for s in solved_challs:
|
||||||
|
@ -88,47 +118,59 @@ def chall_event_info(request, event_slug, chall_slug):
|
||||||
solved_list.append([s.user, s.flag_date])
|
solved_list.append([s.user, s.flag_date])
|
||||||
description = get_description_by_lang(ctf_info)
|
description = get_description_by_lang(ctf_info)
|
||||||
return render(request, 'events/ctf_info.html', { 'ctf' : ctf_info, 'event':event_info, 'solved_list': solved_list, 'description': description, 'eventisover': eventisover, 'alreadyflag': alreadyflag,
|
return render(request, 'events/ctf_info.html', { 'ctf' : ctf_info, 'event':event_info, 'solved_list': solved_list, 'description': description, 'eventisover': eventisover, 'alreadyflag': alreadyflag,
|
||||||
'congrat': congrat, 'wrongflag': wrongflag, 'errorform': errorform, 'notsub': notsub, 'noteam':noteam})
|
'congrat': congrat, 'wrongflag': wrongflag, 'errorform': errorform, 'notsub': notsub, 'noteam':noteam, 'bonus':bonus, 'bonus_points':bonus_points})
|
||||||
|
|
||||||
def event(request, event_slug):
|
def event(request, event_slug):
|
||||||
event_info = get_object_or_404(Event, slug=event_slug)
|
event_info = get_object_or_404(Event, slug=event_slug)
|
||||||
IsRegistered = False
|
|
||||||
wrongpwd = False
|
wrongpwd = False
|
||||||
alreadyregistered = False
|
alreadyregistered = False
|
||||||
subisover = False
|
subisover = False
|
||||||
|
|
||||||
|
is_event_manager = request.user.groups.filter(name=event_info.name).exists() or request.user.is_superuser
|
||||||
|
|
||||||
|
ended = (timezone.now() >= event_info.end_date)
|
||||||
|
begun = (timezone.now() >= event_info.start_date)
|
||||||
|
|
||||||
|
if is_event_manager: # we want to see all the challenges
|
||||||
|
challenges = CTF.objects.filter(event=event_info).order_by('category', 'points')
|
||||||
|
else:
|
||||||
|
challenges = CTF.objects.filter(event=event_info, pub_date__lte=timezone.now()).order_by('category', 'points')
|
||||||
|
|
||||||
|
if event_info.team_size == 1:
|
||||||
|
solved_list = EventPlayer.objects.filter(event=event_info).order_by('-score', 'last_submission_date', 'user__username')
|
||||||
|
else:
|
||||||
|
solved_list = Team.objects.filter(event=event_info).order_by('-score', 'last_submission_date', 'name')
|
||||||
|
|
||||||
if request.GET.get('WrongPassword'):
|
if request.GET.get('WrongPassword'):
|
||||||
wrongpwd = True
|
wrongpwd = True
|
||||||
if request.GET.get('AlreadyRegistered'):
|
if request.GET.get('AlreadyRegistered'):
|
||||||
alreadyregistered = True
|
alreadyregistered = True
|
||||||
if request.GET.get('SubscriptionIsOver'):
|
if request.GET.get('SubscriptionIsOver'):
|
||||||
subisover = True
|
subisover = True
|
||||||
|
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
try:
|
try:
|
||||||
player = EventPlayer.objects.get(event=event_info, user=request.user)
|
EventPlayer.objects.get(event=event_info, user=request.user)
|
||||||
|
return render(request, 'events/event_info.html', {'event' : event_info, 'IsRegistered': True, 'ctfs': challenges, 'solved_list':solved_list,
|
||||||
|
'ended': ended, 'begun': begun, 'wrongpwd': wrongpwd, 'alreadyregistered': alreadyregistered, 'subisover': subisover, 'is_event_manager':is_event_manager})
|
||||||
except:
|
except:
|
||||||
player = None
|
pass
|
||||||
if player:
|
|
||||||
IsRegistered = True
|
if (event_info.campus.all() or event_info.password) and request.user.is_authenticated is False:
|
||||||
if event_info.password:
|
return render(request, 'events/event_pwd.html', {'event' : event_info, 'logged': False})
|
||||||
if request.user.is_authenticated:
|
|
||||||
if request.user.is_staff is False:
|
if event_info.campus.all() and is_event_manager is False:
|
||||||
if not player:
|
user = UserProfileInfo.objects.get(user=request.user)
|
||||||
return render(request, 'events/event_pwd.html', {'event' : event_info, 'logged': True, 'wrongpwd': wrongpwd, 'alreadyregistered': alreadyregistered})
|
if user.campus is None:
|
||||||
else:
|
return render(request, 'events/event_pwd.html', {'event' : event_info, 'logged': True, 'wrongpwd': wrongpwd, 'alreadyregistered': alreadyregistered, 'userHasCampus': False, 'campusCanJoin': True})
|
||||||
return render(request, 'events/event_pwd.html', {'event' : event_info, 'logged': False, 'wrongpwd': wrongpwd, 'alreadyregistered': alreadyregistered})
|
elif user.campus not in event_info.campus.all():
|
||||||
ended = False
|
return render(request, 'events/event_pwd.html', {'event' : event_info, 'logged': True, 'wrongpwd': wrongpwd, 'alreadyregistered': alreadyregistered, 'userHasCampus': True, 'campusCanJoin': False})
|
||||||
if timezone.now() >= event_info.end_date:
|
|
||||||
ended = True
|
if event_info.password and is_event_manager is False:
|
||||||
begun = False
|
return render(request, 'events/event_pwd.html', {'event' : event_info, 'logged': True, 'wrongpwd': wrongpwd, 'alreadyregistered': alreadyregistered, 'userHasCampus': True, 'campusCanJoin': True})
|
||||||
if timezone.now() >= event_info.start_date:
|
|
||||||
begun = True
|
return render(request, 'events/event_info.html', {'event' : event_info, 'ctfs': challenges, 'solved_list':solved_list, 'IsRegistered': False,
|
||||||
challenges = CTF.objects.filter(event=event_info, pub_date__lte=timezone.now()).order_by('category', 'points')
|
'ended': ended, 'begun': begun, 'wrongpwd': wrongpwd, 'alreadyregistered': alreadyregistered, 'subisover': subisover, 'is_event_manager':is_event_manager})
|
||||||
if event_info.team_size == 1:
|
|
||||||
solved_list = EventPlayer.objects.filter(event=event_info).order_by('-score', 'last_submission_date', 'user__username')
|
|
||||||
else:
|
|
||||||
solved_list = Team.objects.filter(event=event_info).order_by('-score', 'last_submission_date', 'name')
|
|
||||||
return render(request, 'events/event_info.html', {'event' : event_info, 'IsRegistered': IsRegistered, 'ctfs': challenges, 'solved_list':solved_list,
|
|
||||||
'ended': ended, 'begun': begun, 'wrongpwd': wrongpwd, 'alreadyregistered': alreadyregistered, 'subisover': subisover})
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def submit_event_flag(request, event_slug, chall_slug):
|
def submit_event_flag(request, event_slug, chall_slug):
|
||||||
|
@ -145,18 +187,19 @@ def submit_event_flag(request, event_slug, chall_slug):
|
||||||
if not ctf_info:
|
if not ctf_info:
|
||||||
response['Location'] += '?ChallengeNotFound=1'
|
response['Location'] += '?ChallengeNotFound=1'
|
||||||
return response
|
return response
|
||||||
|
|
||||||
try:
|
try:
|
||||||
player = EventPlayer.objects.get(event=ev, user=request.user)
|
player = EventPlayer.objects.get(event=ev, user=request.user)
|
||||||
except:
|
except:
|
||||||
player = None
|
player = None
|
||||||
|
|
||||||
if player:
|
if player:
|
||||||
if ev.team_size > 1 and player.team is None:
|
if ev.team_size > 1 and player.team is None:
|
||||||
response['Location'] += '?NoTeam=1'
|
response['Location'] += '?NoTeam=1'
|
||||||
return response
|
return response
|
||||||
if ev.team_size == 1 and CTF_flags.objects.filter(user=request.user, ctf=ctf_info):
|
if ev.team_size == 1:
|
||||||
flagged = True
|
if CTF_flags.objects.filter(user=request.user, ctf=ctf_info):
|
||||||
|
flagged = True
|
||||||
else:
|
else:
|
||||||
solved_list = CTF_flags.objects.filter(ctf=ctf_info)
|
solved_list = CTF_flags.objects.filter(ctf=ctf_info)
|
||||||
for s in solved_list:
|
for s in solved_list:
|
||||||
|
@ -171,20 +214,21 @@ def submit_event_flag(request, event_slug, chall_slug):
|
||||||
|
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
if ctf_info.flag == request.POST.get('flag'):
|
if ctf_info.flag == request.POST.get('flag'):
|
||||||
new = CTF_flags(user = request.user, ctf = ctf_info, flag_date = timezone.now())
|
bonus = compute_bonus_points(ctf_info)
|
||||||
|
new = CTF_flags(user = request.user, ctf = ctf_info, flag_date = timezone.now(), bonus = bonus)
|
||||||
new.save()
|
new.save()
|
||||||
if ctf_info.points > 0:
|
if ctf_info.points > 0:
|
||||||
player.last_submission_date = timezone.now()
|
player.last_submission_date = timezone.now()
|
||||||
player.score += ctf_info.points
|
player.score += (ctf_info.points + bonus)
|
||||||
player.save()
|
player.save()
|
||||||
if player.team:
|
if player.team:
|
||||||
if ctf_info.points > 0:
|
if ctf_info.points > 0:
|
||||||
player.team.last_submission_date = timezone.now()
|
player.team.last_submission_date = timezone.now()
|
||||||
player.team.score += ctf_info.points
|
player.team.score += (ctf_info.points + bonus)
|
||||||
player.team.save()
|
player.team.save()
|
||||||
if ev.dynamic:
|
if ev.dynamic:
|
||||||
actualize_points(ctf_info)
|
actualize_points(ctf_info)
|
||||||
response['Location'] += '?Congrat=1'
|
response['Location'] += '?Congrat=1&Bonus=' + str(bonus)
|
||||||
return response
|
return response
|
||||||
else:
|
else:
|
||||||
response['Location'] += '?WrongFlag=1'
|
response['Location'] += '?WrongFlag=1'
|
||||||
|
@ -219,7 +263,7 @@ def submit_pwd(request, event_slug):
|
||||||
new = EventPlayer(user=request.user, event=ev)
|
new = EventPlayer(user=request.user, event=ev)
|
||||||
new.save()
|
new.save()
|
||||||
return redirect('events:event_info', event_slug=event_slug)
|
return redirect('events:event_info', event_slug=event_slug)
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def register_to_event(request, event_slug):
|
def register_to_event(request, event_slug):
|
||||||
|
@ -266,7 +310,7 @@ def profile(request, user_name, event_slug):
|
||||||
percent = (solved_count / max_count) * 100
|
percent = (solved_count / max_count) * 100
|
||||||
catsDatas.append([cat.name, solved_count, max_count, '{:.0f}'.format(percent)])
|
catsDatas.append([cat.name, solved_count, max_count, '{:.0f}'.format(percent)])
|
||||||
for flag in solved:
|
for flag in solved:
|
||||||
somme += flag.ctf.points
|
somme += (flag.ctf.points + flag.bonus)
|
||||||
pointDatas[cat.name].append([flag.flag_date.timestamp() * 1000, somme])
|
pointDatas[cat.name].append([flag.flag_date.timestamp() * 1000, somme])
|
||||||
|
|
||||||
solves = CTF_flags.objects.filter(user=user_obj, ctf__event=event_info).order_by('-flag_date')
|
solves = CTF_flags.objects.filter(user=user_obj, ctf__event=event_info).order_by('-flag_date')
|
||||||
|
@ -274,10 +318,10 @@ def profile(request, user_name, event_slug):
|
||||||
somme = 0
|
somme = 0
|
||||||
solved.append([event_info.start_date.timestamp() * 1000, 0])
|
solved.append([event_info.start_date.timestamp() * 1000, 0])
|
||||||
for s in solves.reverse():
|
for s in solves.reverse():
|
||||||
somme += s.ctf.points
|
somme += (s.ctf.points + s.bonus)
|
||||||
solved.append([s.flag_date.timestamp() * 1000,somme])
|
solved.append([s.flag_date.timestamp() * 1000,somme])
|
||||||
|
|
||||||
return render(request,'accounts/profile.html', {'user':user_obj, 'solves':solves,'solved':solved,'catsDatas': catsDatas, 'pointDatas': pointDatas,
|
return render(request,'events/profile.html', {'user':user_obj, 'solves':solves,'solved':solved,'catsDatas': catsDatas, 'pointDatas': pointDatas,
|
||||||
'rank': rank, 'score' : somme, 'cats':cats})
|
'rank': rank, 'score' : player.score, 'cats':cats, 'event': event_info})
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,10 +13,13 @@ from random import randint
|
||||||
def create_team(request, event_slug):
|
def create_team(request, event_slug):
|
||||||
ev = get_object_or_404(Event, slug=event_slug)
|
ev = get_object_or_404(Event, slug=event_slug)
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
|
teamname = request.POST.get('teamname')
|
||||||
if request.user.is_authenticated and ev.team_size > 1:
|
if request.user.is_authenticated and ev.team_size > 1:
|
||||||
if Team.objects.filter(name=request.POST.get('teamname'), event=ev).exists():
|
if any(c in set('./') for c in teamname):
|
||||||
|
return render(request, 'events/create_team.html', {'event' : ev, 'logged': True, 'wrongpwd': False, 'registered' : True, 'exist' : False, 'invalid' : True})
|
||||||
|
if Team.objects.filter(name=teamname, event=ev).exists():
|
||||||
return render(request, 'events/create_team.html', {'event' : ev, 'logged': True, 'wrongpwd': False, 'registered' : True, 'exist' : True})
|
return render(request, 'events/create_team.html', {'event' : ev, 'logged': True, 'wrongpwd': False, 'registered' : True, 'exist' : True})
|
||||||
new = Team(name=request.POST.get('teamname'), password=request.POST.get('password'), event=ev)
|
new = Team(name=teamname, password=request.POST.get('password'), event=ev)
|
||||||
new.save()
|
new.save()
|
||||||
player = EventPlayer.objects.get(user=request.user, event=ev)
|
player = EventPlayer.objects.get(user=request.user, event=ev)
|
||||||
player.team = new
|
player.team = new
|
||||||
|
@ -115,9 +118,10 @@ def manage_team(request, event_slug):
|
||||||
pname = p_form.cleaned_data['name']
|
pname = p_form.cleaned_data['name']
|
||||||
if pname == tname:
|
if pname == tname:
|
||||||
pass
|
pass
|
||||||
else:
|
elif any(c in set('./') for c in pname):
|
||||||
if Team.objects.filter(name=pname, event=event_info).exists():
|
error = _("Invalid characters in name")
|
||||||
error = _("Name already taken.")
|
elif Team.objects.filter(name=pname, event=event_info).exists():
|
||||||
|
error = _("Name already taken.")
|
||||||
ppassword = p_form.cleaned_data['password']
|
ppassword = p_form.cleaned_data['password']
|
||||||
if error is None:
|
if error is None:
|
||||||
p_form.save()
|
p_form.save()
|
||||||
|
@ -137,18 +141,20 @@ def leave_team(request, event_slug):
|
||||||
player = EventPlayer.objects.get(user=request.user, event=event_info)
|
player = EventPlayer.objects.get(user=request.user, event=event_info)
|
||||||
team = Team.objects.get(event=event_info, name=player.team.name)
|
team = Team.objects.get(event=event_info, name=player.team.name)
|
||||||
|
|
||||||
team.score -= player.score
|
|
||||||
team.save()
|
|
||||||
player.team = None
|
player.team = None
|
||||||
|
player.save()
|
||||||
|
members = EventPlayer.objects.filter(team=team, event=event_info)
|
||||||
|
if members.count() == 0:
|
||||||
|
team.delete()
|
||||||
|
else:
|
||||||
|
team.score -= player.score
|
||||||
|
team.save()
|
||||||
|
|
||||||
solved = CTF_flags.objects.filter(user=player.user, ctf__event=event_info)
|
solved = CTF_flags.objects.filter(user=player.user, ctf__event=event_info)
|
||||||
player.score = 0
|
player.score = 0
|
||||||
solved.delete()
|
solved.delete()
|
||||||
player.save()
|
player.save()
|
||||||
|
|
||||||
members = EventPlayer.objects.filter(team=team, event=event_info)
|
|
||||||
if members.count() == 0:
|
|
||||||
team.delete()
|
|
||||||
|
|
||||||
return redirect('events:event_info', event_slug=event_slug)
|
return redirect('events:event_info', event_slug=event_slug)
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
from django.contrib import sitemaps
|
||||||
|
from django.urls import reverse
|
||||||
|
|
||||||
|
class StaticViewSitemap(sitemaps.Sitemap):
|
||||||
|
priority = 0.5
|
||||||
|
changefreq = 'monthly'
|
||||||
|
i18n = True
|
||||||
|
def items(self):
|
||||||
|
return ['home', 'cgu']
|
||||||
|
|
||||||
|
def location(self, item):
|
||||||
|
return reverse(item)
|
|
@ -4,7 +4,7 @@
|
||||||
{% get_current_language as lang %}
|
{% get_current_language as lang %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 news-card">
|
<div class="col-12 news-card">
|
||||||
<h2>Conditions générales d'utilisation du site 42CTF</h2>
|
<h1>Conditions générales d'utilisation du site 42CTF</h1>
|
||||||
|
|
||||||
<h5>Article 1 : Objet</h5>
|
<h5>Article 1 : Objet</h5>
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
We're pleased to announce that 42CTF source code is now available on a self-hosted gitea <a class="footer_imgs" href="https://gitea.42ctf.org" target="_blank"><img src="/static/img/gitea_logo.png" width="30"></a><br><br>
|
We're pleased to announce that 42CTF source code is now available on a self-hosted gitea <a class="footer_imgs" href="https://gitea.42ctf.org" target="_blank"><img src="/static/img/gitea_logo.png" width="30" alt="Gitea logo"></a><br><br>
|
||||||
|
|
||||||
If you want to contribute to the platform (development or translation), you can send us a message on <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a> or simply fill this <a href="https://forms.42l.fr/apps/forms/bpmyGR37AR4yHGnC">form</a> and we'll contact you !
|
If you want to contribute to the platform (development or translation), you can send us a message on <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30" alt="Discord logo"></a> or simply fill this <a href="https://forms.42l.fr/apps/forms/bpmyGR37AR4yHGnC">form</a> and we'll contact you !
|
||||||
|
|
|
@ -5,4 +5,4 @@ We offer you three brand new challenges created by <b><a class=profile_link href
|
||||||
- <b><a href='https://www.42ctf.org/ctfs/web/simple_question_2'>Simple Question of Logic 2</a></b> (30 points)<br>
|
- <b><a href='https://www.42ctf.org/ctfs/web/simple_question_2'>Simple Question of Logic 2</a></b> (30 points)<br>
|
||||||
- <b><a href='https://www.42ctf.org/ctfs/web/simple_question_3'>Simple Question of Logic 3</a></b> (40 points)<br>
|
- <b><a href='https://www.42ctf.org/ctfs/web/simple_question_3'>Simple Question of Logic 3</a></b> (40 points)<br>
|
||||||
<br>
|
<br>
|
||||||
Don't forget that you can always reach out on <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a> to propose new challenges !
|
Don't forget that you can always reach out on <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30" alt="Discord logo"></a> to propose new challenges !
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
Nous sommes heureux de vous annoncer que le code source de 42CTF est désormais disponible sur un <a class="footer_imgs" href="https://gitea.42ctf.org" target="_blank"><img src="/static/img/gitea_logo.png" width="30"></a> auto-hébergé.<br><br>
|
Nous sommes heureux de vous annoncer que le code source de 42CTF est désormais disponible sur un <a class="footer_imgs" href="https://gitea.42ctf.org" target="_blank"><img src="/static/img/gitea_logo.png" width="30" alt="Logo Gitea"></a> auto-hébergé.<br><br>
|
||||||
|
|
||||||
Si vous voulez contribuer a la plateforme (développement ou traduction), vous pouvez nous envoyer un message sur <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a> ou simplement remplir ce <a href="https://forms.42l.fr/apps/forms/bpmyGR37AR4yHGnC">formulaire</a> et nous vous contacterons !
|
Si vous voulez contribuer a la plateforme (développement ou traduction), vous pouvez nous envoyer un message sur <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30" alt="Logo Discord"></a> ou simplement remplir ce <a href="https://forms.42l.fr/apps/forms/bpmyGR37AR4yHGnC">formulaire</a> et nous vous contacterons !
|
||||||
|
|
|
@ -5,4 +5,4 @@ On vous propose trois nouveaux challenges créés par <b><a class=profile_link
|
||||||
- <b><a href='https://www.42ctf.org/ctfs/web/simple_question_2'>Simple Question of Logic 2</a></b> (30 points)<br>
|
- <b><a href='https://www.42ctf.org/ctfs/web/simple_question_2'>Simple Question of Logic 2</a></b> (30 points)<br>
|
||||||
- <b><a href='https://www.42ctf.org/ctfs/web/simple_question_3'>Simple Question of Logic 3</a></b> (40 points)<br>
|
- <b><a href='https://www.42ctf.org/ctfs/web/simple_question_3'>Simple Question of Logic 3</a></b> (40 points)<br>
|
||||||
<br>
|
<br>
|
||||||
N'oubliez pas que vous pouvez toujours nous contacter sur <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a> pour proposer des nouveaux challenges !
|
N'oubliez pas que vous pouvez toujours nous contacter sur <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30" alt="Logo Discord"></a> pour proposer des nouveaux challenges !
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
|
from django.contrib.sitemaps.views import sitemap
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
from .sitemaps import StaticViewSitemap
|
||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
|
sitemaps = {
|
||||||
|
'static': StaticViewSitemap(),
|
||||||
|
}
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', views.home, name='home'),
|
path('', views.home, name='home'),
|
||||||
path('CGU', views.cgu, name='cgu'),
|
path('CGU', views.cgu, name='cgu'),
|
||||||
|
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
|
||||||
]
|
]
|
||||||
|
|
|
@ -9,12 +9,15 @@ from django.utils.translation import (
|
||||||
LANGUAGE_SESSION_KEY, check_for_language, get_language,
|
LANGUAGE_SESSION_KEY, check_for_language, get_language,
|
||||||
)
|
)
|
||||||
from django.core.files.storage import default_storage
|
from django.core.files.storage import default_storage
|
||||||
import datetime
|
|
||||||
|
# import datetime
|
||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
import operator
|
import operator
|
||||||
|
|
||||||
def get_weekly_top():
|
def get_weekly_top():
|
||||||
week_ago = datetime.datetime.now() - datetime.timedelta(days=7)
|
week_ago = timezone.now() - timezone.timedelta(days=7)
|
||||||
weekly_flags = CTF_flags.objects.filter(flag_date__gt=week_ago, ctf__disabled=False, ctf__event=None)
|
weekly_flags = CTF_flags.objects.filter(flag_date__gt=week_ago, ctf__disabled=False, ctf__event=None)
|
||||||
scores = defaultdict(int)
|
scores = defaultdict(int)
|
||||||
|
|
||||||
|
@ -32,7 +35,6 @@ def home(request):
|
||||||
lang_code = request.session[LANGUAGE_SESSION_KEY]
|
lang_code = request.session[LANGUAGE_SESSION_KEY]
|
||||||
url_translated = translate_url(request.path, lang_code)
|
url_translated = translate_url(request.path, lang_code)
|
||||||
if request.path != url_translated:
|
if request.path != url_translated:
|
||||||
print("%s\n%s" % (request.path, url_translated))
|
|
||||||
response = HttpResponseRedirect(url_translated)
|
response = HttpResponseRedirect(url_translated)
|
||||||
return response
|
return response
|
||||||
news = new.objects.order_by('-pub_date')[:5]
|
news = new.objects.order_by('-pub_date')[:5]
|
||||||
|
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
|
"POT-Creation-Date: 2022-08-16 19:28+0200\n"
|
||||||
"PO-Revision-Date: 2022-02-10 19:50+0100\n"
|
"PO-Revision-Date: 2022-02-10 19:50+0100\n"
|
||||||
"Last-Translator: Clément Hamada <clementhamada@pm.me>\n"
|
"Last-Translator: Clément Hamada <clementhamada@pm.me>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -17,198 +17,231 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:8
|
#: src/accounts/templates/accounts/delete.html:8
|
||||||
msgid "Delete account"
|
msgid "Delete account"
|
||||||
msgstr "Account löschen"
|
msgstr "Account löschen"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:11
|
#: src/accounts/templates/accounts/delete.html:11
|
||||||
msgid "Please confirm your password to delete your account."
|
msgid "Please confirm your password to delete your account."
|
||||||
msgstr "Bitte bestätigen Sie Ihr Passwort, um Ihren Account zu löschen."
|
msgstr "Bitte bestätigen Sie Ihr Passwort, um Ihren Account zu löschen."
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:12
|
#: src/accounts/templates/accounts/delete.html:12
|
||||||
msgid "Deleted accounts cannot be recovered."
|
msgid "Deleted accounts cannot be recovered."
|
||||||
msgstr "Gelöschte Accounts können nicht wiederhergestellt werden."
|
msgstr "Gelöschte Accounts können nicht wiederhergestellt werden."
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:15
|
#: src/accounts/templates/accounts/delete.html:15
|
||||||
msgid "Password incorrect."
|
msgid "Password incorrect."
|
||||||
msgstr "Falsches Passwort."
|
msgstr "Falsches Passwort."
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:17
|
#: src/accounts/templates/accounts/delete.html:17
|
||||||
msgid "Your account has been deleted."
|
msgid "Your account has been deleted."
|
||||||
msgstr "Ihr Account wurde gelöscht."
|
msgstr "Ihr Account wurde gelöscht."
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:22
|
#: src/accounts/templates/accounts/delete.html:22
|
||||||
#: accounts/templates/accounts/login.html:19
|
#: src/accounts/templates/accounts/login.html:19
|
||||||
#: accounts/templates/accounts/register.html:23
|
#: src/accounts/templates/accounts/register.html:23
|
||||||
#: events/templates/events/create_team.html:27
|
#: src/events/templates/events/create_team.html:27
|
||||||
#: events/templates/events/join_team.html:32
|
#: src/events/templates/events/join_team.html:32
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Passwort"
|
msgstr "Passwort"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:21
|
#: src/accounts/templates/accounts/edit.html:21
|
||||||
#: accounts/templates/accounts/login.html:18
|
#: src/accounts/templates/accounts/login.html:18
|
||||||
#: accounts/templates/accounts/register.html:22
|
#: src/accounts/templates/accounts/register.html:22
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
|
#: src/ctfs/templates/ctfs/ctf_info.html:63
|
||||||
#: events/templates/events/ctf_info.html:65
|
#: src/ctfs/templates/ctfs/ctfs_list.html:12
|
||||||
#: events/templates/events/event_info.html:64
|
#: src/events/templates/events/ctf_info.html:65
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:13
|
#: src/events/templates/events/event_info.html:64
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:13
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr "Nutzername"
|
msgstr "Nutzername"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:25
|
#: src/accounts/templates/accounts/edit.html:25
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:30
|
#: src/accounts/templates/accounts/edit.html:30
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:64
|
#: src/ctfs/templates/ctfs/ctf_info.html:64
|
||||||
#: events/templates/events/ctf_info.html:66
|
#: src/events/templates/events/ctf_info.html:66
|
||||||
#: events/templates/events/event_info.html:65
|
#: src/events/templates/events/event_info.html:65
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:14
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:14
|
||||||
msgid "Website"
|
msgid "Website"
|
||||||
msgstr "Webseite"
|
msgstr "Webseite"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:36
|
#: src/accounts/templates/accounts/edit.html:36
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Apply"
|
#| msgid "Apply"
|
||||||
msgid " Apply"
|
msgid " Apply"
|
||||||
msgstr "Anwenden"
|
msgstr "Anwenden"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:45
|
#: src/accounts/templates/accounts/edit.html:45
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Delete account"
|
#| msgid "Delete account"
|
||||||
msgid "Connected accounts"
|
msgid "Connected accounts"
|
||||||
msgstr "Account löschen"
|
msgstr "Account löschen"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:53
|
#: src/accounts/templates/accounts/edit.html:53
|
||||||
msgid "Disconnect Discord"
|
msgid "Disconnect Discord"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:59
|
#: src/accounts/templates/accounts/edit.html:59
|
||||||
msgid "Connect Discord"
|
msgid "Connect Discord"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:70
|
#: src/accounts/templates/accounts/edit.html:68
|
||||||
#: accounts/templates/accounts/profile.html:46
|
msgid "Disconnect 42"
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
|
msgstr ""
|
||||||
#: events/templates/events/event_info.html:66
|
|
||||||
#: events/templates/events/event_info.html:89
|
#: src/accounts/templates/accounts/edit.html:74
|
||||||
#: events/templates/events/manage_team.html:40
|
#: src/events/templates/events/event_pwd.html:19
|
||||||
#: events/templates/events/team.html:45
|
msgid "Connect 42"
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:15
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/edit.html:85
|
||||||
|
#: src/accounts/templates/accounts/profile.html:46
|
||||||
|
#: src/ctfs/templates/ctfs/ctf_info.html:65
|
||||||
|
#: src/ctfs/templates/ctfs/ctfs_list.html:13
|
||||||
|
#: src/events/templates/events/event_info.html:66
|
||||||
|
#: src/events/templates/events/event_info.html:89
|
||||||
|
#: src/events/templates/events/manage_team.html:40
|
||||||
|
#: src/events/templates/events/team.html:45
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:16
|
||||||
msgid "Score"
|
msgid "Score"
|
||||||
msgstr "Punktzahl"
|
msgstr "Punktzahl"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:78
|
#: src/accounts/templates/accounts/edit.html:93
|
||||||
#: accounts/templates/accounts/profile.html:60
|
#: src/accounts/templates/accounts/profile.html:60
|
||||||
msgid "Registered since"
|
msgid "Registered since"
|
||||||
msgstr "Registriert seit"
|
msgstr "Registriert seit"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:84
|
#: src/accounts/templates/accounts/edit.html:99
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Delete my account"
|
#| msgid "Delete my account"
|
||||||
msgid " Delete my account"
|
msgid " Delete my account"
|
||||||
msgstr "Meinen Account löschen"
|
msgstr "Meinen Account löschen"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:13
|
#: src/accounts/templates/accounts/login.html:13
|
||||||
msgid "Please, verify your infos."
|
msgid "Please, verify your infos."
|
||||||
msgstr "Überprüfen Sie bitte ihre Daten."
|
msgstr "Überprüfen Sie bitte ihre Daten."
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:22
|
#: src/accounts/templates/accounts/login.html:22
|
||||||
msgid "Reset password"
|
msgid "Reset password"
|
||||||
msgstr "Passwort zurücksetzen"
|
msgstr "Passwort zurücksetzen"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:31
|
#: src/accounts/templates/accounts/login.html:31
|
||||||
#: accounts/templates/accounts/register.html:38 templates/base.html:97
|
#: src/accounts/templates/accounts/register.html:37 src/templates/base.html:97
|
||||||
#: templates/registration/password_reset_complete.html:18
|
#: src/templates/registration/password_reset_complete.html:18
|
||||||
#: templates/registration/password_reset_confirm.html:38
|
#: src/templates/registration/password_reset_confirm.html:38
|
||||||
#: templates/registration/password_reset_done.html:18
|
#: src/templates/registration/password_reset_done.html:18
|
||||||
#: templates/registration/password_reset_form.html:26
|
#: src/templates/registration/password_reset_form.html:26
|
||||||
msgid "Login"
|
msgid "Login"
|
||||||
msgstr "Anmelden"
|
msgstr "Anmelden"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:32
|
#: src/accounts/templates/accounts/login.html:32
|
||||||
#: accounts/templates/accounts/register.html:37
|
#: src/accounts/templates/accounts/register.html:36
|
||||||
#: templates/registration/password_reset_complete.html:19
|
#: src/templates/registration/password_reset_complete.html:19
|
||||||
#: templates/registration/password_reset_confirm.html:39
|
#: src/templates/registration/password_reset_confirm.html:39
|
||||||
#: templates/registration/password_reset_done.html:19
|
#: src/templates/registration/password_reset_done.html:19
|
||||||
#: templates/registration/password_reset_form.html:27
|
#: src/templates/registration/password_reset_form.html:27
|
||||||
msgid "Sign up"
|
msgid "Sign up"
|
||||||
msgstr "Registrieren"
|
msgstr "Registrieren"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:10
|
#: src/accounts/templates/accounts/profile.html:10
|
||||||
msgid "Challenges Solved by"
|
msgid "Challenges Solved by"
|
||||||
msgstr "Herausforderung gelöst von"
|
msgstr "Herausforderung gelöst von"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:21
|
#: src/accounts/templates/accounts/profile.html:21
|
||||||
#: events/templates/events/team.html:20
|
#: src/events/templates/events/team.html:20
|
||||||
msgid "Challenge Name"
|
msgid "Challenge Name"
|
||||||
msgstr "Name der Herausforderung"
|
msgstr "Name der Herausforderung"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:22
|
#: src/accounts/templates/accounts/profile.html:22
|
||||||
#: events/templates/events/team.html:21
|
#: src/events/templates/events/team.html:21
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr "Kategorie"
|
msgstr "Kategorie"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:23
|
#: src/accounts/templates/accounts/profile.html:23
|
||||||
#: events/templates/events/team.html:22
|
#: src/events/templates/events/team.html:22
|
||||||
msgid "Points"
|
msgid "Points"
|
||||||
msgstr "Punkte"
|
msgstr "Punkte"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:24
|
#: src/accounts/templates/accounts/profile.html:24
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:66
|
#: src/ctfs/templates/ctfs/ctf_info.html:66
|
||||||
#: events/templates/events/ctf_info.html:67
|
#: src/events/templates/events/ctf_info.html:67
|
||||||
#: events/templates/events/team.html:23
|
#: src/events/templates/events/team.html:23
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Datum"
|
msgstr "Datum"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:39
|
#: src/accounts/templates/accounts/profile.html:39
|
||||||
msgid "It seems that this user has not solved any challenge yet..."
|
msgid "It seems that this user has not solved any challenge yet..."
|
||||||
msgstr "Es scheint bisher noch keiner diese Herausforderung gelöst zu haben..."
|
msgstr "Es scheint bisher noch keiner diese Herausforderung gelöst zu haben..."
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:47
|
#: src/accounts/templates/accounts/profile.html:47
|
||||||
#: events/templates/events/event_info.html:63
|
#: src/events/templates/events/event_info.html:63
|
||||||
#: events/templates/events/event_info.html:87
|
#: src/events/templates/events/event_info.html:87
|
||||||
#: events/templates/events/manage_team.html:41
|
#: src/events/templates/events/manage_team.html:41
|
||||||
#: events/templates/events/team.html:46
|
#: src/events/templates/events/team.html:46
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:12
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:12
|
||||||
msgid "Rank"
|
msgid "Rank"
|
||||||
msgstr "Rang"
|
msgstr "Rang"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:56
|
#: src/accounts/templates/accounts/profile.html:56
|
||||||
msgid "Status: Member"
|
#, fuzzy
|
||||||
msgstr "Status: Mitglied"
|
#| msgid "Members"
|
||||||
|
msgid "Member"
|
||||||
|
msgstr "Mitgliede"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:58
|
#: src/accounts/templates/accounts/profile.html:58
|
||||||
msgid "Status: Visitor"
|
#, fuzzy
|
||||||
|
#| msgid "Status: Visitor"
|
||||||
|
msgid " Visitor"
|
||||||
msgstr "Status: Gast"
|
msgstr "Status: Gast"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:64
|
#: src/accounts/templates/accounts/profile.html:64
|
||||||
#: events/templates/events/team.html:57
|
#: src/events/templates/events/team.html:57
|
||||||
msgid "Categories stats"
|
msgid "Categories stats"
|
||||||
msgstr "Kategorie Statistiken"
|
msgstr "Kategorie Statistiken"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:13
|
#: src/accounts/templates/accounts/profile.html:81
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Challenge Name"
|
||||||
|
msgid "Challenges created"
|
||||||
|
msgstr "Name der Herausforderung"
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/profile.html:87
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "It seems that this user has not solved any challenge yet..."
|
||||||
|
msgid "It seems that this user has not created any challenge yet..."
|
||||||
|
msgstr "Es scheint bisher noch keiner diese Herausforderung gelöst zu haben..."
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/register.html:13
|
||||||
msgid "Welcome !"
|
msgid "Welcome !"
|
||||||
msgstr "Willkommen!"
|
msgstr "Willkommen!"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:14
|
#: src/accounts/templates/accounts/register.html:14
|
||||||
msgid "Your account has been created."
|
msgid "Your account has been created."
|
||||||
msgstr "Ihr Account wurde erstellt."
|
msgstr "Ihr Account wurde erstellt."
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:25
|
#: src/accounts/templates/accounts/register.html:25
|
||||||
msgid "Personal website"
|
msgid "Personal website"
|
||||||
msgstr "Persönliche Webseite"
|
msgstr "Persönliche Webseite"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:26
|
#: src/accounts/templates/accounts/register.html:26
|
||||||
#: events/templates/events/event_info.html:119
|
#: src/events/templates/events/event_info.html:119
|
||||||
msgid "Register"
|
msgid "Register"
|
||||||
msgstr "Registrieren"
|
msgstr "Registrieren"
|
||||||
|
|
||||||
#: accounts/views/views.py:33
|
#: src/accounts/views/views.py:33
|
||||||
msgid "Your account was inactive."
|
msgid "Your account was inactive."
|
||||||
msgstr "Ihr Account war inaktiv."
|
msgstr "Ihr Account war inaktiv."
|
||||||
|
|
||||||
#: accounts/views/views.py:52
|
#: src/accounts/views/views.py:57
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Your password must contain at least 8 characters."
|
||||||
|
msgid "The password must be at least 8 characters long."
|
||||||
|
msgstr "Ihr Passwort muss mindestens 8 Zeichen enthalten."
|
||||||
|
|
||||||
|
#: src/accounts/views/views.py:67
|
||||||
msgid ""
|
msgid ""
|
||||||
"The password must contain at least one letter and at least one digit or "
|
"The password must contain at least one letter and at least one digit or "
|
||||||
"punctuation character."
|
"punctuation character."
|
||||||
|
@ -216,424 +249,442 @@ msgstr ""
|
||||||
"Das Passwort muss mindestens einen Buchstaben und eine Ziffer oder einen "
|
"Das Passwort muss mindestens einen Buchstaben und eine Ziffer oder einen "
|
||||||
"Satzzeichen enthalten."
|
"Satzzeichen enthalten."
|
||||||
|
|
||||||
#: accounts/views/views.py:54
|
#: src/accounts/views/views.py:77
|
||||||
msgid "A user with that email already exists."
|
msgid "A user with that email already exists."
|
||||||
msgstr "Ein Nutzer mit dieser Email existiert bereits."
|
msgstr "Ein Nutzer mit dieser Email existiert bereits."
|
||||||
|
|
||||||
#: accounts/views/views.py:67
|
#: src/accounts/views/views.py:99
|
||||||
msgid "A user with that username already exists."
|
msgid "A user with that username already exists."
|
||||||
msgstr "Ein Nutzer mit diesem Nutzernamen existiert bereits."
|
msgstr "Ein Nutzer mit diesem Nutzernamen existiert bereits."
|
||||||
|
|
||||||
#: accounts/views/views.py:95
|
#: src/accounts/views/views.py:132
|
||||||
msgid "Email already taken."
|
msgid "Email already taken."
|
||||||
msgstr "Email bereits vergeben."
|
msgstr "Email bereits vergeben."
|
||||||
|
|
||||||
#: accounts/views/views.py:101
|
#: src/accounts/views/views.py:138
|
||||||
msgid "Username already taken."
|
msgid "Username already taken."
|
||||||
msgstr "Nutzername bereits vergeben."
|
msgstr "Nutzername bereits vergeben."
|
||||||
|
|
||||||
#: accounts/views/views.py:105 events/views/teams.py:124
|
#: src/accounts/views/views.py:142 src/events/views/teams.py:124
|
||||||
msgid "Updated."
|
msgid "Updated."
|
||||||
msgstr "Aktualisiert."
|
msgstr "Aktualisiert."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:12
|
#: src/ctfs/templates/ctfs/ctf_info.html:12
|
||||||
#: events/templates/events/ctf_info.html:12
|
#: src/events/templates/events/ctf_info.html:12
|
||||||
msgid "Published date"
|
msgid "Published date"
|
||||||
msgstr "Veröffentlichungsdatum"
|
msgstr "Veröffentlichungsdatum"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:16
|
#: src/ctfs/templates/ctfs/ctf_info.html:16
|
||||||
msgid "Challenge is not yet available."
|
msgid "Challenge is not yet available."
|
||||||
msgstr "Herausforderung ist noch nicht verfügbar."
|
msgstr "Herausforderung ist noch nicht verfügbar."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:29
|
#: src/ctfs/templates/ctfs/ctf_info.html:29
|
||||||
#: events/templates/events/ctf_info.html:24
|
#: src/events/templates/events/ctf_info.html:24
|
||||||
msgid "Congratulation !"
|
msgid "Congratulation !"
|
||||||
msgstr "Herzlichen Glückwunsch!"
|
msgstr "Herzlichen Glückwunsch!"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:31
|
#: src/ctfs/templates/ctfs/ctf_info.html:31
|
||||||
#: events/templates/events/ctf_info.html:26
|
#: src/events/templates/events/ctf_info.html:26
|
||||||
msgid "Already flagged"
|
msgid "Already flagged"
|
||||||
msgstr "Schon gelöst"
|
msgstr "Schon gelöst"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
|
#: src/ctfs/templates/ctfs/ctf_info.html:33
|
||||||
#: events/templates/events/ctf_info.html:36
|
#: src/ctfs/templates/ctfs/ctf_info.html:42
|
||||||
#: events/templates/events/ctf_info.html:45
|
#: src/events/templates/events/ctf_info.html:36
|
||||||
|
#: src/events/templates/events/ctf_info.html:45
|
||||||
msgid "Start the challenge"
|
msgid "Start the challenge"
|
||||||
msgstr "Herausforderung beginnen"
|
msgstr "Herausforderung beginnen"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
|
#: src/ctfs/templates/ctfs/ctf_info.html:35
|
||||||
#: events/templates/events/ctf_info.html:38
|
#: src/ctfs/templates/ctfs/ctf_info.html:44
|
||||||
#: events/templates/events/ctf_info.html:47
|
#: src/events/templates/events/ctf_info.html:38
|
||||||
|
#: src/events/templates/events/ctf_info.html:47
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "Herunterladen"
|
msgstr "Herunterladen"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:39
|
#: src/ctfs/templates/ctfs/ctf_info.html:39
|
||||||
#: events/templates/events/ctf_info.html:42
|
#: src/events/templates/events/ctf_info.html:42
|
||||||
msgid "Wrong flag ! You can do it !"
|
msgid "Wrong flag ! You can do it !"
|
||||||
msgstr "Falsche flagge! Sie können es schaffen!"
|
msgstr "Falsche flagge! Sie können es schaffen!"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:58
|
#: src/ctfs/templates/ctfs/ctf_info.html:58
|
||||||
#: events/templates/events/ctf_info.html:60
|
#: src/events/templates/events/ctf_info.html:60
|
||||||
msgid "Solved by"
|
msgid "Solved by"
|
||||||
msgstr "Gelöst von"
|
msgstr "Gelöst von"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:82
|
#: src/ctfs/templates/ctfs/ctf_info.html:82
|
||||||
#: events/templates/events/ctf_info.html:90
|
#: src/events/templates/events/ctf_info.html:90
|
||||||
msgid "Nobody has solved this challenge yet."
|
msgid "Nobody has solved this challenge yet."
|
||||||
msgstr "Bisher hat noch niemand diese Herausforderung gelöst."
|
msgstr "Bisher hat noch niemand diese Herausforderung gelöst."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:89
|
#: src/ctfs/templates/ctfs/ctf_info.html:89
|
||||||
#: events/templates/events/ctf_info.html:97
|
#: src/events/templates/events/ctf_info.html:97
|
||||||
msgid "Author"
|
msgid "Author"
|
||||||
msgstr "Autor/-in"
|
msgstr "Autor/-in"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:90
|
#: src/ctfs/templates/ctfs/ctf_info.html:90
|
||||||
#: events/templates/events/ctf_info.html:98
|
#: src/events/templates/events/ctf_info.html:98
|
||||||
msgid "Point reward"
|
msgid "Point reward"
|
||||||
msgstr "Belohnungspunkte"
|
msgstr "Belohnungspunkte"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:14
|
#: src/ctfs/templates/ctfs/ctfs_list.html:14
|
||||||
msgid "Solved"
|
msgid "Solved"
|
||||||
msgstr "Gelöst"
|
msgstr "Gelöst"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:37
|
#: src/ctfs/templates/ctfs/ctfs_list.html:37
|
||||||
msgid "No ctf available for this category."
|
msgid "No ctf available for this category."
|
||||||
msgstr "Kein CTF in dieser Kategorie verfügbar."
|
msgstr "Kein CTF in dieser Kategorie verfügbar."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:42
|
#: src/ctfs/templates/ctfs/ctfs_list.html:42
|
||||||
msgid "Categories"
|
msgid "Categories"
|
||||||
msgstr "Kategorien"
|
msgstr "Kategorien"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:48 templates/base.html:54
|
#: src/ctfs/templates/ctfs/ctfs_list.html:48 src/templates/base.html:56
|
||||||
msgid "No category available."
|
msgid "No category available."
|
||||||
msgstr "Keine Kategorie verfügbar."
|
msgstr "Keine Kategorie verfügbar."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:10
|
#: src/events/templates/events/create_team.html:10
|
||||||
#: events/templates/events/join_team.html:10
|
#: src/events/templates/events/join_team.html:10
|
||||||
msgid "This event starts at"
|
msgid "This event starts at"
|
||||||
msgstr "Dieses Ereignis beginnt am"
|
msgstr "Dieses Ereignis beginnt am"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:17
|
#: src/events/templates/events/create_team.html:17
|
||||||
#: events/templates/events/join_team.html:17
|
#: src/events/templates/events/join_team.html:17
|
||||||
msgid "You need to be registered to the event."
|
msgid "You need to be registered to the event."
|
||||||
msgstr "Sie müssen am Ereignis teilnehmen."
|
msgstr "Sie müssen am Ereignis teilnehmen."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:20 events/views/teams.py:120
|
#: src/events/templates/events/create_team.html:20
|
||||||
|
#: src/events/views/teams.py:120
|
||||||
msgid "Name already taken."
|
msgid "Name already taken."
|
||||||
msgstr "Name schon vergeben."
|
msgstr "Name schon vergeben."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:26
|
#: src/events/templates/events/create_team.html:26
|
||||||
#: events/templates/events/join_team.html:31
|
#: src/events/templates/events/join_team.html:31
|
||||||
#: events/templates/events/manage_team.html:22
|
#: src/events/templates/events/manage_team.html:22
|
||||||
msgid "Team name"
|
msgid "Team name"
|
||||||
msgstr "Teamname"
|
msgstr "Teamname"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:28
|
#: src/events/templates/events/create_team.html:28
|
||||||
#: events/templates/events/create_team.html:49
|
#: src/events/templates/events/create_team.html:49
|
||||||
#: events/templates/events/join_team.html:54
|
#: src/events/templates/events/join_team.html:54
|
||||||
msgid "Create Team"
|
msgid "Create Team"
|
||||||
msgstr "Team erstellen"
|
msgstr "Team erstellen"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:33
|
#: src/events/templates/events/create_team.html:33
|
||||||
#: events/templates/events/event_pwd.html:28
|
#: src/events/templates/events/event_pwd.html:44
|
||||||
#: events/templates/events/join_team.html:38
|
#: src/events/templates/events/join_team.html:38
|
||||||
msgid "You need to be logged to access this event."
|
msgid "You need to be logged to access this event."
|
||||||
msgstr "Sie müssen angemeldet sein um auf dieses Ereignis zuzugreifen."
|
msgstr "Sie müssen angemeldet sein um auf dieses Ereignis zuzugreifen."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:42
|
#: src/events/templates/events/create_team.html:42
|
||||||
#: events/templates/events/event_info.html:113
|
#: src/events/templates/events/event_info.html:113
|
||||||
#: events/templates/events/event_pwd.html:36
|
#: src/events/templates/events/event_pwd.html:52
|
||||||
#: events/templates/events/join_team.html:47
|
#: src/events/templates/events/join_team.html:47
|
||||||
msgid "Starts at"
|
msgid "Starts at"
|
||||||
msgstr "Beginnt am"
|
msgstr "Beginnt am"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:43
|
#: src/events/templates/events/create_team.html:43
|
||||||
#: events/templates/events/event_info.html:114
|
#: src/events/templates/events/event_info.html:114
|
||||||
#: events/templates/events/event_pwd.html:37
|
#: src/events/templates/events/event_pwd.html:53
|
||||||
#: events/templates/events/join_team.html:48
|
#: src/events/templates/events/join_team.html:48
|
||||||
msgid "Ends at"
|
msgid "Ends at"
|
||||||
msgstr "Endet am"
|
msgstr "Endet am"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:47
|
#: src/events/templates/events/create_team.html:47
|
||||||
#: events/templates/events/event_info.html:129
|
#: src/events/templates/events/event_info.html:129
|
||||||
#: events/templates/events/join_team.html:52
|
#: src/events/templates/events/join_team.html:52
|
||||||
msgid "Manage my team"
|
msgid "Manage my team"
|
||||||
msgstr "Team verwalten"
|
msgstr "Team verwalten"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:48
|
#: src/events/templates/events/create_team.html:48
|
||||||
#: events/templates/events/join_team.html:33
|
#: src/events/templates/events/join_team.html:33
|
||||||
#: events/templates/events/join_team.html:53
|
#: src/events/templates/events/join_team.html:53
|
||||||
msgid "Join Team"
|
msgid "Join Team"
|
||||||
msgstr "Team beitreten"
|
msgstr "Team beitreten"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:53
|
#: src/events/templates/events/create_team.html:53
|
||||||
#: events/templates/events/join_team.html:58
|
#: src/events/templates/events/join_team.html:58
|
||||||
msgid "Auto-matching"
|
msgid "Auto-matching"
|
||||||
msgstr "Auto-Matching"
|
msgstr "Auto-Matching"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:57
|
#: src/events/templates/events/create_team.html:57
|
||||||
#: events/templates/events/join_team.html:62
|
#: src/events/templates/events/join_team.html:62
|
||||||
msgid "Find me a team !"
|
msgid "Find me a team !"
|
||||||
msgstr "Finde mir einen Team!"
|
msgstr "Finde mir einen Team!"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:10
|
#: src/events/templates/events/ctf_info.html:10
|
||||||
msgid "Event"
|
msgid "Event"
|
||||||
msgstr "Ereignis"
|
msgstr "Ereignis"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:18
|
#: src/events/templates/events/ctf_info.html:18
|
||||||
msgid ""
|
msgid ""
|
||||||
"No translation available. Please try another language (English or French)."
|
"No translation available. Please try another language (English or French)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Keine Übersetzung verfügbar. Bitte versuchen Sie es auf einer anderen "
|
"Keine Übersetzung verfügbar. Bitte versuchen Sie es auf einer anderen "
|
||||||
"Sprache noch einmal (Englisch oder Französisch)."
|
"Sprache noch einmal (Englisch oder Französisch)."
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:28
|
#: src/events/templates/events/ctf_info.html:28
|
||||||
#: events/templates/events/event_info.html:18
|
#: src/events/templates/events/event_info.html:18
|
||||||
msgid "This event is over."
|
msgid "This event is over."
|
||||||
msgstr "Dieses Ereignis hat bereits geendet."
|
msgstr "Dieses Ereignis hat bereits geendet."
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:30
|
#: src/events/templates/events/ctf_info.html:30
|
||||||
msgid "Error while processing your request. (Invalid Form)"
|
msgid "Error while processing your request. (Invalid Form)"
|
||||||
msgstr "Fehler während der Verarbeitung ihrer Anfrage. (Ungültiges Formular)"
|
msgstr "Fehler während der Verarbeitung ihrer Anfrage. (Ungültiges Formular)"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:32
|
#: src/events/templates/events/ctf_info.html:32
|
||||||
msgid "You must register to the event before submitting flags."
|
msgid "You must register to the event before submitting flags."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:34
|
#: src/events/templates/events/ctf_info.html:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is a team event, please create or join a team before submitting flags."
|
"This is a team event, please create or join a team before submitting flags."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:9
|
#: src/events/templates/events/event_info.html:9
|
||||||
msgid "Subscriptions is over."
|
msgid "Subscriptions is over."
|
||||||
msgstr "Die Registrierung hat geendet."
|
msgstr "Die Registrierung hat geendet."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:12
|
#: src/events/templates/events/event_info.html:12
|
||||||
#: events/templates/events/event_pwd.html:18
|
#: src/events/templates/events/event_pwd.html:33
|
||||||
msgid "You're already registered to this event."
|
msgid "You're already registered to this event."
|
||||||
msgstr "Sie haben sich schon für dieses Ereignis registriert."
|
msgstr "Sie haben sich schon für dieses Ereignis registriert."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:20
|
#: src/events/templates/events/event_info.html:20
|
||||||
#: events/templates/events/event_pwd.html:9
|
#: src/events/templates/events/event_pwd.html:9
|
||||||
msgid "This event start at"
|
msgid "This event start at"
|
||||||
msgstr "Dieses Ereignis startet am"
|
msgstr "Dieses Ereignis startet am"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:30
|
#: src/events/templates/events/event_info.html:30
|
||||||
msgid "Challenges"
|
msgid "Challenges"
|
||||||
msgstr "Herausforderungen"
|
msgstr "Herausforderungen"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:47
|
#: src/events/templates/events/event_info.html:47
|
||||||
msgid "No challenges available."
|
msgid "No challenges available."
|
||||||
msgstr "Keine Herausforderung verfügbar."
|
msgstr "Keine Herausforderung verfügbar."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:51
|
#: src/events/templates/events/event_info.html:51
|
||||||
msgid "The event has not started yet."
|
msgid "The event has not started yet."
|
||||||
msgstr "Das Ereignis hat noch nicht begonnen."
|
msgstr "Das Ereignis hat noch nicht begonnen."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:57
|
#: src/events/templates/events/event_info.html:57
|
||||||
msgid "ScoreBoard"
|
msgid "ScoreBoard"
|
||||||
msgstr "Punktestand"
|
msgstr "Punktestand"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:88
|
#: src/events/templates/events/event_info.html:88
|
||||||
msgid "Team"
|
msgid "Team"
|
||||||
msgstr "Team"
|
msgstr "Team"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:106
|
#: src/events/templates/events/event_info.html:106
|
||||||
msgid "No one have earn point yet, you gonna be the first ?"
|
msgid "No one have earn point yet, you gonna be the first ?"
|
||||||
msgstr "Niemand hat bisher Punkte verdient, werden Sie der erste sein?"
|
msgstr "Niemand hat bisher Punkte verdient, werden Sie der erste sein?"
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:15
|
#: src/events/templates/events/event_pwd.html:16
|
||||||
#: events/templates/events/join_team.html:22
|
msgid ""
|
||||||
|
"This event is reserved for one or more 42 campuses. If you have not "
|
||||||
|
"connected your intranet to 42CTF, you can do so with this button: "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/events/templates/events/event_pwd.html:25
|
||||||
|
msgid ""
|
||||||
|
"This event is reserved for one or more 42 campuses. And unfortunately your "
|
||||||
|
"campus can't participate. Do not hesitate to contact us to organize an event "
|
||||||
|
"on your campus!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/events/templates/events/event_pwd.html:30
|
||||||
|
#: src/events/templates/events/join_team.html:22
|
||||||
msgid "Wrong password submited."
|
msgid "Wrong password submited."
|
||||||
msgstr "Falsches Passwort eingetragen."
|
msgstr "Falsches Passwort eingetragen."
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:20
|
#: src/events/templates/events/event_pwd.html:35
|
||||||
msgid "This event is password protected"
|
msgid "This event is password protected"
|
||||||
msgstr "Dieses Ereignis ist passwortgeschützt"
|
msgstr "Dieses Ereignis ist passwortgeschützt"
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:21
|
#: src/events/templates/events/event_pwd.html:36
|
||||||
msgid "You need to submit the event password to gain access to this event."
|
msgid "You need to submit the event password to gain access to this event."
|
||||||
msgstr "Sie müssen das Ereignispasswort eintragen um darauf zuzugreifen."
|
msgstr "Sie müssen das Ereignispasswort eintragen um darauf zuzugreifen."
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:6 templates/base.html:61
|
#: src/events/templates/events/events_list.html:6 src/templates/base.html:65
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "Ereignisse"
|
msgstr "Ereignisse"
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:38
|
#: src/events/templates/events/events_list.html:38
|
||||||
msgid "See more"
|
msgid "See more"
|
||||||
msgstr "Weiter"
|
msgstr "Weiter"
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:44
|
#: src/events/templates/events/events_list.html:44
|
||||||
msgid "No events available."
|
msgid "No events available."
|
||||||
msgstr "Keine Ereignisse verfügbar."
|
msgstr "Keine Ereignisse verfügbar."
|
||||||
|
|
||||||
#: events/templates/events/join_team.html:20
|
#: src/events/templates/events/join_team.html:20
|
||||||
msgid "Team does not exist."
|
msgid "Team does not exist."
|
||||||
msgstr "Team existiert nicht."
|
msgstr "Team existiert nicht."
|
||||||
|
|
||||||
#: events/templates/events/join_team.html:24
|
#: src/events/templates/events/join_team.html:24
|
||||||
msgid "Maximum size reached."
|
msgid "Maximum size reached."
|
||||||
msgstr "Maximale Mitgliederanzahl erreicht."
|
msgstr "Maximale Mitgliederanzahl erreicht."
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:26
|
#: src/events/templates/events/manage_team.html:26
|
||||||
msgid "Team password"
|
msgid "Team password"
|
||||||
msgstr "Teampasswort"
|
msgstr "Teampasswort"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:29
|
#: src/events/templates/events/manage_team.html:29
|
||||||
msgid "Apply"
|
msgid "Apply"
|
||||||
msgstr "Anwenden"
|
msgstr "Anwenden"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:44
|
#: src/events/templates/events/manage_team.html:44
|
||||||
#: events/templates/events/team.html:49
|
#: src/events/templates/events/team.html:49
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "Mitgliede"
|
msgstr "Mitgliede"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:52
|
#: src/events/templates/events/manage_team.html:52
|
||||||
msgid "Leave Team"
|
msgid "Leave Team"
|
||||||
msgstr "Team verlassen"
|
msgstr "Team verlassen"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:59
|
#: src/events/templates/events/manage_team.html:59
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Auto-matching"
|
#| msgid "Auto-matching"
|
||||||
msgid "Open to automatching"
|
msgid "Open to automatching"
|
||||||
msgstr "Auto-Matching"
|
msgstr "Auto-Matching"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:66
|
#: src/events/templates/events/manage_team.html:66
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Auto-matching"
|
#| msgid "Auto-matching"
|
||||||
msgid "Close to automatching"
|
msgid "Close to automatching"
|
||||||
msgstr "Auto-Matching"
|
msgstr "Auto-Matching"
|
||||||
|
|
||||||
#: events/templates/events/team.html:38
|
#: src/events/templates/events/team.html:38
|
||||||
msgid "It seems that this team has not solved any challenge yet..."
|
msgid "It seems that this team has not solved any challenge yet..."
|
||||||
msgstr "Dieses Team scheint noch keine Herausforderung gelöst zu haben..."
|
msgstr "Dieses Team scheint noch keine Herausforderung gelöst zu haben..."
|
||||||
|
|
||||||
#: home/templates/home/home.html:21
|
#: src/home/templates/home/home.html:21
|
||||||
msgid "Weekly Top 5"
|
msgid "Weekly Top 5"
|
||||||
msgstr "Top 5 der Woche"
|
msgstr "Top 5 der Woche"
|
||||||
|
|
||||||
#: home/templates/home/home.html:48
|
#: src/home/templates/home/home.html:48
|
||||||
msgid "No article available."
|
msgid "No article available."
|
||||||
msgstr "Kein Artikel verfügbar."
|
msgstr "Kein Artikel verfügbar."
|
||||||
|
|
||||||
#: home/templates/home/home.html:53
|
#: src/home/templates/home/home.html:53
|
||||||
msgid "Latest challenges added"
|
msgid "Latest challenges added"
|
||||||
msgstr "Neue Herausforderungen"
|
msgstr "Neue Herausforderungen"
|
||||||
|
|
||||||
#: home/templates/home/home.html:58
|
#: src/home/templates/home/home.html:58
|
||||||
msgid "points"
|
msgid "points"
|
||||||
msgstr "Punkte"
|
msgstr "Punkte"
|
||||||
|
|
||||||
#: home/templates/home/home.html:62
|
#: src/home/templates/home/home.html:62
|
||||||
msgid "No ctf available."
|
msgid "No ctf available."
|
||||||
msgstr "Kein CTF verfügbar."
|
msgstr "Kein CTF verfügbar."
|
||||||
|
|
||||||
#: home/templates/home/home.html:66
|
#: src/home/templates/home/home.html:66
|
||||||
msgid "Latest Flags"
|
msgid "Latest Flags"
|
||||||
msgstr "Letzte Flaggen"
|
msgstr "Letzte Flaggen"
|
||||||
|
|
||||||
#: home/templates/home/home.html:80
|
#: src/home/templates/home/home.html:80
|
||||||
msgid "Flags"
|
msgid "Flags"
|
||||||
msgstr "Flaggen"
|
msgstr "Flaggen"
|
||||||
|
|
||||||
#: home/templates/home/home.html:86
|
#: src/home/templates/home/home.html:86
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "Nutzer"
|
msgstr "Nutzer"
|
||||||
|
|
||||||
#: project/settings.py:116
|
#: src/project/settings.py:116
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr "Englisch"
|
msgstr "Englisch"
|
||||||
|
|
||||||
#: project/settings.py:117
|
#: src/project/settings.py:117
|
||||||
msgid "German"
|
msgid "German"
|
||||||
msgstr "Deutsch"
|
msgstr "Deutsch"
|
||||||
|
|
||||||
#: project/settings.py:118
|
#: src/project/settings.py:118
|
||||||
msgid "French"
|
msgid "French"
|
||||||
msgstr "Französisch"
|
msgstr "Französisch"
|
||||||
|
|
||||||
#: project/settings.py:119
|
#: src/project/settings.py:119
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Russisch"
|
msgstr "Russisch"
|
||||||
|
|
||||||
#: project/settings.py:120
|
#: src/project/settings.py:120
|
||||||
msgid "Japanese"
|
msgid "Japanese"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: project/settings.py:121
|
#: src/project/settings.py:121
|
||||||
msgid "Spanish"
|
msgid "Spanish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:38
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:15
|
||||||
|
msgid "Campus"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:46
|
||||||
msgid "First"
|
msgid "First"
|
||||||
msgstr "Erste"
|
msgstr "Erste"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:39
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:47
|
||||||
msgid "Previous"
|
msgid "Previous"
|
||||||
msgstr "Vorherige"
|
msgstr "Vorherige"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:43
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:51
|
||||||
msgid "Page "
|
msgid "Page "
|
||||||
msgstr "Seite "
|
msgstr "Seite "
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:47
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:55
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Nächste"
|
msgstr "Nächste"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:48
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:56
|
||||||
msgid "Last"
|
msgid "Last"
|
||||||
msgstr "Letzte"
|
msgstr "Letzte"
|
||||||
|
|
||||||
#: templates/base.html:59
|
#: src/templates/base.html:62
|
||||||
msgid "Scoreboard"
|
msgid "Scoreboard"
|
||||||
msgstr "Punktestand"
|
msgstr "Punktestand"
|
||||||
|
|
||||||
#: templates/base.html:64
|
#: src/templates/base.html:83
|
||||||
msgid "Resources"
|
#, fuzzy
|
||||||
msgstr "Ressourcen"
|
#| msgid "Become a Patron!"
|
||||||
|
msgid "Become a member"
|
||||||
|
msgstr "Unterstützen Sie uns!"
|
||||||
|
|
||||||
#: templates/base.html:93
|
#: src/templates/base.html:93
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Abmelden"
|
msgstr "Abmelden"
|
||||||
|
|
||||||
#: templates/base.html:100
|
#: src/templates/base.html:100
|
||||||
msgid "Sign Up"
|
msgid "Sign Up"
|
||||||
msgstr "Registrieren"
|
msgstr "Registrieren"
|
||||||
|
|
||||||
#: templates/base.html:135
|
#: src/templates/registration/password_reset_complete.html:11
|
||||||
msgid "Become a Patron!"
|
|
||||||
msgstr "Unterstützen Sie uns!"
|
|
||||||
|
|
||||||
#: templates/registration/password_reset_complete.html:11
|
|
||||||
msgid "Your new password has been set."
|
msgid "Your new password has been set."
|
||||||
msgstr "Ihr neues Passwort wurde festgelegt."
|
msgstr "Ihr neues Passwort wurde festgelegt."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:20
|
#: src/templates/registration/password_reset_confirm.html:20
|
||||||
msgid "Your password can’t be too similar to your other personal information."
|
msgid "Your password can’t be too similar to your other personal information."
|
||||||
msgstr "Ihr Passwort kann nicht zu ähnlich zu ihren persönlichen Daten sein."
|
msgstr "Ihr Passwort kann nicht zu ähnlich zu ihren persönlichen Daten sein."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:21
|
#: src/templates/registration/password_reset_confirm.html:21
|
||||||
msgid "Your password must contain at least 8 characters."
|
msgid "Your password must contain at least 8 characters."
|
||||||
msgstr "Ihr Passwort muss mindestens 8 Zeichen enthalten."
|
msgstr "Ihr Passwort muss mindestens 8 Zeichen enthalten."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:22
|
#: src/templates/registration/password_reset_confirm.html:22
|
||||||
msgid "Your password can’t be a commonly used password."
|
msgid "Your password can’t be a commonly used password."
|
||||||
msgstr "Ihr Passwort kann nicht ein häufig benutztes Passwort sein."
|
msgstr "Ihr Passwort kann nicht ein häufig benutztes Passwort sein."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:23
|
#: src/templates/registration/password_reset_confirm.html:23
|
||||||
msgid "Your password can’t be entirely numeric."
|
msgid "Your password can’t be entirely numeric."
|
||||||
msgstr "Ihr Passwort kann nicht nur Ziffern enthalten."
|
msgstr "Ihr Passwort kann nicht nur Ziffern enthalten."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:26
|
#: src/templates/registration/password_reset_confirm.html:26
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "Bestätigen"
|
msgstr "Bestätigen"
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:28
|
#: src/templates/registration/password_reset_confirm.html:28
|
||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr "Einreichen"
|
msgstr "Einreichen"
|
||||||
|
|
||||||
#: templates/registration/password_reset_done.html:11
|
#: src/templates/registration/password_reset_done.html:11
|
||||||
msgid ""
|
msgid ""
|
||||||
"We've emailed you instructions for setting your password. You should receive "
|
"We've emailed you instructions for setting your password. You should receive "
|
||||||
"the email shortly!"
|
"the email shortly!"
|
||||||
|
@ -641,10 +692,16 @@ msgstr ""
|
||||||
"Wir haben Ihnen eine Anleitung um Ihren Passwort zurückzusetzen per Email "
|
"Wir haben Ihnen eine Anleitung um Ihren Passwort zurückzusetzen per Email "
|
||||||
"geschickt. Sie sollten sie in Kürze empfangen!"
|
"geschickt. Sie sollten sie in Kürze empfangen!"
|
||||||
|
|
||||||
#: templates/registration/password_reset_form.html:16
|
#: src/templates/registration/password_reset_form.html:16
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
msgstr "Zurücksetzen"
|
msgstr "Zurücksetzen"
|
||||||
|
|
||||||
|
#~ msgid "Status: Member"
|
||||||
|
#~ msgstr "Status: Mitglied"
|
||||||
|
|
||||||
|
#~ msgid "Resources"
|
||||||
|
#~ msgstr "Ressourcen"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "Error: you're not registered to this event, so you can't register scores, "
|
#~ "Error: you're not registered to this event, so you can't register scores, "
|
||||||
#~ "fucking logic."
|
#~ "fucking logic."
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
|
"POT-Creation-Date: 2022-08-16 19:28+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -18,614 +18,653 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:8
|
#: src/accounts/templates/accounts/delete.html:8
|
||||||
msgid "Delete account"
|
msgid "Delete account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:11
|
#: src/accounts/templates/accounts/delete.html:11
|
||||||
msgid "Please confirm your password to delete your account."
|
msgid "Please confirm your password to delete your account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:12
|
#: src/accounts/templates/accounts/delete.html:12
|
||||||
msgid "Deleted accounts cannot be recovered."
|
msgid "Deleted accounts cannot be recovered."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:15
|
#: src/accounts/templates/accounts/delete.html:15
|
||||||
msgid "Password incorrect."
|
msgid "Password incorrect."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:17
|
#: src/accounts/templates/accounts/delete.html:17
|
||||||
msgid "Your account has been deleted."
|
msgid "Your account has been deleted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:22
|
#: src/accounts/templates/accounts/delete.html:22
|
||||||
#: accounts/templates/accounts/login.html:19
|
#: src/accounts/templates/accounts/login.html:19
|
||||||
#: accounts/templates/accounts/register.html:23
|
#: src/accounts/templates/accounts/register.html:23
|
||||||
#: events/templates/events/create_team.html:27
|
#: src/events/templates/events/create_team.html:27
|
||||||
#: events/templates/events/join_team.html:32
|
#: src/events/templates/events/join_team.html:32
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:21
|
#: src/accounts/templates/accounts/edit.html:21
|
||||||
#: accounts/templates/accounts/login.html:18
|
#: src/accounts/templates/accounts/login.html:18
|
||||||
#: accounts/templates/accounts/register.html:22
|
#: src/accounts/templates/accounts/register.html:22
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
|
#: src/ctfs/templates/ctfs/ctf_info.html:63
|
||||||
#: events/templates/events/ctf_info.html:65
|
#: src/ctfs/templates/ctfs/ctfs_list.html:12
|
||||||
#: events/templates/events/event_info.html:64
|
#: src/events/templates/events/ctf_info.html:65
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:13
|
#: src/events/templates/events/event_info.html:64
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:13
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:25
|
#: src/accounts/templates/accounts/edit.html:25
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:30
|
#: src/accounts/templates/accounts/edit.html:30
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:64
|
#: src/ctfs/templates/ctfs/ctf_info.html:64
|
||||||
#: events/templates/events/ctf_info.html:66
|
#: src/events/templates/events/ctf_info.html:66
|
||||||
#: events/templates/events/event_info.html:65
|
#: src/events/templates/events/event_info.html:65
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:14
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:14
|
||||||
msgid "Website"
|
msgid "Website"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:36
|
#: src/accounts/templates/accounts/edit.html:36
|
||||||
msgid " Apply"
|
msgid " Apply"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:45
|
#: src/accounts/templates/accounts/edit.html:45
|
||||||
msgid "Connected accounts"
|
msgid "Connected accounts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:53
|
#: src/accounts/templates/accounts/edit.html:53
|
||||||
msgid "Disconnect Discord"
|
msgid "Disconnect Discord"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:59
|
#: src/accounts/templates/accounts/edit.html:59
|
||||||
msgid "Connect Discord"
|
msgid "Connect Discord"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:70
|
#: src/accounts/templates/accounts/edit.html:68
|
||||||
#: accounts/templates/accounts/profile.html:46
|
msgid "Disconnect 42"
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
|
msgstr ""
|
||||||
#: events/templates/events/event_info.html:66
|
|
||||||
#: events/templates/events/event_info.html:89
|
#: src/accounts/templates/accounts/edit.html:74
|
||||||
#: events/templates/events/manage_team.html:40
|
#: src/events/templates/events/event_pwd.html:19
|
||||||
#: events/templates/events/team.html:45
|
msgid "Connect 42"
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:15
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/edit.html:85
|
||||||
|
#: src/accounts/templates/accounts/profile.html:46
|
||||||
|
#: src/ctfs/templates/ctfs/ctf_info.html:65
|
||||||
|
#: src/ctfs/templates/ctfs/ctfs_list.html:13
|
||||||
|
#: src/events/templates/events/event_info.html:66
|
||||||
|
#: src/events/templates/events/event_info.html:89
|
||||||
|
#: src/events/templates/events/manage_team.html:40
|
||||||
|
#: src/events/templates/events/team.html:45
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:16
|
||||||
msgid "Score"
|
msgid "Score"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:78
|
#: src/accounts/templates/accounts/edit.html:93
|
||||||
#: accounts/templates/accounts/profile.html:60
|
#: src/accounts/templates/accounts/profile.html:60
|
||||||
msgid "Registered since"
|
msgid "Registered since"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:84
|
#: src/accounts/templates/accounts/edit.html:99
|
||||||
msgid " Delete my account"
|
msgid " Delete my account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:13
|
#: src/accounts/templates/accounts/login.html:13
|
||||||
msgid "Please, verify your infos."
|
msgid "Please, verify your infos."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:22
|
#: src/accounts/templates/accounts/login.html:22
|
||||||
msgid "Reset password"
|
msgid "Reset password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:31
|
#: src/accounts/templates/accounts/login.html:31
|
||||||
#: accounts/templates/accounts/register.html:38 templates/base.html:97
|
#: src/accounts/templates/accounts/register.html:37 src/templates/base.html:97
|
||||||
#: templates/registration/password_reset_complete.html:18
|
#: src/templates/registration/password_reset_complete.html:18
|
||||||
#: templates/registration/password_reset_confirm.html:38
|
#: src/templates/registration/password_reset_confirm.html:38
|
||||||
#: templates/registration/password_reset_done.html:18
|
#: src/templates/registration/password_reset_done.html:18
|
||||||
#: templates/registration/password_reset_form.html:26
|
#: src/templates/registration/password_reset_form.html:26
|
||||||
msgid "Login"
|
msgid "Login"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:32
|
#: src/accounts/templates/accounts/login.html:32
|
||||||
#: accounts/templates/accounts/register.html:37
|
#: src/accounts/templates/accounts/register.html:36
|
||||||
#: templates/registration/password_reset_complete.html:19
|
#: src/templates/registration/password_reset_complete.html:19
|
||||||
#: templates/registration/password_reset_confirm.html:39
|
#: src/templates/registration/password_reset_confirm.html:39
|
||||||
#: templates/registration/password_reset_done.html:19
|
#: src/templates/registration/password_reset_done.html:19
|
||||||
#: templates/registration/password_reset_form.html:27
|
#: src/templates/registration/password_reset_form.html:27
|
||||||
msgid "Sign up"
|
msgid "Sign up"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:10
|
#: src/accounts/templates/accounts/profile.html:10
|
||||||
msgid "Challenges Solved by"
|
msgid "Challenges Solved by"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:21
|
#: src/accounts/templates/accounts/profile.html:21
|
||||||
#: events/templates/events/team.html:20
|
#: src/events/templates/events/team.html:20
|
||||||
msgid "Challenge Name"
|
msgid "Challenge Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:22
|
#: src/accounts/templates/accounts/profile.html:22
|
||||||
#: events/templates/events/team.html:21
|
#: src/events/templates/events/team.html:21
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:23
|
#: src/accounts/templates/accounts/profile.html:23
|
||||||
#: events/templates/events/team.html:22
|
#: src/events/templates/events/team.html:22
|
||||||
msgid "Points"
|
msgid "Points"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:24
|
#: src/accounts/templates/accounts/profile.html:24
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:66
|
#: src/ctfs/templates/ctfs/ctf_info.html:66
|
||||||
#: events/templates/events/ctf_info.html:67
|
#: src/events/templates/events/ctf_info.html:67
|
||||||
#: events/templates/events/team.html:23
|
#: src/events/templates/events/team.html:23
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:39
|
#: src/accounts/templates/accounts/profile.html:39
|
||||||
msgid "It seems that this user has not solved any challenge yet..."
|
msgid "It seems that this user has not solved any challenge yet..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:47
|
#: src/accounts/templates/accounts/profile.html:47
|
||||||
#: events/templates/events/event_info.html:63
|
#: src/events/templates/events/event_info.html:63
|
||||||
#: events/templates/events/event_info.html:87
|
#: src/events/templates/events/event_info.html:87
|
||||||
#: events/templates/events/manage_team.html:41
|
#: src/events/templates/events/manage_team.html:41
|
||||||
#: events/templates/events/team.html:46
|
#: src/events/templates/events/team.html:46
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:12
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:12
|
||||||
msgid "Rank"
|
msgid "Rank"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:56
|
#: src/accounts/templates/accounts/profile.html:56
|
||||||
msgid "Status: Member"
|
msgid "Member"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:58
|
#: src/accounts/templates/accounts/profile.html:58
|
||||||
msgid "Status: Visitor"
|
msgid " Visitor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:64
|
#: src/accounts/templates/accounts/profile.html:64
|
||||||
#: events/templates/events/team.html:57
|
#: src/events/templates/events/team.html:57
|
||||||
msgid "Categories stats"
|
msgid "Categories stats"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:13
|
#: src/accounts/templates/accounts/profile.html:81
|
||||||
|
msgid "Challenges created"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/profile.html:87
|
||||||
|
msgid "It seems that this user has not created any challenge yet..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/register.html:13
|
||||||
msgid "Welcome !"
|
msgid "Welcome !"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:14
|
#: src/accounts/templates/accounts/register.html:14
|
||||||
msgid "Your account has been created."
|
msgid "Your account has been created."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:25
|
#: src/accounts/templates/accounts/register.html:25
|
||||||
msgid "Personal website"
|
msgid "Personal website"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:26
|
#: src/accounts/templates/accounts/register.html:26
|
||||||
#: events/templates/events/event_info.html:119
|
#: src/events/templates/events/event_info.html:119
|
||||||
msgid "Register"
|
msgid "Register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/views/views.py:33
|
#: src/accounts/views/views.py:33
|
||||||
msgid "Your account was inactive."
|
msgid "Your account was inactive."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/views/views.py:52
|
#: src/accounts/views/views.py:57
|
||||||
|
msgid "The password must be at least 8 characters long."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/accounts/views/views.py:67
|
||||||
msgid ""
|
msgid ""
|
||||||
"The password must contain at least one letter and at least one digit or "
|
"The password must contain at least one letter and at least one digit or "
|
||||||
"punctuation character."
|
"punctuation character."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/views/views.py:54
|
#: src/accounts/views/views.py:77
|
||||||
msgid "A user with that email already exists."
|
msgid "A user with that email already exists."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/views/views.py:67
|
#: src/accounts/views/views.py:99
|
||||||
msgid "A user with that username already exists."
|
msgid "A user with that username already exists."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/views/views.py:95
|
#: src/accounts/views/views.py:132
|
||||||
msgid "Email already taken."
|
msgid "Email already taken."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/views/views.py:101
|
#: src/accounts/views/views.py:138
|
||||||
msgid "Username already taken."
|
msgid "Username already taken."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/views/views.py:105 events/views/teams.py:124
|
#: src/accounts/views/views.py:142 src/events/views/teams.py:124
|
||||||
msgid "Updated."
|
msgid "Updated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:12
|
#: src/ctfs/templates/ctfs/ctf_info.html:12
|
||||||
#: events/templates/events/ctf_info.html:12
|
#: src/events/templates/events/ctf_info.html:12
|
||||||
msgid "Published date"
|
msgid "Published date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:16
|
#: src/ctfs/templates/ctfs/ctf_info.html:16
|
||||||
msgid "Challenge is not yet available."
|
msgid "Challenge is not yet available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:29
|
#: src/ctfs/templates/ctfs/ctf_info.html:29
|
||||||
#: events/templates/events/ctf_info.html:24
|
#: src/events/templates/events/ctf_info.html:24
|
||||||
msgid "Congratulation !"
|
msgid "Congratulation !"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:31
|
#: src/ctfs/templates/ctfs/ctf_info.html:31
|
||||||
#: events/templates/events/ctf_info.html:26
|
#: src/events/templates/events/ctf_info.html:26
|
||||||
msgid "Already flagged"
|
msgid "Already flagged"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
|
#: src/ctfs/templates/ctfs/ctf_info.html:33
|
||||||
#: events/templates/events/ctf_info.html:36
|
#: src/ctfs/templates/ctfs/ctf_info.html:42
|
||||||
#: events/templates/events/ctf_info.html:45
|
#: src/events/templates/events/ctf_info.html:36
|
||||||
|
#: src/events/templates/events/ctf_info.html:45
|
||||||
msgid "Start the challenge"
|
msgid "Start the challenge"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
|
#: src/ctfs/templates/ctfs/ctf_info.html:35
|
||||||
#: events/templates/events/ctf_info.html:38
|
#: src/ctfs/templates/ctfs/ctf_info.html:44
|
||||||
#: events/templates/events/ctf_info.html:47
|
#: src/events/templates/events/ctf_info.html:38
|
||||||
|
#: src/events/templates/events/ctf_info.html:47
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:39
|
#: src/ctfs/templates/ctfs/ctf_info.html:39
|
||||||
#: events/templates/events/ctf_info.html:42
|
#: src/events/templates/events/ctf_info.html:42
|
||||||
msgid "Wrong flag ! You can do it !"
|
msgid "Wrong flag ! You can do it !"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:58
|
#: src/ctfs/templates/ctfs/ctf_info.html:58
|
||||||
#: events/templates/events/ctf_info.html:60
|
#: src/events/templates/events/ctf_info.html:60
|
||||||
msgid "Solved by"
|
msgid "Solved by"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:82
|
#: src/ctfs/templates/ctfs/ctf_info.html:82
|
||||||
#: events/templates/events/ctf_info.html:90
|
#: src/events/templates/events/ctf_info.html:90
|
||||||
msgid "Nobody has solved this challenge yet."
|
msgid "Nobody has solved this challenge yet."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:89
|
#: src/ctfs/templates/ctfs/ctf_info.html:89
|
||||||
#: events/templates/events/ctf_info.html:97
|
#: src/events/templates/events/ctf_info.html:97
|
||||||
msgid "Author"
|
msgid "Author"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:90
|
#: src/ctfs/templates/ctfs/ctf_info.html:90
|
||||||
#: events/templates/events/ctf_info.html:98
|
#: src/events/templates/events/ctf_info.html:98
|
||||||
msgid "Point reward"
|
msgid "Point reward"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:14
|
#: src/ctfs/templates/ctfs/ctfs_list.html:14
|
||||||
msgid "Solved"
|
msgid "Solved"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:37
|
#: src/ctfs/templates/ctfs/ctfs_list.html:37
|
||||||
msgid "No ctf available for this category."
|
msgid "No ctf available for this category."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:42
|
#: src/ctfs/templates/ctfs/ctfs_list.html:42
|
||||||
msgid "Categories"
|
msgid "Categories"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:48 templates/base.html:54
|
#: src/ctfs/templates/ctfs/ctfs_list.html:48 src/templates/base.html:56
|
||||||
msgid "No category available."
|
msgid "No category available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:10
|
#: src/events/templates/events/create_team.html:10
|
||||||
#: events/templates/events/join_team.html:10
|
#: src/events/templates/events/join_team.html:10
|
||||||
msgid "This event starts at"
|
msgid "This event starts at"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:17
|
#: src/events/templates/events/create_team.html:17
|
||||||
#: events/templates/events/join_team.html:17
|
#: src/events/templates/events/join_team.html:17
|
||||||
msgid "You need to be registered to the event."
|
msgid "You need to be registered to the event."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:20 events/views/teams.py:120
|
#: src/events/templates/events/create_team.html:20
|
||||||
|
#: src/events/views/teams.py:120
|
||||||
msgid "Name already taken."
|
msgid "Name already taken."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:26
|
#: src/events/templates/events/create_team.html:26
|
||||||
#: events/templates/events/join_team.html:31
|
#: src/events/templates/events/join_team.html:31
|
||||||
#: events/templates/events/manage_team.html:22
|
#: src/events/templates/events/manage_team.html:22
|
||||||
msgid "Team name"
|
msgid "Team name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:28
|
#: src/events/templates/events/create_team.html:28
|
||||||
#: events/templates/events/create_team.html:49
|
#: src/events/templates/events/create_team.html:49
|
||||||
#: events/templates/events/join_team.html:54
|
#: src/events/templates/events/join_team.html:54
|
||||||
msgid "Create Team"
|
msgid "Create Team"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:33
|
#: src/events/templates/events/create_team.html:33
|
||||||
#: events/templates/events/event_pwd.html:28
|
#: src/events/templates/events/event_pwd.html:44
|
||||||
#: events/templates/events/join_team.html:38
|
#: src/events/templates/events/join_team.html:38
|
||||||
msgid "You need to be logged to access this event."
|
msgid "You need to be logged to access this event."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:42
|
#: src/events/templates/events/create_team.html:42
|
||||||
#: events/templates/events/event_info.html:113
|
#: src/events/templates/events/event_info.html:113
|
||||||
#: events/templates/events/event_pwd.html:36
|
#: src/events/templates/events/event_pwd.html:52
|
||||||
#: events/templates/events/join_team.html:47
|
#: src/events/templates/events/join_team.html:47
|
||||||
msgid "Starts at"
|
msgid "Starts at"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:43
|
#: src/events/templates/events/create_team.html:43
|
||||||
#: events/templates/events/event_info.html:114
|
#: src/events/templates/events/event_info.html:114
|
||||||
#: events/templates/events/event_pwd.html:37
|
#: src/events/templates/events/event_pwd.html:53
|
||||||
#: events/templates/events/join_team.html:48
|
#: src/events/templates/events/join_team.html:48
|
||||||
msgid "Ends at"
|
msgid "Ends at"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:47
|
#: src/events/templates/events/create_team.html:47
|
||||||
#: events/templates/events/event_info.html:129
|
#: src/events/templates/events/event_info.html:129
|
||||||
#: events/templates/events/join_team.html:52
|
#: src/events/templates/events/join_team.html:52
|
||||||
msgid "Manage my team"
|
msgid "Manage my team"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:48
|
#: src/events/templates/events/create_team.html:48
|
||||||
#: events/templates/events/join_team.html:33
|
#: src/events/templates/events/join_team.html:33
|
||||||
#: events/templates/events/join_team.html:53
|
#: src/events/templates/events/join_team.html:53
|
||||||
msgid "Join Team"
|
msgid "Join Team"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:53
|
#: src/events/templates/events/create_team.html:53
|
||||||
#: events/templates/events/join_team.html:58
|
#: src/events/templates/events/join_team.html:58
|
||||||
msgid "Auto-matching"
|
msgid "Auto-matching"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:57
|
#: src/events/templates/events/create_team.html:57
|
||||||
#: events/templates/events/join_team.html:62
|
#: src/events/templates/events/join_team.html:62
|
||||||
msgid "Find me a team !"
|
msgid "Find me a team !"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:10
|
#: src/events/templates/events/ctf_info.html:10
|
||||||
msgid "Event"
|
msgid "Event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:18
|
#: src/events/templates/events/ctf_info.html:18
|
||||||
msgid ""
|
msgid ""
|
||||||
"No translation available. Please try another language (English or French)."
|
"No translation available. Please try another language (English or French)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:28
|
#: src/events/templates/events/ctf_info.html:28
|
||||||
#: events/templates/events/event_info.html:18
|
#: src/events/templates/events/event_info.html:18
|
||||||
msgid "This event is over."
|
msgid "This event is over."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:30
|
#: src/events/templates/events/ctf_info.html:30
|
||||||
msgid "Error while processing your request. (Invalid Form)"
|
msgid "Error while processing your request. (Invalid Form)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:32
|
#: src/events/templates/events/ctf_info.html:32
|
||||||
msgid "You must register to the event before submitting flags."
|
msgid "You must register to the event before submitting flags."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:34
|
#: src/events/templates/events/ctf_info.html:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is a team event, please create or join a team before submitting flags."
|
"This is a team event, please create or join a team before submitting flags."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:9
|
#: src/events/templates/events/event_info.html:9
|
||||||
msgid "Subscriptions is over."
|
msgid "Subscriptions is over."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:12
|
#: src/events/templates/events/event_info.html:12
|
||||||
#: events/templates/events/event_pwd.html:18
|
#: src/events/templates/events/event_pwd.html:33
|
||||||
msgid "You're already registered to this event."
|
msgid "You're already registered to this event."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:20
|
#: src/events/templates/events/event_info.html:20
|
||||||
#: events/templates/events/event_pwd.html:9
|
#: src/events/templates/events/event_pwd.html:9
|
||||||
msgid "This event start at"
|
msgid "This event start at"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:30
|
#: src/events/templates/events/event_info.html:30
|
||||||
msgid "Challenges"
|
msgid "Challenges"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:47
|
#: src/events/templates/events/event_info.html:47
|
||||||
msgid "No challenges available."
|
msgid "No challenges available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:51
|
#: src/events/templates/events/event_info.html:51
|
||||||
msgid "The event has not started yet."
|
msgid "The event has not started yet."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:57
|
#: src/events/templates/events/event_info.html:57
|
||||||
msgid "ScoreBoard"
|
msgid "ScoreBoard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:88
|
#: src/events/templates/events/event_info.html:88
|
||||||
msgid "Team"
|
msgid "Team"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:106
|
#: src/events/templates/events/event_info.html:106
|
||||||
msgid "No one have earn point yet, you gonna be the first ?"
|
msgid "No one have earn point yet, you gonna be the first ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:15
|
#: src/events/templates/events/event_pwd.html:16
|
||||||
#: events/templates/events/join_team.html:22
|
msgid ""
|
||||||
|
"This event is reserved for one or more 42 campuses. If you have not "
|
||||||
|
"connected your intranet to 42CTF, you can do so with this button: "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/events/templates/events/event_pwd.html:25
|
||||||
|
msgid ""
|
||||||
|
"This event is reserved for one or more 42 campuses. And unfortunately your "
|
||||||
|
"campus can't participate. Do not hesitate to contact us to organize an event "
|
||||||
|
"on your campus!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/events/templates/events/event_pwd.html:30
|
||||||
|
#: src/events/templates/events/join_team.html:22
|
||||||
msgid "Wrong password submited."
|
msgid "Wrong password submited."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:20
|
#: src/events/templates/events/event_pwd.html:35
|
||||||
msgid "This event is password protected"
|
msgid "This event is password protected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:21
|
#: src/events/templates/events/event_pwd.html:36
|
||||||
msgid "You need to submit the event password to gain access to this event."
|
msgid "You need to submit the event password to gain access to this event."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:6 templates/base.html:61
|
#: src/events/templates/events/events_list.html:6 src/templates/base.html:65
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:38
|
#: src/events/templates/events/events_list.html:38
|
||||||
msgid "See more"
|
msgid "See more"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:44
|
#: src/events/templates/events/events_list.html:44
|
||||||
msgid "No events available."
|
msgid "No events available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/join_team.html:20
|
#: src/events/templates/events/join_team.html:20
|
||||||
msgid "Team does not exist."
|
msgid "Team does not exist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/join_team.html:24
|
#: src/events/templates/events/join_team.html:24
|
||||||
msgid "Maximum size reached."
|
msgid "Maximum size reached."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:26
|
#: src/events/templates/events/manage_team.html:26
|
||||||
msgid "Team password"
|
msgid "Team password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:29
|
#: src/events/templates/events/manage_team.html:29
|
||||||
msgid "Apply"
|
msgid "Apply"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:44
|
#: src/events/templates/events/manage_team.html:44
|
||||||
#: events/templates/events/team.html:49
|
#: src/events/templates/events/team.html:49
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:52
|
#: src/events/templates/events/manage_team.html:52
|
||||||
msgid "Leave Team"
|
msgid "Leave Team"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:59
|
#: src/events/templates/events/manage_team.html:59
|
||||||
msgid "Open to automatching"
|
msgid "Open to automatching"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:66
|
#: src/events/templates/events/manage_team.html:66
|
||||||
msgid "Close to automatching"
|
msgid "Close to automatching"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/team.html:38
|
#: src/events/templates/events/team.html:38
|
||||||
msgid "It seems that this team has not solved any challenge yet..."
|
msgid "It seems that this team has not solved any challenge yet..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:21
|
#: src/home/templates/home/home.html:21
|
||||||
msgid "Weekly Top 5"
|
msgid "Weekly Top 5"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:48
|
#: src/home/templates/home/home.html:48
|
||||||
msgid "No article available."
|
msgid "No article available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:53
|
#: src/home/templates/home/home.html:53
|
||||||
msgid "Latest challenges added"
|
msgid "Latest challenges added"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:58
|
#: src/home/templates/home/home.html:58
|
||||||
msgid "points"
|
msgid "points"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:62
|
#: src/home/templates/home/home.html:62
|
||||||
msgid "No ctf available."
|
msgid "No ctf available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:66
|
#: src/home/templates/home/home.html:66
|
||||||
msgid "Latest Flags"
|
msgid "Latest Flags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:80
|
#: src/home/templates/home/home.html:80
|
||||||
msgid "Flags"
|
msgid "Flags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:86
|
#: src/home/templates/home/home.html:86
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: project/settings.py:116
|
#: src/project/settings.py:116
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: project/settings.py:117
|
#: src/project/settings.py:117
|
||||||
msgid "German"
|
msgid "German"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: project/settings.py:118
|
#: src/project/settings.py:118
|
||||||
msgid "French"
|
msgid "French"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: project/settings.py:119
|
#: src/project/settings.py:119
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: project/settings.py:120
|
#: src/project/settings.py:120
|
||||||
msgid "Japanese"
|
msgid "Japanese"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: project/settings.py:121
|
#: src/project/settings.py:121
|
||||||
msgid "Spanish"
|
msgid "Spanish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:38
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:15
|
||||||
|
msgid "Campus"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:46
|
||||||
msgid "First"
|
msgid "First"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:39
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:47
|
||||||
msgid "Previous"
|
msgid "Previous"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:43
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:51
|
||||||
msgid "Page "
|
msgid "Page "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:47
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:55
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:48
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:56
|
||||||
msgid "Last"
|
msgid "Last"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/base.html:59
|
#: src/templates/base.html:62
|
||||||
msgid "Scoreboard"
|
msgid "Scoreboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/base.html:64
|
#: src/templates/base.html:83
|
||||||
msgid "Resources"
|
msgid "Become a member"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/base.html:93
|
#: src/templates/base.html:93
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/base.html:100
|
#: src/templates/base.html:100
|
||||||
msgid "Sign Up"
|
msgid "Sign Up"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/base.html:135
|
#: src/templates/registration/password_reset_complete.html:11
|
||||||
msgid "Become a Patron!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: templates/registration/password_reset_complete.html:11
|
|
||||||
msgid "Your new password has been set."
|
msgid "Your new password has been set."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:20
|
#: src/templates/registration/password_reset_confirm.html:20
|
||||||
msgid "Your password can’t be too similar to your other personal information."
|
msgid "Your password can’t be too similar to your other personal information."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:21
|
#: src/templates/registration/password_reset_confirm.html:21
|
||||||
msgid "Your password must contain at least 8 characters."
|
msgid "Your password must contain at least 8 characters."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:22
|
#: src/templates/registration/password_reset_confirm.html:22
|
||||||
msgid "Your password can’t be a commonly used password."
|
msgid "Your password can’t be a commonly used password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:23
|
#: src/templates/registration/password_reset_confirm.html:23
|
||||||
msgid "Your password can’t be entirely numeric."
|
msgid "Your password can’t be entirely numeric."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:26
|
#: src/templates/registration/password_reset_confirm.html:26
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:28
|
#: src/templates/registration/password_reset_confirm.html:28
|
||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_done.html:11
|
#: src/templates/registration/password_reset_done.html:11
|
||||||
msgid ""
|
msgid ""
|
||||||
"We've emailed you instructions for setting your password. You should receive "
|
"We've emailed you instructions for setting your password. You should receive "
|
||||||
"the email shortly!"
|
"the email shortly!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_form.html:16
|
#: src/templates/registration/password_reset_form.html:16
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
|
"POT-Creation-Date: 2022-08-16 19:28+0200\n"
|
||||||
"PO-Revision-Date: 2022-02-09 10:55+0100\n"
|
"PO-Revision-Date: 2022-02-09 10:55+0100\n"
|
||||||
"Last-Translator: Javier Uhagón (uhagontorralvojavier@gmail.com)\n"
|
"Last-Translator: Javier Uhagón (uhagontorralvojavier@gmail.com)\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -18,198 +18,231 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:8
|
#: src/accounts/templates/accounts/delete.html:8
|
||||||
msgid "Delete account"
|
msgid "Delete account"
|
||||||
msgstr "Borrar cuenta"
|
msgstr "Borrar cuenta"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:11
|
#: src/accounts/templates/accounts/delete.html:11
|
||||||
msgid "Please confirm your password to delete your account."
|
msgid "Please confirm your password to delete your account."
|
||||||
msgstr "Por favor confirme su contraseña para borrar su cuenta."
|
msgstr "Por favor confirme su contraseña para borrar su cuenta."
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:12
|
#: src/accounts/templates/accounts/delete.html:12
|
||||||
msgid "Deleted accounts cannot be recovered."
|
msgid "Deleted accounts cannot be recovered."
|
||||||
msgstr "Las cuentas borradas no pueden ser recuperadas."
|
msgstr "Las cuentas borradas no pueden ser recuperadas."
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:15
|
#: src/accounts/templates/accounts/delete.html:15
|
||||||
msgid "Password incorrect."
|
msgid "Password incorrect."
|
||||||
msgstr "Contraseña incorrecta."
|
msgstr "Contraseña incorrecta."
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:17
|
#: src/accounts/templates/accounts/delete.html:17
|
||||||
msgid "Your account has been deleted."
|
msgid "Your account has been deleted."
|
||||||
msgstr "Su cuenta ha sido borrada."
|
msgstr "Su cuenta ha sido borrada."
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:22
|
#: src/accounts/templates/accounts/delete.html:22
|
||||||
#: accounts/templates/accounts/login.html:19
|
#: src/accounts/templates/accounts/login.html:19
|
||||||
#: accounts/templates/accounts/register.html:23
|
#: src/accounts/templates/accounts/register.html:23
|
||||||
#: events/templates/events/create_team.html:27
|
#: src/events/templates/events/create_team.html:27
|
||||||
#: events/templates/events/join_team.html:32
|
#: src/events/templates/events/join_team.html:32
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Contraseña"
|
msgstr "Contraseña"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:21
|
#: src/accounts/templates/accounts/edit.html:21
|
||||||
#: accounts/templates/accounts/login.html:18
|
#: src/accounts/templates/accounts/login.html:18
|
||||||
#: accounts/templates/accounts/register.html:22
|
#: src/accounts/templates/accounts/register.html:22
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
|
#: src/ctfs/templates/ctfs/ctf_info.html:63
|
||||||
#: events/templates/events/ctf_info.html:65
|
#: src/ctfs/templates/ctfs/ctfs_list.html:12
|
||||||
#: events/templates/events/event_info.html:64
|
#: src/events/templates/events/ctf_info.html:65
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:13
|
#: src/events/templates/events/event_info.html:64
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:13
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr "Usuario"
|
msgstr "Usuario"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:25
|
#: src/accounts/templates/accounts/edit.html:25
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:30
|
#: src/accounts/templates/accounts/edit.html:30
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:64
|
#: src/ctfs/templates/ctfs/ctf_info.html:64
|
||||||
#: events/templates/events/ctf_info.html:66
|
#: src/events/templates/events/ctf_info.html:66
|
||||||
#: events/templates/events/event_info.html:65
|
#: src/events/templates/events/event_info.html:65
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:14
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:14
|
||||||
msgid "Website"
|
msgid "Website"
|
||||||
msgstr "Página Web"
|
msgstr "Página Web"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:36
|
#: src/accounts/templates/accounts/edit.html:36
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Apply"
|
#| msgid "Apply"
|
||||||
msgid " Apply"
|
msgid " Apply"
|
||||||
msgstr "Aplicar"
|
msgstr "Aplicar"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:45
|
#: src/accounts/templates/accounts/edit.html:45
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Delete account"
|
#| msgid "Delete account"
|
||||||
msgid "Connected accounts"
|
msgid "Connected accounts"
|
||||||
msgstr "Borrar cuenta"
|
msgstr "Borrar cuenta"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:53
|
#: src/accounts/templates/accounts/edit.html:53
|
||||||
msgid "Disconnect Discord"
|
msgid "Disconnect Discord"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:59
|
#: src/accounts/templates/accounts/edit.html:59
|
||||||
msgid "Connect Discord"
|
msgid "Connect Discord"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:70
|
#: src/accounts/templates/accounts/edit.html:68
|
||||||
#: accounts/templates/accounts/profile.html:46
|
msgid "Disconnect 42"
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
|
msgstr ""
|
||||||
#: events/templates/events/event_info.html:66
|
|
||||||
#: events/templates/events/event_info.html:89
|
#: src/accounts/templates/accounts/edit.html:74
|
||||||
#: events/templates/events/manage_team.html:40
|
#: src/events/templates/events/event_pwd.html:19
|
||||||
#: events/templates/events/team.html:45
|
msgid "Connect 42"
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:15
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/edit.html:85
|
||||||
|
#: src/accounts/templates/accounts/profile.html:46
|
||||||
|
#: src/ctfs/templates/ctfs/ctf_info.html:65
|
||||||
|
#: src/ctfs/templates/ctfs/ctfs_list.html:13
|
||||||
|
#: src/events/templates/events/event_info.html:66
|
||||||
|
#: src/events/templates/events/event_info.html:89
|
||||||
|
#: src/events/templates/events/manage_team.html:40
|
||||||
|
#: src/events/templates/events/team.html:45
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:16
|
||||||
msgid "Score"
|
msgid "Score"
|
||||||
msgstr "Puntuación"
|
msgstr "Puntuación"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:78
|
#: src/accounts/templates/accounts/edit.html:93
|
||||||
#: accounts/templates/accounts/profile.html:60
|
#: src/accounts/templates/accounts/profile.html:60
|
||||||
msgid "Registered since"
|
msgid "Registered since"
|
||||||
msgstr "Registrado desde"
|
msgstr "Registrado desde"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:84
|
#: src/accounts/templates/accounts/edit.html:99
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Delete my account"
|
#| msgid "Delete my account"
|
||||||
msgid " Delete my account"
|
msgid " Delete my account"
|
||||||
msgstr "Borrar mi cuenta"
|
msgstr "Borrar mi cuenta"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:13
|
#: src/accounts/templates/accounts/login.html:13
|
||||||
msgid "Please, verify your infos."
|
msgid "Please, verify your infos."
|
||||||
msgstr "Por favor, verifique su información."
|
msgstr "Por favor, verifique su información."
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:22
|
#: src/accounts/templates/accounts/login.html:22
|
||||||
msgid "Reset password"
|
msgid "Reset password"
|
||||||
msgstr "Cambiar contraseña"
|
msgstr "Cambiar contraseña"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:31
|
#: src/accounts/templates/accounts/login.html:31
|
||||||
#: accounts/templates/accounts/register.html:38 templates/base.html:97
|
#: src/accounts/templates/accounts/register.html:37 src/templates/base.html:97
|
||||||
#: templates/registration/password_reset_complete.html:18
|
#: src/templates/registration/password_reset_complete.html:18
|
||||||
#: templates/registration/password_reset_confirm.html:38
|
#: src/templates/registration/password_reset_confirm.html:38
|
||||||
#: templates/registration/password_reset_done.html:18
|
#: src/templates/registration/password_reset_done.html:18
|
||||||
#: templates/registration/password_reset_form.html:26
|
#: src/templates/registration/password_reset_form.html:26
|
||||||
msgid "Login"
|
msgid "Login"
|
||||||
msgstr "Iniciar Sesión"
|
msgstr "Iniciar Sesión"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:32
|
#: src/accounts/templates/accounts/login.html:32
|
||||||
#: accounts/templates/accounts/register.html:37
|
#: src/accounts/templates/accounts/register.html:36
|
||||||
#: templates/registration/password_reset_complete.html:19
|
#: src/templates/registration/password_reset_complete.html:19
|
||||||
#: templates/registration/password_reset_confirm.html:39
|
#: src/templates/registration/password_reset_confirm.html:39
|
||||||
#: templates/registration/password_reset_done.html:19
|
#: src/templates/registration/password_reset_done.html:19
|
||||||
#: templates/registration/password_reset_form.html:27
|
#: src/templates/registration/password_reset_form.html:27
|
||||||
msgid "Sign up"
|
msgid "Sign up"
|
||||||
msgstr "Registrarse"
|
msgstr "Registrarse"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:10
|
#: src/accounts/templates/accounts/profile.html:10
|
||||||
msgid "Challenges Solved by"
|
msgid "Challenges Solved by"
|
||||||
msgstr "Retos resueltos por"
|
msgstr "Retos resueltos por"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:21
|
#: src/accounts/templates/accounts/profile.html:21
|
||||||
#: events/templates/events/team.html:20
|
#: src/events/templates/events/team.html:20
|
||||||
msgid "Challenge Name"
|
msgid "Challenge Name"
|
||||||
msgstr "Nombre del reto"
|
msgstr "Nombre del reto"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:22
|
#: src/accounts/templates/accounts/profile.html:22
|
||||||
#: events/templates/events/team.html:21
|
#: src/events/templates/events/team.html:21
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr "Categoría"
|
msgstr "Categoría"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:23
|
#: src/accounts/templates/accounts/profile.html:23
|
||||||
#: events/templates/events/team.html:22
|
#: src/events/templates/events/team.html:22
|
||||||
msgid "Points"
|
msgid "Points"
|
||||||
msgstr "Puntos"
|
msgstr "Puntos"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:24
|
#: src/accounts/templates/accounts/profile.html:24
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:66
|
#: src/ctfs/templates/ctfs/ctf_info.html:66
|
||||||
#: events/templates/events/ctf_info.html:67
|
#: src/events/templates/events/ctf_info.html:67
|
||||||
#: events/templates/events/team.html:23
|
#: src/events/templates/events/team.html:23
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Fecha"
|
msgstr "Fecha"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:39
|
#: src/accounts/templates/accounts/profile.html:39
|
||||||
msgid "It seems that this user has not solved any challenge yet..."
|
msgid "It seems that this user has not solved any challenge yet..."
|
||||||
msgstr "Parece que este usuario no ha resuelto ningún reto aún..."
|
msgstr "Parece que este usuario no ha resuelto ningún reto aún..."
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:47
|
#: src/accounts/templates/accounts/profile.html:47
|
||||||
#: events/templates/events/event_info.html:63
|
#: src/events/templates/events/event_info.html:63
|
||||||
#: events/templates/events/event_info.html:87
|
#: src/events/templates/events/event_info.html:87
|
||||||
#: events/templates/events/manage_team.html:41
|
#: src/events/templates/events/manage_team.html:41
|
||||||
#: events/templates/events/team.html:46
|
#: src/events/templates/events/team.html:46
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:12
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:12
|
||||||
msgid "Rank"
|
msgid "Rank"
|
||||||
msgstr "Rango"
|
msgstr "Rango"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:56
|
#: src/accounts/templates/accounts/profile.html:56
|
||||||
msgid "Status: Member"
|
#, fuzzy
|
||||||
msgstr "Estatus: Miembro"
|
#| msgid "Members"
|
||||||
|
msgid "Member"
|
||||||
|
msgstr "Miembros"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:58
|
#: src/accounts/templates/accounts/profile.html:58
|
||||||
msgid "Status: Visitor"
|
#, fuzzy
|
||||||
|
#| msgid "Status: Visitor"
|
||||||
|
msgid " Visitor"
|
||||||
msgstr "Estatus: Visitante"
|
msgstr "Estatus: Visitante"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:64
|
#: src/accounts/templates/accounts/profile.html:64
|
||||||
#: events/templates/events/team.html:57
|
#: src/events/templates/events/team.html:57
|
||||||
msgid "Categories stats"
|
msgid "Categories stats"
|
||||||
msgstr "Estádisticas de las categorías"
|
msgstr "Estádisticas de las categorías"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:13
|
#: src/accounts/templates/accounts/profile.html:81
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Challenge Name"
|
||||||
|
msgid "Challenges created"
|
||||||
|
msgstr "Nombre del reto"
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/profile.html:87
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "It seems that this user has not solved any challenge yet..."
|
||||||
|
msgid "It seems that this user has not created any challenge yet..."
|
||||||
|
msgstr "Parece que este usuario no ha resuelto ningún reto aún..."
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/register.html:13
|
||||||
msgid "Welcome !"
|
msgid "Welcome !"
|
||||||
msgstr "¡ Bienvenid@ !"
|
msgstr "¡ Bienvenid@ !"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:14
|
#: src/accounts/templates/accounts/register.html:14
|
||||||
msgid "Your account has been created."
|
msgid "Your account has been created."
|
||||||
msgstr "Tu cuenta ha sido creada."
|
msgstr "Tu cuenta ha sido creada."
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:25
|
#: src/accounts/templates/accounts/register.html:25
|
||||||
msgid "Personal website"
|
msgid "Personal website"
|
||||||
msgstr "Web personal"
|
msgstr "Web personal"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:26
|
#: src/accounts/templates/accounts/register.html:26
|
||||||
#: events/templates/events/event_info.html:119
|
#: src/events/templates/events/event_info.html:119
|
||||||
msgid "Register"
|
msgid "Register"
|
||||||
msgstr "Registrarse"
|
msgstr "Registrarse"
|
||||||
|
|
||||||
#: accounts/views/views.py:33
|
#: src/accounts/views/views.py:33
|
||||||
msgid "Your account was inactive."
|
msgid "Your account was inactive."
|
||||||
msgstr "Tu cuenta estaba inactiva."
|
msgstr "Tu cuenta estaba inactiva."
|
||||||
|
|
||||||
#: accounts/views/views.py:52
|
#: src/accounts/views/views.py:57
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Your password must contain at least 8 characters."
|
||||||
|
msgid "The password must be at least 8 characters long."
|
||||||
|
msgstr "Tu contraseña debe tener al menos 8 carácteres."
|
||||||
|
|
||||||
|
#: src/accounts/views/views.py:67
|
||||||
msgid ""
|
msgid ""
|
||||||
"The password must contain at least one letter and at least one digit or "
|
"The password must contain at least one letter and at least one digit or "
|
||||||
"punctuation character."
|
"punctuation character."
|
||||||
|
@ -217,424 +250,442 @@ msgstr ""
|
||||||
"La contraseña debe contener al menos una letra y un dígito o un signo de "
|
"La contraseña debe contener al menos una letra y un dígito o un signo de "
|
||||||
"puntuación."
|
"puntuación."
|
||||||
|
|
||||||
#: accounts/views/views.py:54
|
#: src/accounts/views/views.py:77
|
||||||
msgid "A user with that email already exists."
|
msgid "A user with that email already exists."
|
||||||
msgstr "Ya existe un usuario con este email."
|
msgstr "Ya existe un usuario con este email."
|
||||||
|
|
||||||
#: accounts/views/views.py:67
|
#: src/accounts/views/views.py:99
|
||||||
msgid "A user with that username already exists."
|
msgid "A user with that username already exists."
|
||||||
msgstr "Ese nombre de usuario ya está en uso."
|
msgstr "Ese nombre de usuario ya está en uso."
|
||||||
|
|
||||||
#: accounts/views/views.py:95
|
#: src/accounts/views/views.py:132
|
||||||
msgid "Email already taken."
|
msgid "Email already taken."
|
||||||
msgstr "Email ya usado."
|
msgstr "Email ya usado."
|
||||||
|
|
||||||
#: accounts/views/views.py:101
|
#: src/accounts/views/views.py:138
|
||||||
msgid "Username already taken."
|
msgid "Username already taken."
|
||||||
msgstr "Nombre de usuario ya usado."
|
msgstr "Nombre de usuario ya usado."
|
||||||
|
|
||||||
#: accounts/views/views.py:105 events/views/teams.py:124
|
#: src/accounts/views/views.py:142 src/events/views/teams.py:124
|
||||||
msgid "Updated."
|
msgid "Updated."
|
||||||
msgstr "Actualizado."
|
msgstr "Actualizado."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:12
|
#: src/ctfs/templates/ctfs/ctf_info.html:12
|
||||||
#: events/templates/events/ctf_info.html:12
|
#: src/events/templates/events/ctf_info.html:12
|
||||||
msgid "Published date"
|
msgid "Published date"
|
||||||
msgstr "Fecha de publicación"
|
msgstr "Fecha de publicación"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:16
|
#: src/ctfs/templates/ctfs/ctf_info.html:16
|
||||||
msgid "Challenge is not yet available."
|
msgid "Challenge is not yet available."
|
||||||
msgstr "El reto aún no está disponible."
|
msgstr "El reto aún no está disponible."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:29
|
#: src/ctfs/templates/ctfs/ctf_info.html:29
|
||||||
#: events/templates/events/ctf_info.html:24
|
#: src/events/templates/events/ctf_info.html:24
|
||||||
msgid "Congratulation !"
|
msgid "Congratulation !"
|
||||||
msgstr "¡ Felicidades !"
|
msgstr "¡ Felicidades !"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:31
|
#: src/ctfs/templates/ctfs/ctf_info.html:31
|
||||||
#: events/templates/events/ctf_info.html:26
|
#: src/events/templates/events/ctf_info.html:26
|
||||||
msgid "Already flagged"
|
msgid "Already flagged"
|
||||||
msgstr "Flag ya conseguida"
|
msgstr "Flag ya conseguida"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
|
#: src/ctfs/templates/ctfs/ctf_info.html:33
|
||||||
#: events/templates/events/ctf_info.html:36
|
#: src/ctfs/templates/ctfs/ctf_info.html:42
|
||||||
#: events/templates/events/ctf_info.html:45
|
#: src/events/templates/events/ctf_info.html:36
|
||||||
|
#: src/events/templates/events/ctf_info.html:45
|
||||||
msgid "Start the challenge"
|
msgid "Start the challenge"
|
||||||
msgstr "Comenzar el reto"
|
msgstr "Comenzar el reto"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
|
#: src/ctfs/templates/ctfs/ctf_info.html:35
|
||||||
#: events/templates/events/ctf_info.html:38
|
#: src/ctfs/templates/ctfs/ctf_info.html:44
|
||||||
#: events/templates/events/ctf_info.html:47
|
#: src/events/templates/events/ctf_info.html:38
|
||||||
|
#: src/events/templates/events/ctf_info.html:47
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "Descargar"
|
msgstr "Descargar"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:39
|
#: src/ctfs/templates/ctfs/ctf_info.html:39
|
||||||
#: events/templates/events/ctf_info.html:42
|
#: src/events/templates/events/ctf_info.html:42
|
||||||
msgid "Wrong flag ! You can do it !"
|
msgid "Wrong flag ! You can do it !"
|
||||||
msgstr "¡ Flag incorrecta ! ¡ Puedes hacerlo !"
|
msgstr "¡ Flag incorrecta ! ¡ Puedes hacerlo !"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:58
|
#: src/ctfs/templates/ctfs/ctf_info.html:58
|
||||||
#: events/templates/events/ctf_info.html:60
|
#: src/events/templates/events/ctf_info.html:60
|
||||||
msgid "Solved by"
|
msgid "Solved by"
|
||||||
msgstr "Resuelto por"
|
msgstr "Resuelto por"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:82
|
#: src/ctfs/templates/ctfs/ctf_info.html:82
|
||||||
#: events/templates/events/ctf_info.html:90
|
#: src/events/templates/events/ctf_info.html:90
|
||||||
msgid "Nobody has solved this challenge yet."
|
msgid "Nobody has solved this challenge yet."
|
||||||
msgstr "Nadie ha resuelto este reto aún."
|
msgstr "Nadie ha resuelto este reto aún."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:89
|
#: src/ctfs/templates/ctfs/ctf_info.html:89
|
||||||
#: events/templates/events/ctf_info.html:97
|
#: src/events/templates/events/ctf_info.html:97
|
||||||
msgid "Author"
|
msgid "Author"
|
||||||
msgstr "Autor"
|
msgstr "Autor"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:90
|
#: src/ctfs/templates/ctfs/ctf_info.html:90
|
||||||
#: events/templates/events/ctf_info.html:98
|
#: src/events/templates/events/ctf_info.html:98
|
||||||
msgid "Point reward"
|
msgid "Point reward"
|
||||||
msgstr "Recompensa de puntos"
|
msgstr "Recompensa de puntos"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:14
|
#: src/ctfs/templates/ctfs/ctfs_list.html:14
|
||||||
msgid "Solved"
|
msgid "Solved"
|
||||||
msgstr "Resuelto"
|
msgstr "Resuelto"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:37
|
#: src/ctfs/templates/ctfs/ctfs_list.html:37
|
||||||
msgid "No ctf available for this category."
|
msgid "No ctf available for this category."
|
||||||
msgstr "No hay un ctf disponible para esta categoría."
|
msgstr "No hay un ctf disponible para esta categoría."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:42
|
#: src/ctfs/templates/ctfs/ctfs_list.html:42
|
||||||
msgid "Categories"
|
msgid "Categories"
|
||||||
msgstr "Categorías"
|
msgstr "Categorías"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:48 templates/base.html:54
|
#: src/ctfs/templates/ctfs/ctfs_list.html:48 src/templates/base.html:56
|
||||||
msgid "No category available."
|
msgid "No category available."
|
||||||
msgstr "No hay categoría disponible."
|
msgstr "No hay categoría disponible."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:10
|
#: src/events/templates/events/create_team.html:10
|
||||||
#: events/templates/events/join_team.html:10
|
#: src/events/templates/events/join_team.html:10
|
||||||
msgid "This event starts at"
|
msgid "This event starts at"
|
||||||
msgstr "Este evento empieza"
|
msgstr "Este evento empieza"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:17
|
#: src/events/templates/events/create_team.html:17
|
||||||
#: events/templates/events/join_team.html:17
|
#: src/events/templates/events/join_team.html:17
|
||||||
msgid "You need to be registered to the event."
|
msgid "You need to be registered to the event."
|
||||||
msgstr "Necesitas estar registrado al evento."
|
msgstr "Necesitas estar registrado al evento."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:20 events/views/teams.py:120
|
#: src/events/templates/events/create_team.html:20
|
||||||
|
#: src/events/views/teams.py:120
|
||||||
msgid "Name already taken."
|
msgid "Name already taken."
|
||||||
msgstr "Nombre ya elegido."
|
msgstr "Nombre ya elegido."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:26
|
#: src/events/templates/events/create_team.html:26
|
||||||
#: events/templates/events/join_team.html:31
|
#: src/events/templates/events/join_team.html:31
|
||||||
#: events/templates/events/manage_team.html:22
|
#: src/events/templates/events/manage_team.html:22
|
||||||
msgid "Team name"
|
msgid "Team name"
|
||||||
msgstr "Nombre de equipo"
|
msgstr "Nombre de equipo"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:28
|
#: src/events/templates/events/create_team.html:28
|
||||||
#: events/templates/events/create_team.html:49
|
#: src/events/templates/events/create_team.html:49
|
||||||
#: events/templates/events/join_team.html:54
|
#: src/events/templates/events/join_team.html:54
|
||||||
msgid "Create Team"
|
msgid "Create Team"
|
||||||
msgstr "Crear equipo"
|
msgstr "Crear equipo"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:33
|
#: src/events/templates/events/create_team.html:33
|
||||||
#: events/templates/events/event_pwd.html:28
|
#: src/events/templates/events/event_pwd.html:44
|
||||||
#: events/templates/events/join_team.html:38
|
#: src/events/templates/events/join_team.html:38
|
||||||
msgid "You need to be logged to access this event."
|
msgid "You need to be logged to access this event."
|
||||||
msgstr "Necesitas tener una sesión iniciada para acceder a este evento."
|
msgstr "Necesitas tener una sesión iniciada para acceder a este evento."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:42
|
#: src/events/templates/events/create_team.html:42
|
||||||
#: events/templates/events/event_info.html:113
|
#: src/events/templates/events/event_info.html:113
|
||||||
#: events/templates/events/event_pwd.html:36
|
#: src/events/templates/events/event_pwd.html:52
|
||||||
#: events/templates/events/join_team.html:47
|
#: src/events/templates/events/join_team.html:47
|
||||||
msgid "Starts at"
|
msgid "Starts at"
|
||||||
msgstr "Empieza a las"
|
msgstr "Empieza a las"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:43
|
#: src/events/templates/events/create_team.html:43
|
||||||
#: events/templates/events/event_info.html:114
|
#: src/events/templates/events/event_info.html:114
|
||||||
#: events/templates/events/event_pwd.html:37
|
#: src/events/templates/events/event_pwd.html:53
|
||||||
#: events/templates/events/join_team.html:48
|
#: src/events/templates/events/join_team.html:48
|
||||||
msgid "Ends at"
|
msgid "Ends at"
|
||||||
msgstr "Acaba a las"
|
msgstr "Acaba a las"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:47
|
#: src/events/templates/events/create_team.html:47
|
||||||
#: events/templates/events/event_info.html:129
|
#: src/events/templates/events/event_info.html:129
|
||||||
#: events/templates/events/join_team.html:52
|
#: src/events/templates/events/join_team.html:52
|
||||||
msgid "Manage my team"
|
msgid "Manage my team"
|
||||||
msgstr "Gestionar mi equipo"
|
msgstr "Gestionar mi equipo"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:48
|
#: src/events/templates/events/create_team.html:48
|
||||||
#: events/templates/events/join_team.html:33
|
#: src/events/templates/events/join_team.html:33
|
||||||
#: events/templates/events/join_team.html:53
|
#: src/events/templates/events/join_team.html:53
|
||||||
msgid "Join Team"
|
msgid "Join Team"
|
||||||
msgstr "Unirse a un equipo"
|
msgstr "Unirse a un equipo"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:53
|
#: src/events/templates/events/create_team.html:53
|
||||||
#: events/templates/events/join_team.html:58
|
#: src/events/templates/events/join_team.html:58
|
||||||
msgid "Auto-matching"
|
msgid "Auto-matching"
|
||||||
msgstr "Auto-matching"
|
msgstr "Auto-matching"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:57
|
#: src/events/templates/events/create_team.html:57
|
||||||
#: events/templates/events/join_team.html:62
|
#: src/events/templates/events/join_team.html:62
|
||||||
msgid "Find me a team !"
|
msgid "Find me a team !"
|
||||||
msgstr "¡ Encuentrame un equipo !"
|
msgstr "¡ Encuentrame un equipo !"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:10
|
#: src/events/templates/events/ctf_info.html:10
|
||||||
msgid "Event"
|
msgid "Event"
|
||||||
msgstr "Evento"
|
msgstr "Evento"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:18
|
#: src/events/templates/events/ctf_info.html:18
|
||||||
msgid ""
|
msgid ""
|
||||||
"No translation available. Please try another language (English or French)."
|
"No translation available. Please try another language (English or French)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Traducción no disponible. Por favor pruebe otro idioma (inglés o francés)."
|
"Traducción no disponible. Por favor pruebe otro idioma (inglés o francés)."
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:28
|
#: src/events/templates/events/ctf_info.html:28
|
||||||
#: events/templates/events/event_info.html:18
|
#: src/events/templates/events/event_info.html:18
|
||||||
msgid "This event is over."
|
msgid "This event is over."
|
||||||
msgstr "Este evento ya ha acabado."
|
msgstr "Este evento ya ha acabado."
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:30
|
#: src/events/templates/events/ctf_info.html:30
|
||||||
msgid "Error while processing your request. (Invalid Form)"
|
msgid "Error while processing your request. (Invalid Form)"
|
||||||
msgstr "Error al procesar tu solicitud. (Formulario incorrecto)"
|
msgstr "Error al procesar tu solicitud. (Formulario incorrecto)"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:32
|
#: src/events/templates/events/ctf_info.html:32
|
||||||
msgid "You must register to the event before submitting flags."
|
msgid "You must register to the event before submitting flags."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:34
|
#: src/events/templates/events/ctf_info.html:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is a team event, please create or join a team before submitting flags."
|
"This is a team event, please create or join a team before submitting flags."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:9
|
#: src/events/templates/events/event_info.html:9
|
||||||
msgid "Subscriptions is over."
|
msgid "Subscriptions is over."
|
||||||
msgstr "El periodo de suscripción ha acabado."
|
msgstr "El periodo de suscripción ha acabado."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:12
|
#: src/events/templates/events/event_info.html:12
|
||||||
#: events/templates/events/event_pwd.html:18
|
#: src/events/templates/events/event_pwd.html:33
|
||||||
msgid "You're already registered to this event."
|
msgid "You're already registered to this event."
|
||||||
msgstr "Ya estás registrado a este evento."
|
msgstr "Ya estás registrado a este evento."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:20
|
#: src/events/templates/events/event_info.html:20
|
||||||
#: events/templates/events/event_pwd.html:9
|
#: src/events/templates/events/event_pwd.html:9
|
||||||
msgid "This event start at"
|
msgid "This event start at"
|
||||||
msgstr "Este evento empieza"
|
msgstr "Este evento empieza"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:30
|
#: src/events/templates/events/event_info.html:30
|
||||||
msgid "Challenges"
|
msgid "Challenges"
|
||||||
msgstr "Retos"
|
msgstr "Retos"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:47
|
#: src/events/templates/events/event_info.html:47
|
||||||
msgid "No challenges available."
|
msgid "No challenges available."
|
||||||
msgstr "No hay retos disponibles."
|
msgstr "No hay retos disponibles."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:51
|
#: src/events/templates/events/event_info.html:51
|
||||||
msgid "The event has not started yet."
|
msgid "The event has not started yet."
|
||||||
msgstr "El evento no ha empezado aún."
|
msgstr "El evento no ha empezado aún."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:57
|
#: src/events/templates/events/event_info.html:57
|
||||||
msgid "ScoreBoard"
|
msgid "ScoreBoard"
|
||||||
msgstr "Tabla de puntuaciones"
|
msgstr "Tabla de puntuaciones"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:88
|
#: src/events/templates/events/event_info.html:88
|
||||||
msgid "Team"
|
msgid "Team"
|
||||||
msgstr "Equipo"
|
msgstr "Equipo"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:106
|
#: src/events/templates/events/event_info.html:106
|
||||||
msgid "No one have earn point yet, you gonna be the first ?"
|
msgid "No one have earn point yet, you gonna be the first ?"
|
||||||
msgstr "Nadie ha conseguido puntos aún, ¿Vas a ser el primero?"
|
msgstr "Nadie ha conseguido puntos aún, ¿Vas a ser el primero?"
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:15
|
#: src/events/templates/events/event_pwd.html:16
|
||||||
#: events/templates/events/join_team.html:22
|
msgid ""
|
||||||
|
"This event is reserved for one or more 42 campuses. If you have not "
|
||||||
|
"connected your intranet to 42CTF, you can do so with this button: "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/events/templates/events/event_pwd.html:25
|
||||||
|
msgid ""
|
||||||
|
"This event is reserved for one or more 42 campuses. And unfortunately your "
|
||||||
|
"campus can't participate. Do not hesitate to contact us to organize an event "
|
||||||
|
"on your campus!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/events/templates/events/event_pwd.html:30
|
||||||
|
#: src/events/templates/events/join_team.html:22
|
||||||
msgid "Wrong password submited."
|
msgid "Wrong password submited."
|
||||||
msgstr "Contraseña incorrecta."
|
msgstr "Contraseña incorrecta."
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:20
|
#: src/events/templates/events/event_pwd.html:35
|
||||||
msgid "This event is password protected"
|
msgid "This event is password protected"
|
||||||
msgstr "Este evento está protegido con contraseña"
|
msgstr "Este evento está protegido con contraseña"
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:21
|
#: src/events/templates/events/event_pwd.html:36
|
||||||
msgid "You need to submit the event password to gain access to this event."
|
msgid "You need to submit the event password to gain access to this event."
|
||||||
msgstr "Necesitas introducir la contraseña del evento para participar."
|
msgstr "Necesitas introducir la contraseña del evento para participar."
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:6 templates/base.html:61
|
#: src/events/templates/events/events_list.html:6 src/templates/base.html:65
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "Eventos"
|
msgstr "Eventos"
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:38
|
#: src/events/templates/events/events_list.html:38
|
||||||
msgid "See more"
|
msgid "See more"
|
||||||
msgstr "Ver más"
|
msgstr "Ver más"
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:44
|
#: src/events/templates/events/events_list.html:44
|
||||||
msgid "No events available."
|
msgid "No events available."
|
||||||
msgstr "No hay eventos disponibles."
|
msgstr "No hay eventos disponibles."
|
||||||
|
|
||||||
#: events/templates/events/join_team.html:20
|
#: src/events/templates/events/join_team.html:20
|
||||||
msgid "Team does not exist."
|
msgid "Team does not exist."
|
||||||
msgstr "El equipo no existe."
|
msgstr "El equipo no existe."
|
||||||
|
|
||||||
#: events/templates/events/join_team.html:24
|
#: src/events/templates/events/join_team.html:24
|
||||||
msgid "Maximum size reached."
|
msgid "Maximum size reached."
|
||||||
msgstr "Tamaño máximo alcanzado."
|
msgstr "Tamaño máximo alcanzado."
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:26
|
#: src/events/templates/events/manage_team.html:26
|
||||||
msgid "Team password"
|
msgid "Team password"
|
||||||
msgstr "Contraseña del equipo"
|
msgstr "Contraseña del equipo"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:29
|
#: src/events/templates/events/manage_team.html:29
|
||||||
msgid "Apply"
|
msgid "Apply"
|
||||||
msgstr "Aplicar"
|
msgstr "Aplicar"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:44
|
#: src/events/templates/events/manage_team.html:44
|
||||||
#: events/templates/events/team.html:49
|
#: src/events/templates/events/team.html:49
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "Miembros"
|
msgstr "Miembros"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:52
|
#: src/events/templates/events/manage_team.html:52
|
||||||
msgid "Leave Team"
|
msgid "Leave Team"
|
||||||
msgstr "Salir del equipo"
|
msgstr "Salir del equipo"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:59
|
#: src/events/templates/events/manage_team.html:59
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Auto-matching"
|
#| msgid "Auto-matching"
|
||||||
msgid "Open to automatching"
|
msgid "Open to automatching"
|
||||||
msgstr "Auto-matching"
|
msgstr "Auto-matching"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:66
|
#: src/events/templates/events/manage_team.html:66
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Auto-matching"
|
#| msgid "Auto-matching"
|
||||||
msgid "Close to automatching"
|
msgid "Close to automatching"
|
||||||
msgstr "Auto-matching"
|
msgstr "Auto-matching"
|
||||||
|
|
||||||
#: events/templates/events/team.html:38
|
#: src/events/templates/events/team.html:38
|
||||||
msgid "It seems that this team has not solved any challenge yet..."
|
msgid "It seems that this team has not solved any challenge yet..."
|
||||||
msgstr "Parece que este equipo aún no ha resuelto ningún reto..."
|
msgstr "Parece que este equipo aún no ha resuelto ningún reto..."
|
||||||
|
|
||||||
#: home/templates/home/home.html:21
|
#: src/home/templates/home/home.html:21
|
||||||
msgid "Weekly Top 5"
|
msgid "Weekly Top 5"
|
||||||
msgstr "Top 5 semanal"
|
msgstr "Top 5 semanal"
|
||||||
|
|
||||||
#: home/templates/home/home.html:48
|
#: src/home/templates/home/home.html:48
|
||||||
msgid "No article available."
|
msgid "No article available."
|
||||||
msgstr "Articulos no disponibles."
|
msgstr "Articulos no disponibles."
|
||||||
|
|
||||||
#: home/templates/home/home.html:53
|
#: src/home/templates/home/home.html:53
|
||||||
msgid "Latest challenges added"
|
msgid "Latest challenges added"
|
||||||
msgstr "Ultimos retos añadidos"
|
msgstr "Ultimos retos añadidos"
|
||||||
|
|
||||||
#: home/templates/home/home.html:58
|
#: src/home/templates/home/home.html:58
|
||||||
msgid "points"
|
msgid "points"
|
||||||
msgstr "puntos"
|
msgstr "puntos"
|
||||||
|
|
||||||
#: home/templates/home/home.html:62
|
#: src/home/templates/home/home.html:62
|
||||||
msgid "No ctf available."
|
msgid "No ctf available."
|
||||||
msgstr "ctf no disponible."
|
msgstr "ctf no disponible."
|
||||||
|
|
||||||
#: home/templates/home/home.html:66
|
#: src/home/templates/home/home.html:66
|
||||||
msgid "Latest Flags"
|
msgid "Latest Flags"
|
||||||
msgstr "Ultimas Flags."
|
msgstr "Ultimas Flags."
|
||||||
|
|
||||||
#: home/templates/home/home.html:80
|
#: src/home/templates/home/home.html:80
|
||||||
msgid "Flags"
|
msgid "Flags"
|
||||||
msgstr "Flags"
|
msgstr "Flags"
|
||||||
|
|
||||||
#: home/templates/home/home.html:86
|
#: src/home/templates/home/home.html:86
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "Usuarios"
|
msgstr "Usuarios"
|
||||||
|
|
||||||
#: project/settings.py:116
|
#: src/project/settings.py:116
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr "Inglés"
|
msgstr "Inglés"
|
||||||
|
|
||||||
#: project/settings.py:117
|
#: src/project/settings.py:117
|
||||||
msgid "German"
|
msgid "German"
|
||||||
msgstr "Alemán"
|
msgstr "Alemán"
|
||||||
|
|
||||||
#: project/settings.py:118
|
#: src/project/settings.py:118
|
||||||
msgid "French"
|
msgid "French"
|
||||||
msgstr "Francés"
|
msgstr "Francés"
|
||||||
|
|
||||||
#: project/settings.py:119
|
#: src/project/settings.py:119
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Ruso"
|
msgstr "Ruso"
|
||||||
|
|
||||||
#: project/settings.py:120
|
#: src/project/settings.py:120
|
||||||
msgid "Japanese"
|
msgid "Japanese"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: project/settings.py:121
|
#: src/project/settings.py:121
|
||||||
msgid "Spanish"
|
msgid "Spanish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:38
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:15
|
||||||
|
msgid "Campus"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:46
|
||||||
msgid "First"
|
msgid "First"
|
||||||
msgstr "Primero"
|
msgstr "Primero"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:39
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:47
|
||||||
msgid "Previous"
|
msgid "Previous"
|
||||||
msgstr "Anterior"
|
msgstr "Anterior"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:43
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:51
|
||||||
msgid "Page "
|
msgid "Page "
|
||||||
msgstr "Pagina "
|
msgstr "Pagina "
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:47
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:55
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Siguiente"
|
msgstr "Siguiente"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:48
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:56
|
||||||
msgid "Last"
|
msgid "Last"
|
||||||
msgstr "Último"
|
msgstr "Último"
|
||||||
|
|
||||||
#: templates/base.html:59
|
#: src/templates/base.html:62
|
||||||
msgid "Scoreboard"
|
msgid "Scoreboard"
|
||||||
msgstr "Tabla de puntuaciones"
|
msgstr "Tabla de puntuaciones"
|
||||||
|
|
||||||
#: templates/base.html:64
|
#: src/templates/base.html:83
|
||||||
msgid "Resources"
|
#, fuzzy
|
||||||
msgstr "Recursos"
|
#| msgid "Become a Patron!"
|
||||||
|
msgid "Become a member"
|
||||||
|
msgstr "¡Conviertete en un Mecenas!"
|
||||||
|
|
||||||
#: templates/base.html:93
|
#: src/templates/base.html:93
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Cerrar sesión"
|
msgstr "Cerrar sesión"
|
||||||
|
|
||||||
#: templates/base.html:100
|
#: src/templates/base.html:100
|
||||||
msgid "Sign Up"
|
msgid "Sign Up"
|
||||||
msgstr "Registrarse"
|
msgstr "Registrarse"
|
||||||
|
|
||||||
#: templates/base.html:135
|
#: src/templates/registration/password_reset_complete.html:11
|
||||||
msgid "Become a Patron!"
|
|
||||||
msgstr "¡Conviertete en un Mecenas!"
|
|
||||||
|
|
||||||
#: templates/registration/password_reset_complete.html:11
|
|
||||||
msgid "Your new password has been set."
|
msgid "Your new password has been set."
|
||||||
msgstr "Contraseña cambiada correctamente."
|
msgstr "Contraseña cambiada correctamente."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:20
|
#: src/templates/registration/password_reset_confirm.html:20
|
||||||
msgid "Your password can’t be too similar to your other personal information."
|
msgid "Your password can’t be too similar to your other personal information."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Tu contraseña no puede ser tan similar al resto de tu información personal."
|
"Tu contraseña no puede ser tan similar al resto de tu información personal."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:21
|
#: src/templates/registration/password_reset_confirm.html:21
|
||||||
msgid "Your password must contain at least 8 characters."
|
msgid "Your password must contain at least 8 characters."
|
||||||
msgstr "Tu contraseña debe tener al menos 8 carácteres."
|
msgstr "Tu contraseña debe tener al menos 8 carácteres."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:22
|
#: src/templates/registration/password_reset_confirm.html:22
|
||||||
msgid "Your password can’t be a commonly used password."
|
msgid "Your password can’t be a commonly used password."
|
||||||
msgstr "Tu contraseña no puede ser una contraseña tan común."
|
msgstr "Tu contraseña no puede ser una contraseña tan común."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:23
|
#: src/templates/registration/password_reset_confirm.html:23
|
||||||
msgid "Your password can’t be entirely numeric."
|
msgid "Your password can’t be entirely numeric."
|
||||||
msgstr "Tu contraseña no puede ser solo numérica."
|
msgstr "Tu contraseña no puede ser solo numérica."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:26
|
#: src/templates/registration/password_reset_confirm.html:26
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "Confirmar"
|
msgstr "Confirmar"
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:28
|
#: src/templates/registration/password_reset_confirm.html:28
|
||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr "Enviar"
|
msgstr "Enviar"
|
||||||
|
|
||||||
#: templates/registration/password_reset_done.html:11
|
#: src/templates/registration/password_reset_done.html:11
|
||||||
msgid ""
|
msgid ""
|
||||||
"We've emailed you instructions for setting your password. You should receive "
|
"We've emailed you instructions for setting your password. You should receive "
|
||||||
"the email shortly!"
|
"the email shortly!"
|
||||||
|
@ -642,10 +693,16 @@ msgstr ""
|
||||||
"Te hemos enviado por email las instrucciones para cambiar tu contraseña. "
|
"Te hemos enviado por email las instrucciones para cambiar tu contraseña. "
|
||||||
"¡Deberías recibir el email pronto!"
|
"¡Deberías recibir el email pronto!"
|
||||||
|
|
||||||
#: templates/registration/password_reset_form.html:16
|
#: src/templates/registration/password_reset_form.html:16
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
msgstr "Restablecer"
|
msgstr "Restablecer"
|
||||||
|
|
||||||
|
#~ msgid "Status: Member"
|
||||||
|
#~ msgstr "Estatus: Miembro"
|
||||||
|
|
||||||
|
#~ msgid "Resources"
|
||||||
|
#~ msgstr "Recursos"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "Error: you're not registered to this event, so you can't register scores, "
|
#~ "Error: you're not registered to this event, so you can't register scores, "
|
||||||
#~ "fucking logic."
|
#~ "fucking logic."
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
|
"POT-Creation-Date: 2022-08-16 19:28+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -18,204 +18,241 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:8
|
#: src/accounts/templates/accounts/delete.html:8
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Connected accounts"
|
#| msgid "Connected accounts"
|
||||||
msgid "Delete account"
|
msgid "Delete account"
|
||||||
msgstr "Comptes connectés"
|
msgstr "Comptes connectés"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:11
|
#: src/accounts/templates/accounts/delete.html:11
|
||||||
msgid "Please confirm your password to delete your account."
|
msgid "Please confirm your password to delete your account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:12
|
#: src/accounts/templates/accounts/delete.html:12
|
||||||
msgid "Deleted accounts cannot be recovered."
|
msgid "Deleted accounts cannot be recovered."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:15
|
#: src/accounts/templates/accounts/delete.html:15
|
||||||
msgid "Password incorrect."
|
msgid "Password incorrect."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:17
|
#: src/accounts/templates/accounts/delete.html:17
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Your account has been created."
|
#| msgid "Your account has been created."
|
||||||
msgid "Your account has been deleted."
|
msgid "Your account has been deleted."
|
||||||
msgstr "Votre compte a été créé."
|
msgstr "Votre compte a été créé."
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:22
|
#: src/accounts/templates/accounts/delete.html:22
|
||||||
#: accounts/templates/accounts/login.html:19
|
#: src/accounts/templates/accounts/login.html:19
|
||||||
#: accounts/templates/accounts/register.html:23
|
#: src/accounts/templates/accounts/register.html:23
|
||||||
#: events/templates/events/create_team.html:27
|
#: src/events/templates/events/create_team.html:27
|
||||||
#: events/templates/events/join_team.html:32
|
#: src/events/templates/events/join_team.html:32
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Mot de passe"
|
msgstr "Mot de passe"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:21
|
#: src/accounts/templates/accounts/edit.html:21
|
||||||
#: accounts/templates/accounts/login.html:18
|
#: src/accounts/templates/accounts/login.html:18
|
||||||
#: accounts/templates/accounts/register.html:22
|
#: src/accounts/templates/accounts/register.html:22
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
|
#: src/ctfs/templates/ctfs/ctf_info.html:63
|
||||||
#: events/templates/events/ctf_info.html:65
|
#: src/ctfs/templates/ctfs/ctfs_list.html:12
|
||||||
#: events/templates/events/event_info.html:64
|
#: src/events/templates/events/ctf_info.html:65
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:13
|
#: src/events/templates/events/event_info.html:64
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:13
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr "Pseudo"
|
msgstr "Pseudo"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:25
|
#: src/accounts/templates/accounts/edit.html:25
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:30
|
#: src/accounts/templates/accounts/edit.html:30
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:64
|
#: src/ctfs/templates/ctfs/ctf_info.html:64
|
||||||
#: events/templates/events/ctf_info.html:66
|
#: src/events/templates/events/ctf_info.html:66
|
||||||
#: events/templates/events/event_info.html:65
|
#: src/events/templates/events/event_info.html:65
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:14
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:14
|
||||||
msgid "Website"
|
msgid "Website"
|
||||||
msgstr "Site internet"
|
msgstr "Site internet"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:36
|
#: src/accounts/templates/accounts/edit.html:36
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Apply"
|
#| msgid "Apply"
|
||||||
msgid " Apply"
|
msgid " Apply"
|
||||||
msgstr "Appliquer"
|
msgstr "Appliquer"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:45
|
#: src/accounts/templates/accounts/edit.html:45
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Connected accounts"
|
#| msgid "Connected accounts"
|
||||||
msgid "Connected accounts"
|
msgid "Connected accounts"
|
||||||
msgstr "Comptes connectés"
|
msgstr "Comptes connectés"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:53
|
#: src/accounts/templates/accounts/edit.html:53
|
||||||
msgid "Disconnect Discord"
|
msgid "Disconnect Discord"
|
||||||
msgstr "Déconnecter Discord"
|
msgstr "Déconnecter Discord"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:59
|
#: src/accounts/templates/accounts/edit.html:59
|
||||||
msgid "Connect Discord"
|
msgid "Connect Discord"
|
||||||
msgstr "Connecter Discord"
|
msgstr "Connecter Discord"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:70
|
#: src/accounts/templates/accounts/edit.html:68
|
||||||
#: accounts/templates/accounts/profile.html:46
|
#, fuzzy
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
|
#| msgid "Disconnect Discord"
|
||||||
#: events/templates/events/event_info.html:66
|
msgid "Disconnect 42"
|
||||||
#: events/templates/events/event_info.html:89
|
msgstr "Déconnecter Discord"
|
||||||
#: events/templates/events/manage_team.html:40
|
|
||||||
#: events/templates/events/team.html:45
|
#: src/accounts/templates/accounts/edit.html:74
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:15
|
#: src/events/templates/events/event_pwd.html:19
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Connect Discord"
|
||||||
|
msgid "Connect 42"
|
||||||
|
msgstr "Connecter Discord"
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/edit.html:85
|
||||||
|
#: src/accounts/templates/accounts/profile.html:46
|
||||||
|
#: src/ctfs/templates/ctfs/ctf_info.html:65
|
||||||
|
#: src/ctfs/templates/ctfs/ctfs_list.html:13
|
||||||
|
#: src/events/templates/events/event_info.html:66
|
||||||
|
#: src/events/templates/events/event_info.html:89
|
||||||
|
#: src/events/templates/events/manage_team.html:40
|
||||||
|
#: src/events/templates/events/team.html:45
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:16
|
||||||
msgid "Score"
|
msgid "Score"
|
||||||
msgstr "Score"
|
msgstr "Score"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:78
|
#: src/accounts/templates/accounts/edit.html:93
|
||||||
#: accounts/templates/accounts/profile.html:60
|
#: src/accounts/templates/accounts/profile.html:60
|
||||||
msgid "Registered since"
|
msgid "Registered since"
|
||||||
msgstr "Inscrit depuis"
|
msgstr "Inscrit depuis"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:84
|
#: src/accounts/templates/accounts/edit.html:99
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Connected accounts"
|
#| msgid "Connected accounts"
|
||||||
msgid " Delete my account"
|
msgid " Delete my account"
|
||||||
msgstr "Comptes connectés"
|
msgstr "Comptes connectés"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:13
|
#: src/accounts/templates/accounts/login.html:13
|
||||||
msgid "Please, verify your infos."
|
msgid "Please, verify your infos."
|
||||||
msgstr "Merci de vérifier vos informations."
|
msgstr "Merci de vérifier vos informations."
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:22
|
#: src/accounts/templates/accounts/login.html:22
|
||||||
msgid "Reset password"
|
msgid "Reset password"
|
||||||
msgstr "Réinitialiser le mot de passe"
|
msgstr "Réinitialiser le mot de passe"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:31
|
#: src/accounts/templates/accounts/login.html:31
|
||||||
#: accounts/templates/accounts/register.html:38 templates/base.html:97
|
#: src/accounts/templates/accounts/register.html:37 src/templates/base.html:97
|
||||||
#: templates/registration/password_reset_complete.html:18
|
#: src/templates/registration/password_reset_complete.html:18
|
||||||
#: templates/registration/password_reset_confirm.html:38
|
#: src/templates/registration/password_reset_confirm.html:38
|
||||||
#: templates/registration/password_reset_done.html:18
|
#: src/templates/registration/password_reset_done.html:18
|
||||||
#: templates/registration/password_reset_form.html:26
|
#: src/templates/registration/password_reset_form.html:26
|
||||||
msgid "Login"
|
msgid "Login"
|
||||||
msgstr "Connexion"
|
msgstr "Connexion"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:32
|
#: src/accounts/templates/accounts/login.html:32
|
||||||
#: accounts/templates/accounts/register.html:37
|
#: src/accounts/templates/accounts/register.html:36
|
||||||
#: templates/registration/password_reset_complete.html:19
|
#: src/templates/registration/password_reset_complete.html:19
|
||||||
#: templates/registration/password_reset_confirm.html:39
|
#: src/templates/registration/password_reset_confirm.html:39
|
||||||
#: templates/registration/password_reset_done.html:19
|
#: src/templates/registration/password_reset_done.html:19
|
||||||
#: templates/registration/password_reset_form.html:27
|
#: src/templates/registration/password_reset_form.html:27
|
||||||
msgid "Sign up"
|
msgid "Sign up"
|
||||||
msgstr "Inscription"
|
msgstr "Inscription"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:10
|
#: src/accounts/templates/accounts/profile.html:10
|
||||||
msgid "Challenges Solved by"
|
msgid "Challenges Solved by"
|
||||||
msgstr "Challenges résolus par"
|
msgstr "Challenges résolus par"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:21
|
#: src/accounts/templates/accounts/profile.html:21
|
||||||
#: events/templates/events/team.html:20
|
#: src/events/templates/events/team.html:20
|
||||||
msgid "Challenge Name"
|
msgid "Challenge Name"
|
||||||
msgstr "Nom du challenge"
|
msgstr "Nom du challenge"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:22
|
#: src/accounts/templates/accounts/profile.html:22
|
||||||
#: events/templates/events/team.html:21
|
#: src/events/templates/events/team.html:21
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr "Catégorie"
|
msgstr "Catégorie"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:23
|
#: src/accounts/templates/accounts/profile.html:23
|
||||||
#: events/templates/events/team.html:22
|
#: src/events/templates/events/team.html:22
|
||||||
msgid "Points"
|
msgid "Points"
|
||||||
msgstr "Points"
|
msgstr "Points"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:24
|
#: src/accounts/templates/accounts/profile.html:24
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:66
|
#: src/ctfs/templates/ctfs/ctf_info.html:66
|
||||||
#: events/templates/events/ctf_info.html:67
|
#: src/events/templates/events/ctf_info.html:67
|
||||||
#: events/templates/events/team.html:23
|
#: src/events/templates/events/team.html:23
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Date"
|
msgstr "Date"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:39
|
#: src/accounts/templates/accounts/profile.html:39
|
||||||
msgid "It seems that this user has not solved any challenge yet..."
|
msgid "It seems that this user has not solved any challenge yet..."
|
||||||
msgstr "Il semble que cet utilisateur n'a pas encore résolu de CTF..."
|
msgstr "Il semble que cet utilisateur n'a pas encore résolu de CTF..."
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:47
|
#: src/accounts/templates/accounts/profile.html:47
|
||||||
#: events/templates/events/event_info.html:63
|
#: src/events/templates/events/event_info.html:63
|
||||||
#: events/templates/events/event_info.html:87
|
#: src/events/templates/events/event_info.html:87
|
||||||
#: events/templates/events/manage_team.html:41
|
#: src/events/templates/events/manage_team.html:41
|
||||||
#: events/templates/events/team.html:46
|
#: src/events/templates/events/team.html:46
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:12
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:12
|
||||||
msgid "Rank"
|
msgid "Rank"
|
||||||
msgstr "Rang"
|
msgstr "Rang"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:56
|
#: src/accounts/templates/accounts/profile.html:56
|
||||||
msgid "Status: Member"
|
#, fuzzy
|
||||||
msgstr "Status : Membre"
|
#| msgid "Members"
|
||||||
|
msgid "Member"
|
||||||
|
msgstr "Membres"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:58
|
#: src/accounts/templates/accounts/profile.html:58
|
||||||
msgid "Status: Visitor"
|
#, fuzzy
|
||||||
|
#| msgid "Status: Visitor"
|
||||||
|
msgid " Visitor"
|
||||||
msgstr "Status : Visiteur"
|
msgstr "Status : Visiteur"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:64
|
#: src/accounts/templates/accounts/profile.html:64
|
||||||
#: events/templates/events/team.html:57
|
#: src/events/templates/events/team.html:57
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Categories"
|
#| msgid "Categories"
|
||||||
msgid "Categories stats"
|
msgid "Categories stats"
|
||||||
msgstr "Catégories"
|
msgstr "Catégories"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:13
|
#: src/accounts/templates/accounts/profile.html:81
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Challenge Name"
|
||||||
|
msgid "Challenges created"
|
||||||
|
msgstr "Nom du challenge"
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/profile.html:87
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "It seems that this user has not solved any challenge yet..."
|
||||||
|
msgid "It seems that this user has not created any challenge yet..."
|
||||||
|
msgstr "Il semble que cet utilisateur n'a pas encore résolu de CTF..."
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/register.html:13
|
||||||
msgid "Welcome !"
|
msgid "Welcome !"
|
||||||
msgstr "Bienvenue !"
|
msgstr "Bienvenue !"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:14
|
#: src/accounts/templates/accounts/register.html:14
|
||||||
msgid "Your account has been created."
|
msgid "Your account has been created."
|
||||||
msgstr "Votre compte a été créé."
|
msgstr "Votre compte a été créé."
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:25
|
#: src/accounts/templates/accounts/register.html:25
|
||||||
msgid "Personal website"
|
msgid "Personal website"
|
||||||
msgstr "Site personnel"
|
msgstr "Site personnel"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:26
|
#: src/accounts/templates/accounts/register.html:26
|
||||||
#: events/templates/events/event_info.html:119
|
#: src/events/templates/events/event_info.html:119
|
||||||
msgid "Register"
|
msgid "Register"
|
||||||
msgstr "Inscription"
|
msgstr "Inscription"
|
||||||
|
|
||||||
#: accounts/views/views.py:33
|
#: src/accounts/views/views.py:33
|
||||||
msgid "Your account was inactive."
|
msgid "Your account was inactive."
|
||||||
msgstr "Votre compte était inactif."
|
msgstr "Votre compte était inactif."
|
||||||
|
|
||||||
#: accounts/views/views.py:52
|
#: src/accounts/views/views.py:57
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Your password must contain at least 8 characters."
|
||||||
|
msgid "The password must be at least 8 characters long."
|
||||||
|
msgstr "Votre mot de passe doit contenir au moins 8 caractères."
|
||||||
|
|
||||||
|
#: src/accounts/views/views.py:67
|
||||||
msgid ""
|
msgid ""
|
||||||
"The password must contain at least one letter and at least one digit or "
|
"The password must contain at least one letter and at least one digit or "
|
||||||
"punctuation character."
|
"punctuation character."
|
||||||
|
@ -223,436 +260,454 @@ msgstr ""
|
||||||
"Le mot de passe doit contenir au moins une lettre, un chiffre et un signe de "
|
"Le mot de passe doit contenir au moins une lettre, un chiffre et un signe de "
|
||||||
"ponctuation."
|
"ponctuation."
|
||||||
|
|
||||||
#: accounts/views/views.py:54
|
#: src/accounts/views/views.py:77
|
||||||
msgid "A user with that email already exists."
|
msgid "A user with that email already exists."
|
||||||
msgstr "Un utilisateur avec cet email existe déjà."
|
msgstr "Un utilisateur avec cet email existe déjà."
|
||||||
|
|
||||||
#: accounts/views/views.py:67
|
#: src/accounts/views/views.py:99
|
||||||
msgid "A user with that username already exists."
|
msgid "A user with that username already exists."
|
||||||
msgstr "Un utilisateur avec ce pseudo existe déjà."
|
msgstr "Un utilisateur avec ce pseudo existe déjà."
|
||||||
|
|
||||||
#: accounts/views/views.py:95
|
#: src/accounts/views/views.py:132
|
||||||
msgid "Email already taken."
|
msgid "Email already taken."
|
||||||
msgstr "L'adresse mail est déjà utilisée."
|
msgstr "L'adresse mail est déjà utilisée."
|
||||||
|
|
||||||
#: accounts/views/views.py:101
|
#: src/accounts/views/views.py:138
|
||||||
msgid "Username already taken."
|
msgid "Username already taken."
|
||||||
msgstr "Le pseudo est déjà utilisé."
|
msgstr "Le pseudo est déjà utilisé."
|
||||||
|
|
||||||
#: accounts/views/views.py:105 events/views/teams.py:124
|
#: src/accounts/views/views.py:142 src/events/views/teams.py:124
|
||||||
msgid "Updated."
|
msgid "Updated."
|
||||||
msgstr "Mis à jour."
|
msgstr "Mis à jour."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:12
|
#: src/ctfs/templates/ctfs/ctf_info.html:12
|
||||||
#: events/templates/events/ctf_info.html:12
|
#: src/events/templates/events/ctf_info.html:12
|
||||||
msgid "Published date"
|
msgid "Published date"
|
||||||
msgstr "Date de publication"
|
msgstr "Date de publication"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:16
|
#: src/ctfs/templates/ctfs/ctf_info.html:16
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "No category available."
|
#| msgid "No category available."
|
||||||
msgid "Challenge is not yet available."
|
msgid "Challenge is not yet available."
|
||||||
msgstr "Il n'y a pas de catégorie disponible."
|
msgstr "Il n'y a pas de catégorie disponible."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:29
|
#: src/ctfs/templates/ctfs/ctf_info.html:29
|
||||||
#: events/templates/events/ctf_info.html:24
|
#: src/events/templates/events/ctf_info.html:24
|
||||||
msgid "Congratulation !"
|
msgid "Congratulation !"
|
||||||
msgstr "Félicitations !"
|
msgstr "Félicitations !"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:31
|
#: src/ctfs/templates/ctfs/ctf_info.html:31
|
||||||
#: events/templates/events/ctf_info.html:26
|
#: src/events/templates/events/ctf_info.html:26
|
||||||
msgid "Already flagged"
|
msgid "Already flagged"
|
||||||
msgstr "Déjà résolu"
|
msgstr "Déjà résolu"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
|
#: src/ctfs/templates/ctfs/ctf_info.html:33
|
||||||
#: events/templates/events/ctf_info.html:36
|
#: src/ctfs/templates/ctfs/ctf_info.html:42
|
||||||
#: events/templates/events/ctf_info.html:45
|
#: src/events/templates/events/ctf_info.html:36
|
||||||
|
#: src/events/templates/events/ctf_info.html:45
|
||||||
msgid "Start the challenge"
|
msgid "Start the challenge"
|
||||||
msgstr "Démarrer le challenge"
|
msgstr "Démarrer le challenge"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
|
#: src/ctfs/templates/ctfs/ctf_info.html:35
|
||||||
#: events/templates/events/ctf_info.html:38
|
#: src/ctfs/templates/ctfs/ctf_info.html:44
|
||||||
#: events/templates/events/ctf_info.html:47
|
#: src/events/templates/events/ctf_info.html:38
|
||||||
|
#: src/events/templates/events/ctf_info.html:47
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "Télécharger"
|
msgstr "Télécharger"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:39
|
#: src/ctfs/templates/ctfs/ctf_info.html:39
|
||||||
#: events/templates/events/ctf_info.html:42
|
#: src/events/templates/events/ctf_info.html:42
|
||||||
msgid "Wrong flag ! You can do it !"
|
msgid "Wrong flag ! You can do it !"
|
||||||
msgstr "Mauvais flag ! Vous pouvez le faire !"
|
msgstr "Mauvais flag ! Vous pouvez le faire !"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:58
|
#: src/ctfs/templates/ctfs/ctf_info.html:58
|
||||||
#: events/templates/events/ctf_info.html:60
|
#: src/events/templates/events/ctf_info.html:60
|
||||||
msgid "Solved by"
|
msgid "Solved by"
|
||||||
msgstr "Résolu par"
|
msgstr "Résolu par"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:82
|
#: src/ctfs/templates/ctfs/ctf_info.html:82
|
||||||
#: events/templates/events/ctf_info.html:90
|
#: src/events/templates/events/ctf_info.html:90
|
||||||
msgid "Nobody has solved this challenge yet."
|
msgid "Nobody has solved this challenge yet."
|
||||||
msgstr "Personne n'a résolu ce CTF."
|
msgstr "Personne n'a résolu ce CTF."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:89
|
#: src/ctfs/templates/ctfs/ctf_info.html:89
|
||||||
#: events/templates/events/ctf_info.html:97
|
#: src/events/templates/events/ctf_info.html:97
|
||||||
msgid "Author"
|
msgid "Author"
|
||||||
msgstr "Auteur"
|
msgstr "Auteur"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:90
|
#: src/ctfs/templates/ctfs/ctf_info.html:90
|
||||||
#: events/templates/events/ctf_info.html:98
|
#: src/events/templates/events/ctf_info.html:98
|
||||||
msgid "Point reward"
|
msgid "Point reward"
|
||||||
msgstr "Points"
|
msgstr "Points"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:14
|
#: src/ctfs/templates/ctfs/ctfs_list.html:14
|
||||||
msgid "Solved"
|
msgid "Solved"
|
||||||
msgstr "Résolu"
|
msgstr "Résolu"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:37
|
#: src/ctfs/templates/ctfs/ctfs_list.html:37
|
||||||
msgid "No ctf available for this category."
|
msgid "No ctf available for this category."
|
||||||
msgstr "Il n'y a pas de challenges dans cette catégorie."
|
msgstr "Il n'y a pas de challenges dans cette catégorie."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:42
|
#: src/ctfs/templates/ctfs/ctfs_list.html:42
|
||||||
msgid "Categories"
|
msgid "Categories"
|
||||||
msgstr "Catégories"
|
msgstr "Catégories"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:48 templates/base.html:54
|
#: src/ctfs/templates/ctfs/ctfs_list.html:48 src/templates/base.html:56
|
||||||
msgid "No category available."
|
msgid "No category available."
|
||||||
msgstr "Il n'y a pas de catégorie disponible."
|
msgstr "Il n'y a pas de catégorie disponible."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:10
|
#: src/events/templates/events/create_team.html:10
|
||||||
#: events/templates/events/join_team.html:10
|
#: src/events/templates/events/join_team.html:10
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "This event start at"
|
#| msgid "This event start at"
|
||||||
msgid "This event starts at"
|
msgid "This event starts at"
|
||||||
msgstr "Cet événement débute à"
|
msgstr "Cet événement débute à"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:17
|
#: src/events/templates/events/create_team.html:17
|
||||||
#: events/templates/events/join_team.html:17
|
#: src/events/templates/events/join_team.html:17
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "You're already registered to this event."
|
#| msgid "You're already registered to this event."
|
||||||
msgid "You need to be registered to the event."
|
msgid "You need to be registered to the event."
|
||||||
msgstr "Vous êtes déjà inscrit à cet événement."
|
msgstr "Vous êtes déjà inscrit à cet événement."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:20 events/views/teams.py:120
|
#: src/events/templates/events/create_team.html:20
|
||||||
|
#: src/events/views/teams.py:120
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Username already taken."
|
#| msgid "Username already taken."
|
||||||
msgid "Name already taken."
|
msgid "Name already taken."
|
||||||
msgstr "Ce nom est déjà utilisé."
|
msgstr "Ce nom est déjà utilisé."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:26
|
#: src/events/templates/events/create_team.html:26
|
||||||
#: events/templates/events/join_team.html:31
|
#: src/events/templates/events/join_team.html:31
|
||||||
#: events/templates/events/manage_team.html:22
|
#: src/events/templates/events/manage_team.html:22
|
||||||
msgid "Team name"
|
msgid "Team name"
|
||||||
msgstr "Nom de l'équipe"
|
msgstr "Nom de l'équipe"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:28
|
#: src/events/templates/events/create_team.html:28
|
||||||
#: events/templates/events/create_team.html:49
|
#: src/events/templates/events/create_team.html:49
|
||||||
#: events/templates/events/join_team.html:54
|
#: src/events/templates/events/join_team.html:54
|
||||||
msgid "Create Team"
|
msgid "Create Team"
|
||||||
msgstr "Créer une équipe"
|
msgstr "Créer une équipe"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:33
|
#: src/events/templates/events/create_team.html:33
|
||||||
#: events/templates/events/event_pwd.html:28
|
#: src/events/templates/events/event_pwd.html:44
|
||||||
#: events/templates/events/join_team.html:38
|
#: src/events/templates/events/join_team.html:38
|
||||||
msgid "You need to be logged to access this event."
|
msgid "You need to be logged to access this event."
|
||||||
msgstr "Vous devez être connecté pour accéder à cet événement."
|
msgstr "Vous devez être connecté pour accéder à cet événement."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:42
|
#: src/events/templates/events/create_team.html:42
|
||||||
#: events/templates/events/event_info.html:113
|
#: src/events/templates/events/event_info.html:113
|
||||||
#: events/templates/events/event_pwd.html:36
|
#: src/events/templates/events/event_pwd.html:52
|
||||||
#: events/templates/events/join_team.html:47
|
#: src/events/templates/events/join_team.html:47
|
||||||
msgid "Starts at"
|
msgid "Starts at"
|
||||||
msgstr "Début"
|
msgstr "Début"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:43
|
#: src/events/templates/events/create_team.html:43
|
||||||
#: events/templates/events/event_info.html:114
|
#: src/events/templates/events/event_info.html:114
|
||||||
#: events/templates/events/event_pwd.html:37
|
#: src/events/templates/events/event_pwd.html:53
|
||||||
#: events/templates/events/join_team.html:48
|
#: src/events/templates/events/join_team.html:48
|
||||||
msgid "Ends at"
|
msgid "Ends at"
|
||||||
msgstr "Fin"
|
msgstr "Fin"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:47
|
#: src/events/templates/events/create_team.html:47
|
||||||
#: events/templates/events/event_info.html:129
|
#: src/events/templates/events/event_info.html:129
|
||||||
#: events/templates/events/join_team.html:52
|
#: src/events/templates/events/join_team.html:52
|
||||||
msgid "Manage my team"
|
msgid "Manage my team"
|
||||||
msgstr "Gérer mon équipe"
|
msgstr "Gérer mon équipe"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:48
|
#: src/events/templates/events/create_team.html:48
|
||||||
#: events/templates/events/join_team.html:33
|
#: src/events/templates/events/join_team.html:33
|
||||||
#: events/templates/events/join_team.html:53
|
#: src/events/templates/events/join_team.html:53
|
||||||
msgid "Join Team"
|
msgid "Join Team"
|
||||||
msgstr "Rejoindre une équipe"
|
msgstr "Rejoindre une équipe"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:53
|
#: src/events/templates/events/create_team.html:53
|
||||||
#: events/templates/events/join_team.html:58
|
#: src/events/templates/events/join_team.html:58
|
||||||
msgid "Auto-matching"
|
msgid "Auto-matching"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:57
|
#: src/events/templates/events/create_team.html:57
|
||||||
#: events/templates/events/join_team.html:62
|
#: src/events/templates/events/join_team.html:62
|
||||||
msgid "Find me a team !"
|
msgid "Find me a team !"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:10
|
#: src/events/templates/events/ctf_info.html:10
|
||||||
msgid "Event"
|
msgid "Event"
|
||||||
msgstr "Événement"
|
msgstr "Événement"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:18
|
#: src/events/templates/events/ctf_info.html:18
|
||||||
msgid ""
|
msgid ""
|
||||||
"No translation available. Please try another language (English or French)."
|
"No translation available. Please try another language (English or French)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:28
|
#: src/events/templates/events/ctf_info.html:28
|
||||||
#: events/templates/events/event_info.html:18
|
#: src/events/templates/events/event_info.html:18
|
||||||
msgid "This event is over."
|
msgid "This event is over."
|
||||||
msgstr "Cet événement est terminé."
|
msgstr "Cet événement est terminé."
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:30
|
#: src/events/templates/events/ctf_info.html:30
|
||||||
msgid "Error while processing your request. (Invalid Form)"
|
msgid "Error while processing your request. (Invalid Form)"
|
||||||
msgstr "Erreur lors du traitement de votre requête. (Formulaire non valide)"
|
msgstr "Erreur lors du traitement de votre requête. (Formulaire non valide)"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:32
|
#: src/events/templates/events/ctf_info.html:32
|
||||||
msgid "You must register to the event before submitting flags."
|
msgid "You must register to the event before submitting flags."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:34
|
#: src/events/templates/events/ctf_info.html:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is a team event, please create or join a team before submitting flags."
|
"This is a team event, please create or join a team before submitting flags."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:9
|
#: src/events/templates/events/event_info.html:9
|
||||||
msgid "Subscriptions is over."
|
msgid "Subscriptions is over."
|
||||||
msgstr "Les inscriptions sont terminées."
|
msgstr "Les inscriptions sont terminées."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:12
|
#: src/events/templates/events/event_info.html:12
|
||||||
#: events/templates/events/event_pwd.html:18
|
#: src/events/templates/events/event_pwd.html:33
|
||||||
msgid "You're already registered to this event."
|
msgid "You're already registered to this event."
|
||||||
msgstr "Vous êtes déjà inscrit à cet événement."
|
msgstr "Vous êtes déjà inscrit à cet événement."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:20
|
#: src/events/templates/events/event_info.html:20
|
||||||
#: events/templates/events/event_pwd.html:9
|
#: src/events/templates/events/event_pwd.html:9
|
||||||
msgid "This event start at"
|
msgid "This event start at"
|
||||||
msgstr "Cet événement débute à"
|
msgstr "Cet événement débute à"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:30
|
#: src/events/templates/events/event_info.html:30
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Challenge Name"
|
#| msgid "Challenge Name"
|
||||||
msgid "Challenges"
|
msgid "Challenges"
|
||||||
msgstr "Nom du challenge"
|
msgstr "Nom du challenge"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:47
|
#: src/events/templates/events/event_info.html:47
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "No category available."
|
#| msgid "No category available."
|
||||||
msgid "No challenges available."
|
msgid "No challenges available."
|
||||||
msgstr "Il n'y a pas de catégorie disponible."
|
msgstr "Il n'y a pas de catégorie disponible."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:51
|
#: src/events/templates/events/event_info.html:51
|
||||||
msgid "The event has not started yet."
|
msgid "The event has not started yet."
|
||||||
msgstr "L'événement n'a pas encore commencé."
|
msgstr "L'événement n'a pas encore commencé."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:57
|
#: src/events/templates/events/event_info.html:57
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Scoreboard"
|
#| msgid "Scoreboard"
|
||||||
msgid "ScoreBoard"
|
msgid "ScoreBoard"
|
||||||
msgstr "Classement"
|
msgstr "Classement"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:88
|
#: src/events/templates/events/event_info.html:88
|
||||||
msgid "Team"
|
msgid "Team"
|
||||||
msgstr "Équipe"
|
msgstr "Équipe"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:106
|
#: src/events/templates/events/event_info.html:106
|
||||||
msgid "No one have earn point yet, you gonna be the first ?"
|
msgid "No one have earn point yet, you gonna be the first ?"
|
||||||
msgstr "Personne n'a encore gagné de point, allez-vous être le premier ?"
|
msgstr "Personne n'a encore gagné de point, allez-vous être le premier ?"
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:15
|
#: src/events/templates/events/event_pwd.html:16
|
||||||
#: events/templates/events/join_team.html:22
|
msgid ""
|
||||||
|
"This event is reserved for one or more 42 campuses. If you have not "
|
||||||
|
"connected your intranet to 42CTF, you can do so with this button: "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/events/templates/events/event_pwd.html:25
|
||||||
|
msgid ""
|
||||||
|
"This event is reserved for one or more 42 campuses. And unfortunately your "
|
||||||
|
"campus can't participate. Do not hesitate to contact us to organize an event "
|
||||||
|
"on your campus!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/events/templates/events/event_pwd.html:30
|
||||||
|
#: src/events/templates/events/join_team.html:22
|
||||||
msgid "Wrong password submited."
|
msgid "Wrong password submited."
|
||||||
msgstr "Mauvais mot de passe saisi."
|
msgstr "Mauvais mot de passe saisi."
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:20
|
#: src/events/templates/events/event_pwd.html:35
|
||||||
msgid "This event is password protected"
|
msgid "This event is password protected"
|
||||||
msgstr "Cet événement est protégé par un mot de passe"
|
msgstr "Cet événement est protégé par un mot de passe"
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:21
|
#: src/events/templates/events/event_pwd.html:36
|
||||||
msgid "You need to submit the event password to gain access to this event."
|
msgid "You need to submit the event password to gain access to this event."
|
||||||
msgstr "Vous devez saisir le mot de passe de l'événement pour y avoir accès."
|
msgstr "Vous devez saisir le mot de passe de l'événement pour y avoir accès."
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:6 templates/base.html:61
|
#: src/events/templates/events/events_list.html:6 src/templates/base.html:65
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "Événements"
|
msgstr "Événements"
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:38
|
#: src/events/templates/events/events_list.html:38
|
||||||
msgid "See more"
|
msgid "See more"
|
||||||
msgstr "Voir plus"
|
msgstr "Voir plus"
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:44
|
#: src/events/templates/events/events_list.html:44
|
||||||
msgid "No events available."
|
msgid "No events available."
|
||||||
msgstr "Pas d'évènement disponible."
|
msgstr "Pas d'évènement disponible."
|
||||||
|
|
||||||
#: events/templates/events/join_team.html:20
|
#: src/events/templates/events/join_team.html:20
|
||||||
msgid "Team does not exist."
|
msgid "Team does not exist."
|
||||||
msgstr "Cette équipe n'existe pas."
|
msgstr "Cette équipe n'existe pas."
|
||||||
|
|
||||||
#: events/templates/events/join_team.html:24
|
#: src/events/templates/events/join_team.html:24
|
||||||
msgid "Maximum size reached."
|
msgid "Maximum size reached."
|
||||||
msgstr "Taille maximale atteinte."
|
msgstr "Taille maximale atteinte."
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:26
|
#: src/events/templates/events/manage_team.html:26
|
||||||
msgid "Team password"
|
msgid "Team password"
|
||||||
msgstr "Mot de passe de l'équipe"
|
msgstr "Mot de passe de l'équipe"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:29
|
#: src/events/templates/events/manage_team.html:29
|
||||||
msgid "Apply"
|
msgid "Apply"
|
||||||
msgstr "Appliquer"
|
msgstr "Appliquer"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:44
|
#: src/events/templates/events/manage_team.html:44
|
||||||
#: events/templates/events/team.html:49
|
#: src/events/templates/events/team.html:49
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "Membres"
|
msgstr "Membres"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:52
|
#: src/events/templates/events/manage_team.html:52
|
||||||
msgid "Leave Team"
|
msgid "Leave Team"
|
||||||
msgstr "Quitte l'équipe"
|
msgstr "Quitte l'équipe"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:59
|
#: src/events/templates/events/manage_team.html:59
|
||||||
msgid "Open to automatching"
|
msgid "Open to automatching"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:66
|
#: src/events/templates/events/manage_team.html:66
|
||||||
msgid "Close to automatching"
|
msgid "Close to automatching"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/team.html:38
|
#: src/events/templates/events/team.html:38
|
||||||
msgid "It seems that this team has not solved any challenge yet..."
|
msgid "It seems that this team has not solved any challenge yet..."
|
||||||
msgstr "Il semble que cette équipe n'a pas encore résolu de challenge..."
|
msgstr "Il semble que cette équipe n'a pas encore résolu de challenge..."
|
||||||
|
|
||||||
#: home/templates/home/home.html:21
|
#: src/home/templates/home/home.html:21
|
||||||
msgid "Weekly Top 5"
|
msgid "Weekly Top 5"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:48
|
#: src/home/templates/home/home.html:48
|
||||||
msgid "No article available."
|
msgid "No article available."
|
||||||
msgstr "Il n'y a pas d'article disponible."
|
msgstr "Il n'y a pas d'article disponible."
|
||||||
|
|
||||||
#: home/templates/home/home.html:53
|
#: src/home/templates/home/home.html:53
|
||||||
msgid "Latest challenges added"
|
msgid "Latest challenges added"
|
||||||
msgstr "Derniers challenges ajoutés"
|
msgstr "Derniers challenges ajoutés"
|
||||||
|
|
||||||
#: home/templates/home/home.html:58
|
#: src/home/templates/home/home.html:58
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Points"
|
#| msgid "Points"
|
||||||
msgid "points"
|
msgid "points"
|
||||||
msgstr "Points"
|
msgstr "Points"
|
||||||
|
|
||||||
#: home/templates/home/home.html:62
|
#: src/home/templates/home/home.html:62
|
||||||
msgid "No ctf available."
|
msgid "No ctf available."
|
||||||
msgstr "Pas de challenge disponible"
|
msgstr "Pas de challenge disponible"
|
||||||
|
|
||||||
#: home/templates/home/home.html:66
|
#: src/home/templates/home/home.html:66
|
||||||
msgid "Latest Flags"
|
msgid "Latest Flags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:80
|
#: src/home/templates/home/home.html:80
|
||||||
msgid "Flags"
|
msgid "Flags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:86
|
#: src/home/templates/home/home.html:86
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Username"
|
#| msgid "Username"
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "Pseudo"
|
msgstr "Pseudo"
|
||||||
|
|
||||||
#: project/settings.py:116
|
#: src/project/settings.py:116
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr "Anglais"
|
msgstr "Anglais"
|
||||||
|
|
||||||
#: project/settings.py:117
|
#: src/project/settings.py:117
|
||||||
msgid "German"
|
msgid "German"
|
||||||
msgstr "Allemand"
|
msgstr "Allemand"
|
||||||
|
|
||||||
#: project/settings.py:118
|
#: src/project/settings.py:118
|
||||||
msgid "French"
|
msgid "French"
|
||||||
msgstr "Français"
|
msgstr "Français"
|
||||||
|
|
||||||
#: project/settings.py:119
|
#: src/project/settings.py:119
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Russe"
|
msgstr "Russe"
|
||||||
|
|
||||||
#: project/settings.py:120
|
#: src/project/settings.py:120
|
||||||
msgid "Japanese"
|
msgid "Japanese"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: project/settings.py:121
|
#: src/project/settings.py:121
|
||||||
msgid "Spanish"
|
msgid "Spanish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:38
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:15
|
||||||
|
msgid "Campus"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:46
|
||||||
msgid "First"
|
msgid "First"
|
||||||
msgstr "Début"
|
msgstr "Début"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:39
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:47
|
||||||
msgid "Previous"
|
msgid "Previous"
|
||||||
msgstr "Précédente"
|
msgstr "Précédente"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:43
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:51
|
||||||
msgid "Page "
|
msgid "Page "
|
||||||
msgstr "Page"
|
msgstr "Page"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:47
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:55
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Suivante"
|
msgstr "Suivante"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:48
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:56
|
||||||
msgid "Last"
|
msgid "Last"
|
||||||
msgstr "Fin"
|
msgstr "Fin"
|
||||||
|
|
||||||
#: templates/base.html:59
|
#: src/templates/base.html:62
|
||||||
msgid "Scoreboard"
|
msgid "Scoreboard"
|
||||||
msgstr "Classement"
|
msgstr "Classement"
|
||||||
|
|
||||||
#: templates/base.html:64
|
#: src/templates/base.html:83
|
||||||
msgid "Resources"
|
#, fuzzy
|
||||||
msgstr ""
|
#| msgid "Become a Patron!"
|
||||||
|
msgid "Become a member"
|
||||||
|
msgstr "Soutenez nous via Patreon !"
|
||||||
|
|
||||||
#: templates/base.html:93
|
#: src/templates/base.html:93
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Déconnexion"
|
msgstr "Déconnexion"
|
||||||
|
|
||||||
#: templates/base.html:100
|
#: src/templates/base.html:100
|
||||||
msgid "Sign Up"
|
msgid "Sign Up"
|
||||||
msgstr "Inscription"
|
msgstr "Inscription"
|
||||||
|
|
||||||
#: templates/base.html:135
|
#: src/templates/registration/password_reset_complete.html:11
|
||||||
msgid "Become a Patron!"
|
|
||||||
msgstr "Soutenez nous via Patreon !"
|
|
||||||
|
|
||||||
#: templates/registration/password_reset_complete.html:11
|
|
||||||
msgid "Your new password has been set."
|
msgid "Your new password has been set."
|
||||||
msgstr "Votre mot de passe a été mis à jour."
|
msgstr "Votre mot de passe a été mis à jour."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:20
|
#: src/templates/registration/password_reset_confirm.html:20
|
||||||
msgid "Your password can’t be too similar to your other personal information."
|
msgid "Your password can’t be too similar to your other personal information."
|
||||||
msgstr "Votre mot de passe ne peut pas être similaire à votre adresse mail."
|
msgstr "Votre mot de passe ne peut pas être similaire à votre adresse mail."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:21
|
#: src/templates/registration/password_reset_confirm.html:21
|
||||||
msgid "Your password must contain at least 8 characters."
|
msgid "Your password must contain at least 8 characters."
|
||||||
msgstr "Votre mot de passe doit contenir au moins 8 caractères."
|
msgstr "Votre mot de passe doit contenir au moins 8 caractères."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:22
|
#: src/templates/registration/password_reset_confirm.html:22
|
||||||
msgid "Your password can’t be a commonly used password."
|
msgid "Your password can’t be a commonly used password."
|
||||||
msgstr "Votre mot de passe ne peut pas être un mot de passe commun."
|
msgstr "Votre mot de passe ne peut pas être un mot de passe commun."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:23
|
#: src/templates/registration/password_reset_confirm.html:23
|
||||||
msgid "Your password can’t be entirely numeric."
|
msgid "Your password can’t be entirely numeric."
|
||||||
msgstr "Votre mot de passe ne peut pas être entièrement numérique."
|
msgstr "Votre mot de passe ne peut pas être entièrement numérique."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:26
|
#: src/templates/registration/password_reset_confirm.html:26
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "Confirmer"
|
msgstr "Confirmer"
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:28
|
#: src/templates/registration/password_reset_confirm.html:28
|
||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr "Soumettre"
|
msgstr "Soumettre"
|
||||||
|
|
||||||
#: templates/registration/password_reset_done.html:11
|
#: src/templates/registration/password_reset_done.html:11
|
||||||
msgid ""
|
msgid ""
|
||||||
"We've emailed you instructions for setting your password. You should receive "
|
"We've emailed you instructions for setting your password. You should receive "
|
||||||
"the email shortly!"
|
"the email shortly!"
|
||||||
|
@ -660,10 +715,13 @@ msgstr ""
|
||||||
"Vous devrierz recevoir rapidement un email avec des instructions pour "
|
"Vous devrierz recevoir rapidement un email avec des instructions pour "
|
||||||
"réinitialiser votre mot de passe."
|
"réinitialiser votre mot de passe."
|
||||||
|
|
||||||
#: templates/registration/password_reset_form.html:16
|
#: src/templates/registration/password_reset_form.html:16
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
msgstr "Réinitialiser"
|
msgstr "Réinitialiser"
|
||||||
|
|
||||||
|
#~ msgid "Status: Member"
|
||||||
|
#~ msgstr "Status : Membre"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "Error: you're not registered to this event, so you can't register scores, "
|
#~ "Error: you're not registered to this event, so you can't register scores, "
|
||||||
#~ "fucking logic."
|
#~ "fucking logic."
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
|
"POT-Creation-Date: 2022-08-16 19:28+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -18,614 +18,653 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:8
|
#: src/accounts/templates/accounts/delete.html:8
|
||||||
msgid "Delete account"
|
msgid "Delete account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:11
|
#: src/accounts/templates/accounts/delete.html:11
|
||||||
msgid "Please confirm your password to delete your account."
|
msgid "Please confirm your password to delete your account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:12
|
#: src/accounts/templates/accounts/delete.html:12
|
||||||
msgid "Deleted accounts cannot be recovered."
|
msgid "Deleted accounts cannot be recovered."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:15
|
#: src/accounts/templates/accounts/delete.html:15
|
||||||
msgid "Password incorrect."
|
msgid "Password incorrect."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:17
|
#: src/accounts/templates/accounts/delete.html:17
|
||||||
msgid "Your account has been deleted."
|
msgid "Your account has been deleted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:22
|
#: src/accounts/templates/accounts/delete.html:22
|
||||||
#: accounts/templates/accounts/login.html:19
|
#: src/accounts/templates/accounts/login.html:19
|
||||||
#: accounts/templates/accounts/register.html:23
|
#: src/accounts/templates/accounts/register.html:23
|
||||||
#: events/templates/events/create_team.html:27
|
#: src/events/templates/events/create_team.html:27
|
||||||
#: events/templates/events/join_team.html:32
|
#: src/events/templates/events/join_team.html:32
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:21
|
#: src/accounts/templates/accounts/edit.html:21
|
||||||
#: accounts/templates/accounts/login.html:18
|
#: src/accounts/templates/accounts/login.html:18
|
||||||
#: accounts/templates/accounts/register.html:22
|
#: src/accounts/templates/accounts/register.html:22
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
|
#: src/ctfs/templates/ctfs/ctf_info.html:63
|
||||||
#: events/templates/events/ctf_info.html:65
|
#: src/ctfs/templates/ctfs/ctfs_list.html:12
|
||||||
#: events/templates/events/event_info.html:64
|
#: src/events/templates/events/ctf_info.html:65
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:13
|
#: src/events/templates/events/event_info.html:64
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:13
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:25
|
#: src/accounts/templates/accounts/edit.html:25
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:30
|
#: src/accounts/templates/accounts/edit.html:30
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:64
|
#: src/ctfs/templates/ctfs/ctf_info.html:64
|
||||||
#: events/templates/events/ctf_info.html:66
|
#: src/events/templates/events/ctf_info.html:66
|
||||||
#: events/templates/events/event_info.html:65
|
#: src/events/templates/events/event_info.html:65
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:14
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:14
|
||||||
msgid "Website"
|
msgid "Website"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:36
|
#: src/accounts/templates/accounts/edit.html:36
|
||||||
msgid " Apply"
|
msgid " Apply"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:45
|
#: src/accounts/templates/accounts/edit.html:45
|
||||||
msgid "Connected accounts"
|
msgid "Connected accounts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:53
|
#: src/accounts/templates/accounts/edit.html:53
|
||||||
msgid "Disconnect Discord"
|
msgid "Disconnect Discord"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:59
|
#: src/accounts/templates/accounts/edit.html:59
|
||||||
msgid "Connect Discord"
|
msgid "Connect Discord"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:70
|
#: src/accounts/templates/accounts/edit.html:68
|
||||||
#: accounts/templates/accounts/profile.html:46
|
msgid "Disconnect 42"
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
|
msgstr ""
|
||||||
#: events/templates/events/event_info.html:66
|
|
||||||
#: events/templates/events/event_info.html:89
|
#: src/accounts/templates/accounts/edit.html:74
|
||||||
#: events/templates/events/manage_team.html:40
|
#: src/events/templates/events/event_pwd.html:19
|
||||||
#: events/templates/events/team.html:45
|
msgid "Connect 42"
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:15
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/edit.html:85
|
||||||
|
#: src/accounts/templates/accounts/profile.html:46
|
||||||
|
#: src/ctfs/templates/ctfs/ctf_info.html:65
|
||||||
|
#: src/ctfs/templates/ctfs/ctfs_list.html:13
|
||||||
|
#: src/events/templates/events/event_info.html:66
|
||||||
|
#: src/events/templates/events/event_info.html:89
|
||||||
|
#: src/events/templates/events/manage_team.html:40
|
||||||
|
#: src/events/templates/events/team.html:45
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:16
|
||||||
msgid "Score"
|
msgid "Score"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:78
|
#: src/accounts/templates/accounts/edit.html:93
|
||||||
#: accounts/templates/accounts/profile.html:60
|
#: src/accounts/templates/accounts/profile.html:60
|
||||||
msgid "Registered since"
|
msgid "Registered since"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:84
|
#: src/accounts/templates/accounts/edit.html:99
|
||||||
msgid " Delete my account"
|
msgid " Delete my account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:13
|
#: src/accounts/templates/accounts/login.html:13
|
||||||
msgid "Please, verify your infos."
|
msgid "Please, verify your infos."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:22
|
#: src/accounts/templates/accounts/login.html:22
|
||||||
msgid "Reset password"
|
msgid "Reset password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:31
|
#: src/accounts/templates/accounts/login.html:31
|
||||||
#: accounts/templates/accounts/register.html:38 templates/base.html:97
|
#: src/accounts/templates/accounts/register.html:37 src/templates/base.html:97
|
||||||
#: templates/registration/password_reset_complete.html:18
|
#: src/templates/registration/password_reset_complete.html:18
|
||||||
#: templates/registration/password_reset_confirm.html:38
|
#: src/templates/registration/password_reset_confirm.html:38
|
||||||
#: templates/registration/password_reset_done.html:18
|
#: src/templates/registration/password_reset_done.html:18
|
||||||
#: templates/registration/password_reset_form.html:26
|
#: src/templates/registration/password_reset_form.html:26
|
||||||
msgid "Login"
|
msgid "Login"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:32
|
#: src/accounts/templates/accounts/login.html:32
|
||||||
#: accounts/templates/accounts/register.html:37
|
#: src/accounts/templates/accounts/register.html:36
|
||||||
#: templates/registration/password_reset_complete.html:19
|
#: src/templates/registration/password_reset_complete.html:19
|
||||||
#: templates/registration/password_reset_confirm.html:39
|
#: src/templates/registration/password_reset_confirm.html:39
|
||||||
#: templates/registration/password_reset_done.html:19
|
#: src/templates/registration/password_reset_done.html:19
|
||||||
#: templates/registration/password_reset_form.html:27
|
#: src/templates/registration/password_reset_form.html:27
|
||||||
msgid "Sign up"
|
msgid "Sign up"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:10
|
#: src/accounts/templates/accounts/profile.html:10
|
||||||
msgid "Challenges Solved by"
|
msgid "Challenges Solved by"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:21
|
#: src/accounts/templates/accounts/profile.html:21
|
||||||
#: events/templates/events/team.html:20
|
#: src/events/templates/events/team.html:20
|
||||||
msgid "Challenge Name"
|
msgid "Challenge Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:22
|
#: src/accounts/templates/accounts/profile.html:22
|
||||||
#: events/templates/events/team.html:21
|
#: src/events/templates/events/team.html:21
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:23
|
#: src/accounts/templates/accounts/profile.html:23
|
||||||
#: events/templates/events/team.html:22
|
#: src/events/templates/events/team.html:22
|
||||||
msgid "Points"
|
msgid "Points"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:24
|
#: src/accounts/templates/accounts/profile.html:24
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:66
|
#: src/ctfs/templates/ctfs/ctf_info.html:66
|
||||||
#: events/templates/events/ctf_info.html:67
|
#: src/events/templates/events/ctf_info.html:67
|
||||||
#: events/templates/events/team.html:23
|
#: src/events/templates/events/team.html:23
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:39
|
#: src/accounts/templates/accounts/profile.html:39
|
||||||
msgid "It seems that this user has not solved any challenge yet..."
|
msgid "It seems that this user has not solved any challenge yet..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:47
|
#: src/accounts/templates/accounts/profile.html:47
|
||||||
#: events/templates/events/event_info.html:63
|
#: src/events/templates/events/event_info.html:63
|
||||||
#: events/templates/events/event_info.html:87
|
#: src/events/templates/events/event_info.html:87
|
||||||
#: events/templates/events/manage_team.html:41
|
#: src/events/templates/events/manage_team.html:41
|
||||||
#: events/templates/events/team.html:46
|
#: src/events/templates/events/team.html:46
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:12
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:12
|
||||||
msgid "Rank"
|
msgid "Rank"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:56
|
#: src/accounts/templates/accounts/profile.html:56
|
||||||
msgid "Status: Member"
|
msgid "Member"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:58
|
#: src/accounts/templates/accounts/profile.html:58
|
||||||
msgid "Status: Visitor"
|
msgid " Visitor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:64
|
#: src/accounts/templates/accounts/profile.html:64
|
||||||
#: events/templates/events/team.html:57
|
#: src/events/templates/events/team.html:57
|
||||||
msgid "Categories stats"
|
msgid "Categories stats"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:13
|
#: src/accounts/templates/accounts/profile.html:81
|
||||||
|
msgid "Challenges created"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/profile.html:87
|
||||||
|
msgid "It seems that this user has not created any challenge yet..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/register.html:13
|
||||||
msgid "Welcome !"
|
msgid "Welcome !"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:14
|
#: src/accounts/templates/accounts/register.html:14
|
||||||
msgid "Your account has been created."
|
msgid "Your account has been created."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:25
|
#: src/accounts/templates/accounts/register.html:25
|
||||||
msgid "Personal website"
|
msgid "Personal website"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:26
|
#: src/accounts/templates/accounts/register.html:26
|
||||||
#: events/templates/events/event_info.html:119
|
#: src/events/templates/events/event_info.html:119
|
||||||
msgid "Register"
|
msgid "Register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/views/views.py:33
|
#: src/accounts/views/views.py:33
|
||||||
msgid "Your account was inactive."
|
msgid "Your account was inactive."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/views/views.py:52
|
#: src/accounts/views/views.py:57
|
||||||
|
msgid "The password must be at least 8 characters long."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/accounts/views/views.py:67
|
||||||
msgid ""
|
msgid ""
|
||||||
"The password must contain at least one letter and at least one digit or "
|
"The password must contain at least one letter and at least one digit or "
|
||||||
"punctuation character."
|
"punctuation character."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/views/views.py:54
|
#: src/accounts/views/views.py:77
|
||||||
msgid "A user with that email already exists."
|
msgid "A user with that email already exists."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/views/views.py:67
|
#: src/accounts/views/views.py:99
|
||||||
msgid "A user with that username already exists."
|
msgid "A user with that username already exists."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/views/views.py:95
|
#: src/accounts/views/views.py:132
|
||||||
msgid "Email already taken."
|
msgid "Email already taken."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/views/views.py:101
|
#: src/accounts/views/views.py:138
|
||||||
msgid "Username already taken."
|
msgid "Username already taken."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/views/views.py:105 events/views/teams.py:124
|
#: src/accounts/views/views.py:142 src/events/views/teams.py:124
|
||||||
msgid "Updated."
|
msgid "Updated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:12
|
#: src/ctfs/templates/ctfs/ctf_info.html:12
|
||||||
#: events/templates/events/ctf_info.html:12
|
#: src/events/templates/events/ctf_info.html:12
|
||||||
msgid "Published date"
|
msgid "Published date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:16
|
#: src/ctfs/templates/ctfs/ctf_info.html:16
|
||||||
msgid "Challenge is not yet available."
|
msgid "Challenge is not yet available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:29
|
#: src/ctfs/templates/ctfs/ctf_info.html:29
|
||||||
#: events/templates/events/ctf_info.html:24
|
#: src/events/templates/events/ctf_info.html:24
|
||||||
msgid "Congratulation !"
|
msgid "Congratulation !"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:31
|
#: src/ctfs/templates/ctfs/ctf_info.html:31
|
||||||
#: events/templates/events/ctf_info.html:26
|
#: src/events/templates/events/ctf_info.html:26
|
||||||
msgid "Already flagged"
|
msgid "Already flagged"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
|
#: src/ctfs/templates/ctfs/ctf_info.html:33
|
||||||
#: events/templates/events/ctf_info.html:36
|
#: src/ctfs/templates/ctfs/ctf_info.html:42
|
||||||
#: events/templates/events/ctf_info.html:45
|
#: src/events/templates/events/ctf_info.html:36
|
||||||
|
#: src/events/templates/events/ctf_info.html:45
|
||||||
msgid "Start the challenge"
|
msgid "Start the challenge"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
|
#: src/ctfs/templates/ctfs/ctf_info.html:35
|
||||||
#: events/templates/events/ctf_info.html:38
|
#: src/ctfs/templates/ctfs/ctf_info.html:44
|
||||||
#: events/templates/events/ctf_info.html:47
|
#: src/events/templates/events/ctf_info.html:38
|
||||||
|
#: src/events/templates/events/ctf_info.html:47
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:39
|
#: src/ctfs/templates/ctfs/ctf_info.html:39
|
||||||
#: events/templates/events/ctf_info.html:42
|
#: src/events/templates/events/ctf_info.html:42
|
||||||
msgid "Wrong flag ! You can do it !"
|
msgid "Wrong flag ! You can do it !"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:58
|
#: src/ctfs/templates/ctfs/ctf_info.html:58
|
||||||
#: events/templates/events/ctf_info.html:60
|
#: src/events/templates/events/ctf_info.html:60
|
||||||
msgid "Solved by"
|
msgid "Solved by"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:82
|
#: src/ctfs/templates/ctfs/ctf_info.html:82
|
||||||
#: events/templates/events/ctf_info.html:90
|
#: src/events/templates/events/ctf_info.html:90
|
||||||
msgid "Nobody has solved this challenge yet."
|
msgid "Nobody has solved this challenge yet."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:89
|
#: src/ctfs/templates/ctfs/ctf_info.html:89
|
||||||
#: events/templates/events/ctf_info.html:97
|
#: src/events/templates/events/ctf_info.html:97
|
||||||
msgid "Author"
|
msgid "Author"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:90
|
#: src/ctfs/templates/ctfs/ctf_info.html:90
|
||||||
#: events/templates/events/ctf_info.html:98
|
#: src/events/templates/events/ctf_info.html:98
|
||||||
msgid "Point reward"
|
msgid "Point reward"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:14
|
#: src/ctfs/templates/ctfs/ctfs_list.html:14
|
||||||
msgid "Solved"
|
msgid "Solved"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:37
|
#: src/ctfs/templates/ctfs/ctfs_list.html:37
|
||||||
msgid "No ctf available for this category."
|
msgid "No ctf available for this category."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:42
|
#: src/ctfs/templates/ctfs/ctfs_list.html:42
|
||||||
msgid "Categories"
|
msgid "Categories"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:48 templates/base.html:54
|
#: src/ctfs/templates/ctfs/ctfs_list.html:48 src/templates/base.html:56
|
||||||
msgid "No category available."
|
msgid "No category available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:10
|
#: src/events/templates/events/create_team.html:10
|
||||||
#: events/templates/events/join_team.html:10
|
#: src/events/templates/events/join_team.html:10
|
||||||
msgid "This event starts at"
|
msgid "This event starts at"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:17
|
#: src/events/templates/events/create_team.html:17
|
||||||
#: events/templates/events/join_team.html:17
|
#: src/events/templates/events/join_team.html:17
|
||||||
msgid "You need to be registered to the event."
|
msgid "You need to be registered to the event."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:20 events/views/teams.py:120
|
#: src/events/templates/events/create_team.html:20
|
||||||
|
#: src/events/views/teams.py:120
|
||||||
msgid "Name already taken."
|
msgid "Name already taken."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:26
|
#: src/events/templates/events/create_team.html:26
|
||||||
#: events/templates/events/join_team.html:31
|
#: src/events/templates/events/join_team.html:31
|
||||||
#: events/templates/events/manage_team.html:22
|
#: src/events/templates/events/manage_team.html:22
|
||||||
msgid "Team name"
|
msgid "Team name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:28
|
#: src/events/templates/events/create_team.html:28
|
||||||
#: events/templates/events/create_team.html:49
|
#: src/events/templates/events/create_team.html:49
|
||||||
#: events/templates/events/join_team.html:54
|
#: src/events/templates/events/join_team.html:54
|
||||||
msgid "Create Team"
|
msgid "Create Team"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:33
|
#: src/events/templates/events/create_team.html:33
|
||||||
#: events/templates/events/event_pwd.html:28
|
#: src/events/templates/events/event_pwd.html:44
|
||||||
#: events/templates/events/join_team.html:38
|
#: src/events/templates/events/join_team.html:38
|
||||||
msgid "You need to be logged to access this event."
|
msgid "You need to be logged to access this event."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:42
|
#: src/events/templates/events/create_team.html:42
|
||||||
#: events/templates/events/event_info.html:113
|
#: src/events/templates/events/event_info.html:113
|
||||||
#: events/templates/events/event_pwd.html:36
|
#: src/events/templates/events/event_pwd.html:52
|
||||||
#: events/templates/events/join_team.html:47
|
#: src/events/templates/events/join_team.html:47
|
||||||
msgid "Starts at"
|
msgid "Starts at"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:43
|
#: src/events/templates/events/create_team.html:43
|
||||||
#: events/templates/events/event_info.html:114
|
#: src/events/templates/events/event_info.html:114
|
||||||
#: events/templates/events/event_pwd.html:37
|
#: src/events/templates/events/event_pwd.html:53
|
||||||
#: events/templates/events/join_team.html:48
|
#: src/events/templates/events/join_team.html:48
|
||||||
msgid "Ends at"
|
msgid "Ends at"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:47
|
#: src/events/templates/events/create_team.html:47
|
||||||
#: events/templates/events/event_info.html:129
|
#: src/events/templates/events/event_info.html:129
|
||||||
#: events/templates/events/join_team.html:52
|
#: src/events/templates/events/join_team.html:52
|
||||||
msgid "Manage my team"
|
msgid "Manage my team"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:48
|
#: src/events/templates/events/create_team.html:48
|
||||||
#: events/templates/events/join_team.html:33
|
#: src/events/templates/events/join_team.html:33
|
||||||
#: events/templates/events/join_team.html:53
|
#: src/events/templates/events/join_team.html:53
|
||||||
msgid "Join Team"
|
msgid "Join Team"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:53
|
#: src/events/templates/events/create_team.html:53
|
||||||
#: events/templates/events/join_team.html:58
|
#: src/events/templates/events/join_team.html:58
|
||||||
msgid "Auto-matching"
|
msgid "Auto-matching"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:57
|
#: src/events/templates/events/create_team.html:57
|
||||||
#: events/templates/events/join_team.html:62
|
#: src/events/templates/events/join_team.html:62
|
||||||
msgid "Find me a team !"
|
msgid "Find me a team !"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:10
|
#: src/events/templates/events/ctf_info.html:10
|
||||||
msgid "Event"
|
msgid "Event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:18
|
#: src/events/templates/events/ctf_info.html:18
|
||||||
msgid ""
|
msgid ""
|
||||||
"No translation available. Please try another language (English or French)."
|
"No translation available. Please try another language (English or French)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:28
|
#: src/events/templates/events/ctf_info.html:28
|
||||||
#: events/templates/events/event_info.html:18
|
#: src/events/templates/events/event_info.html:18
|
||||||
msgid "This event is over."
|
msgid "This event is over."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:30
|
#: src/events/templates/events/ctf_info.html:30
|
||||||
msgid "Error while processing your request. (Invalid Form)"
|
msgid "Error while processing your request. (Invalid Form)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:32
|
#: src/events/templates/events/ctf_info.html:32
|
||||||
msgid "You must register to the event before submitting flags."
|
msgid "You must register to the event before submitting flags."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:34
|
#: src/events/templates/events/ctf_info.html:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is a team event, please create or join a team before submitting flags."
|
"This is a team event, please create or join a team before submitting flags."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:9
|
#: src/events/templates/events/event_info.html:9
|
||||||
msgid "Subscriptions is over."
|
msgid "Subscriptions is over."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:12
|
#: src/events/templates/events/event_info.html:12
|
||||||
#: events/templates/events/event_pwd.html:18
|
#: src/events/templates/events/event_pwd.html:33
|
||||||
msgid "You're already registered to this event."
|
msgid "You're already registered to this event."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:20
|
#: src/events/templates/events/event_info.html:20
|
||||||
#: events/templates/events/event_pwd.html:9
|
#: src/events/templates/events/event_pwd.html:9
|
||||||
msgid "This event start at"
|
msgid "This event start at"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:30
|
#: src/events/templates/events/event_info.html:30
|
||||||
msgid "Challenges"
|
msgid "Challenges"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:47
|
#: src/events/templates/events/event_info.html:47
|
||||||
msgid "No challenges available."
|
msgid "No challenges available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:51
|
#: src/events/templates/events/event_info.html:51
|
||||||
msgid "The event has not started yet."
|
msgid "The event has not started yet."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:57
|
#: src/events/templates/events/event_info.html:57
|
||||||
msgid "ScoreBoard"
|
msgid "ScoreBoard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:88
|
#: src/events/templates/events/event_info.html:88
|
||||||
msgid "Team"
|
msgid "Team"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:106
|
#: src/events/templates/events/event_info.html:106
|
||||||
msgid "No one have earn point yet, you gonna be the first ?"
|
msgid "No one have earn point yet, you gonna be the first ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:15
|
#: src/events/templates/events/event_pwd.html:16
|
||||||
#: events/templates/events/join_team.html:22
|
msgid ""
|
||||||
|
"This event is reserved for one or more 42 campuses. If you have not "
|
||||||
|
"connected your intranet to 42CTF, you can do so with this button: "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/events/templates/events/event_pwd.html:25
|
||||||
|
msgid ""
|
||||||
|
"This event is reserved for one or more 42 campuses. And unfortunately your "
|
||||||
|
"campus can't participate. Do not hesitate to contact us to organize an event "
|
||||||
|
"on your campus!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/events/templates/events/event_pwd.html:30
|
||||||
|
#: src/events/templates/events/join_team.html:22
|
||||||
msgid "Wrong password submited."
|
msgid "Wrong password submited."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:20
|
#: src/events/templates/events/event_pwd.html:35
|
||||||
msgid "This event is password protected"
|
msgid "This event is password protected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:21
|
#: src/events/templates/events/event_pwd.html:36
|
||||||
msgid "You need to submit the event password to gain access to this event."
|
msgid "You need to submit the event password to gain access to this event."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:6 templates/base.html:61
|
#: src/events/templates/events/events_list.html:6 src/templates/base.html:65
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:38
|
#: src/events/templates/events/events_list.html:38
|
||||||
msgid "See more"
|
msgid "See more"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:44
|
#: src/events/templates/events/events_list.html:44
|
||||||
msgid "No events available."
|
msgid "No events available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/join_team.html:20
|
#: src/events/templates/events/join_team.html:20
|
||||||
msgid "Team does not exist."
|
msgid "Team does not exist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/join_team.html:24
|
#: src/events/templates/events/join_team.html:24
|
||||||
msgid "Maximum size reached."
|
msgid "Maximum size reached."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:26
|
#: src/events/templates/events/manage_team.html:26
|
||||||
msgid "Team password"
|
msgid "Team password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:29
|
#: src/events/templates/events/manage_team.html:29
|
||||||
msgid "Apply"
|
msgid "Apply"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:44
|
#: src/events/templates/events/manage_team.html:44
|
||||||
#: events/templates/events/team.html:49
|
#: src/events/templates/events/team.html:49
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:52
|
#: src/events/templates/events/manage_team.html:52
|
||||||
msgid "Leave Team"
|
msgid "Leave Team"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:59
|
#: src/events/templates/events/manage_team.html:59
|
||||||
msgid "Open to automatching"
|
msgid "Open to automatching"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:66
|
#: src/events/templates/events/manage_team.html:66
|
||||||
msgid "Close to automatching"
|
msgid "Close to automatching"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/team.html:38
|
#: src/events/templates/events/team.html:38
|
||||||
msgid "It seems that this team has not solved any challenge yet..."
|
msgid "It seems that this team has not solved any challenge yet..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:21
|
#: src/home/templates/home/home.html:21
|
||||||
msgid "Weekly Top 5"
|
msgid "Weekly Top 5"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:48
|
#: src/home/templates/home/home.html:48
|
||||||
msgid "No article available."
|
msgid "No article available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:53
|
#: src/home/templates/home/home.html:53
|
||||||
msgid "Latest challenges added"
|
msgid "Latest challenges added"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:58
|
#: src/home/templates/home/home.html:58
|
||||||
msgid "points"
|
msgid "points"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:62
|
#: src/home/templates/home/home.html:62
|
||||||
msgid "No ctf available."
|
msgid "No ctf available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:66
|
#: src/home/templates/home/home.html:66
|
||||||
msgid "Latest Flags"
|
msgid "Latest Flags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:80
|
#: src/home/templates/home/home.html:80
|
||||||
msgid "Flags"
|
msgid "Flags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: home/templates/home/home.html:86
|
#: src/home/templates/home/home.html:86
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: project/settings.py:116
|
#: src/project/settings.py:116
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: project/settings.py:117
|
#: src/project/settings.py:117
|
||||||
msgid "German"
|
msgid "German"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: project/settings.py:118
|
#: src/project/settings.py:118
|
||||||
msgid "French"
|
msgid "French"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: project/settings.py:119
|
#: src/project/settings.py:119
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: project/settings.py:120
|
#: src/project/settings.py:120
|
||||||
msgid "Japanese"
|
msgid "Japanese"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: project/settings.py:121
|
#: src/project/settings.py:121
|
||||||
msgid "Spanish"
|
msgid "Spanish"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:38
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:15
|
||||||
|
msgid "Campus"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:46
|
||||||
msgid "First"
|
msgid "First"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:39
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:47
|
||||||
msgid "Previous"
|
msgid "Previous"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:43
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:51
|
||||||
msgid "Page "
|
msgid "Page "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:47
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:55
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:48
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:56
|
||||||
msgid "Last"
|
msgid "Last"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/base.html:59
|
#: src/templates/base.html:62
|
||||||
msgid "Scoreboard"
|
msgid "Scoreboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/base.html:64
|
#: src/templates/base.html:83
|
||||||
msgid "Resources"
|
msgid "Become a member"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/base.html:93
|
#: src/templates/base.html:93
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/base.html:100
|
#: src/templates/base.html:100
|
||||||
msgid "Sign Up"
|
msgid "Sign Up"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/base.html:135
|
#: src/templates/registration/password_reset_complete.html:11
|
||||||
msgid "Become a Patron!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: templates/registration/password_reset_complete.html:11
|
|
||||||
msgid "Your new password has been set."
|
msgid "Your new password has been set."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:20
|
#: src/templates/registration/password_reset_confirm.html:20
|
||||||
msgid "Your password can’t be too similar to your other personal information."
|
msgid "Your password can’t be too similar to your other personal information."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:21
|
#: src/templates/registration/password_reset_confirm.html:21
|
||||||
msgid "Your password must contain at least 8 characters."
|
msgid "Your password must contain at least 8 characters."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:22
|
#: src/templates/registration/password_reset_confirm.html:22
|
||||||
msgid "Your password can’t be a commonly used password."
|
msgid "Your password can’t be a commonly used password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:23
|
#: src/templates/registration/password_reset_confirm.html:23
|
||||||
msgid "Your password can’t be entirely numeric."
|
msgid "Your password can’t be entirely numeric."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:26
|
#: src/templates/registration/password_reset_confirm.html:26
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:28
|
#: src/templates/registration/password_reset_confirm.html:28
|
||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_done.html:11
|
#: src/templates/registration/password_reset_done.html:11
|
||||||
msgid ""
|
msgid ""
|
||||||
"We've emailed you instructions for setting your password. You should receive "
|
"We've emailed you instructions for setting your password. You should receive "
|
||||||
"the email shortly!"
|
"the email shortly!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/registration/password_reset_form.html:16
|
#: src/templates/registration/password_reset_form.html:16
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
|
"POT-Creation-Date: 2022-08-16 19:28+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -18,198 +18,231 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:8
|
#: src/accounts/templates/accounts/delete.html:8
|
||||||
msgid "Delete account"
|
msgid "Delete account"
|
||||||
msgstr "アカウント削除"
|
msgstr "アカウント削除"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:11
|
#: src/accounts/templates/accounts/delete.html:11
|
||||||
msgid "Please confirm your password to delete your account."
|
msgid "Please confirm your password to delete your account."
|
||||||
msgstr "アカウントを削除するには、パスワードを入力してください。"
|
msgstr "アカウントを削除するには、パスワードを入力してください。"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:12
|
#: src/accounts/templates/accounts/delete.html:12
|
||||||
msgid "Deleted accounts cannot be recovered."
|
msgid "Deleted accounts cannot be recovered."
|
||||||
msgstr "削除されたアカウントは復元できません。"
|
msgstr "削除されたアカウントは復元できません。"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:15
|
#: src/accounts/templates/accounts/delete.html:15
|
||||||
msgid "Password incorrect."
|
msgid "Password incorrect."
|
||||||
msgstr "パスワードが正しくありません。"
|
msgstr "パスワードが正しくありません。"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:17
|
#: src/accounts/templates/accounts/delete.html:17
|
||||||
msgid "Your account has been deleted."
|
msgid "Your account has been deleted."
|
||||||
msgstr "あなたのアカウントは削除されました。"
|
msgstr "あなたのアカウントは削除されました。"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:22
|
#: src/accounts/templates/accounts/delete.html:22
|
||||||
#: accounts/templates/accounts/login.html:19
|
#: src/accounts/templates/accounts/login.html:19
|
||||||
#: accounts/templates/accounts/register.html:23
|
#: src/accounts/templates/accounts/register.html:23
|
||||||
#: events/templates/events/create_team.html:27
|
#: src/events/templates/events/create_team.html:27
|
||||||
#: events/templates/events/join_team.html:32
|
#: src/events/templates/events/join_team.html:32
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "パスワード"
|
msgstr "パスワード"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:21
|
#: src/accounts/templates/accounts/edit.html:21
|
||||||
#: accounts/templates/accounts/login.html:18
|
#: src/accounts/templates/accounts/login.html:18
|
||||||
#: accounts/templates/accounts/register.html:22
|
#: src/accounts/templates/accounts/register.html:22
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
|
#: src/ctfs/templates/ctfs/ctf_info.html:63
|
||||||
#: events/templates/events/ctf_info.html:65
|
#: src/ctfs/templates/ctfs/ctfs_list.html:12
|
||||||
#: events/templates/events/event_info.html:64
|
#: src/events/templates/events/ctf_info.html:65
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:13
|
#: src/events/templates/events/event_info.html:64
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:13
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr "ユーザー名"
|
msgstr "ユーザー名"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:25
|
#: src/accounts/templates/accounts/edit.html:25
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Eメール"
|
msgstr "Eメール"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:30
|
#: src/accounts/templates/accounts/edit.html:30
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:64
|
#: src/ctfs/templates/ctfs/ctf_info.html:64
|
||||||
#: events/templates/events/ctf_info.html:66
|
#: src/events/templates/events/ctf_info.html:66
|
||||||
#: events/templates/events/event_info.html:65
|
#: src/events/templates/events/event_info.html:65
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:14
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:14
|
||||||
msgid "Website"
|
msgid "Website"
|
||||||
msgstr "ウェブサイト"
|
msgstr "ウェブサイト"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:36
|
#: src/accounts/templates/accounts/edit.html:36
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Apply"
|
#| msgid "Apply"
|
||||||
msgid " Apply"
|
msgid " Apply"
|
||||||
msgstr "適用する"
|
msgstr "適用する"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:45
|
#: src/accounts/templates/accounts/edit.html:45
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Delete account"
|
#| msgid "Delete account"
|
||||||
msgid "Connected accounts"
|
msgid "Connected accounts"
|
||||||
msgstr "アカウント削除"
|
msgstr "アカウント削除"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:53
|
#: src/accounts/templates/accounts/edit.html:53
|
||||||
msgid "Disconnect Discord"
|
msgid "Disconnect Discord"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:59
|
#: src/accounts/templates/accounts/edit.html:59
|
||||||
msgid "Connect Discord"
|
msgid "Connect Discord"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:70
|
#: src/accounts/templates/accounts/edit.html:68
|
||||||
#: accounts/templates/accounts/profile.html:46
|
msgid "Disconnect 42"
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
|
msgstr ""
|
||||||
#: events/templates/events/event_info.html:66
|
|
||||||
#: events/templates/events/event_info.html:89
|
#: src/accounts/templates/accounts/edit.html:74
|
||||||
#: events/templates/events/manage_team.html:40
|
#: src/events/templates/events/event_pwd.html:19
|
||||||
#: events/templates/events/team.html:45
|
msgid "Connect 42"
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:15
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/edit.html:85
|
||||||
|
#: src/accounts/templates/accounts/profile.html:46
|
||||||
|
#: src/ctfs/templates/ctfs/ctf_info.html:65
|
||||||
|
#: src/ctfs/templates/ctfs/ctfs_list.html:13
|
||||||
|
#: src/events/templates/events/event_info.html:66
|
||||||
|
#: src/events/templates/events/event_info.html:89
|
||||||
|
#: src/events/templates/events/manage_team.html:40
|
||||||
|
#: src/events/templates/events/team.html:45
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:16
|
||||||
msgid "Score"
|
msgid "Score"
|
||||||
msgstr "スコア"
|
msgstr "スコア"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:78
|
#: src/accounts/templates/accounts/edit.html:93
|
||||||
#: accounts/templates/accounts/profile.html:60
|
#: src/accounts/templates/accounts/profile.html:60
|
||||||
msgid "Registered since"
|
msgid "Registered since"
|
||||||
msgstr "登録日"
|
msgstr "登録日"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:84
|
#: src/accounts/templates/accounts/edit.html:99
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Delete my account"
|
#| msgid "Delete my account"
|
||||||
msgid " Delete my account"
|
msgid " Delete my account"
|
||||||
msgstr "アカウント削除"
|
msgstr "アカウント削除"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:13
|
#: src/accounts/templates/accounts/login.html:13
|
||||||
msgid "Please, verify your infos."
|
msgid "Please, verify your infos."
|
||||||
msgstr "あなたの情報を確認してください。"
|
msgstr "あなたの情報を確認してください。"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:22
|
#: src/accounts/templates/accounts/login.html:22
|
||||||
msgid "Reset password"
|
msgid "Reset password"
|
||||||
msgstr "パスワード再設定"
|
msgstr "パスワード再設定"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:31
|
#: src/accounts/templates/accounts/login.html:31
|
||||||
#: accounts/templates/accounts/register.html:38 templates/base.html:97
|
#: src/accounts/templates/accounts/register.html:37 src/templates/base.html:97
|
||||||
#: templates/registration/password_reset_complete.html:18
|
#: src/templates/registration/password_reset_complete.html:18
|
||||||
#: templates/registration/password_reset_confirm.html:38
|
#: src/templates/registration/password_reset_confirm.html:38
|
||||||
#: templates/registration/password_reset_done.html:18
|
#: src/templates/registration/password_reset_done.html:18
|
||||||
#: templates/registration/password_reset_form.html:26
|
#: src/templates/registration/password_reset_form.html:26
|
||||||
msgid "Login"
|
msgid "Login"
|
||||||
msgstr "ログイン"
|
msgstr "ログイン"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:32
|
#: src/accounts/templates/accounts/login.html:32
|
||||||
#: accounts/templates/accounts/register.html:37
|
#: src/accounts/templates/accounts/register.html:36
|
||||||
#: templates/registration/password_reset_complete.html:19
|
#: src/templates/registration/password_reset_complete.html:19
|
||||||
#: templates/registration/password_reset_confirm.html:39
|
#: src/templates/registration/password_reset_confirm.html:39
|
||||||
#: templates/registration/password_reset_done.html:19
|
#: src/templates/registration/password_reset_done.html:19
|
||||||
#: templates/registration/password_reset_form.html:27
|
#: src/templates/registration/password_reset_form.html:27
|
||||||
msgid "Sign up"
|
msgid "Sign up"
|
||||||
msgstr "サインアップ"
|
msgstr "サインアップ"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:10
|
#: src/accounts/templates/accounts/profile.html:10
|
||||||
msgid "Challenges Solved by"
|
msgid "Challenges Solved by"
|
||||||
msgstr "解いた課題"
|
msgstr "解いた課題"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:21
|
#: src/accounts/templates/accounts/profile.html:21
|
||||||
#: events/templates/events/team.html:20
|
#: src/events/templates/events/team.html:20
|
||||||
msgid "Challenge Name"
|
msgid "Challenge Name"
|
||||||
msgstr "課題名"
|
msgstr "課題名"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:22
|
#: src/accounts/templates/accounts/profile.html:22
|
||||||
#: events/templates/events/team.html:21
|
#: src/events/templates/events/team.html:21
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr "カテゴリー"
|
msgstr "カテゴリー"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:23
|
#: src/accounts/templates/accounts/profile.html:23
|
||||||
#: events/templates/events/team.html:22
|
#: src/events/templates/events/team.html:22
|
||||||
msgid "Points"
|
msgid "Points"
|
||||||
msgstr "ポイント"
|
msgstr "ポイント"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:24
|
#: src/accounts/templates/accounts/profile.html:24
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:66
|
#: src/ctfs/templates/ctfs/ctf_info.html:66
|
||||||
#: events/templates/events/ctf_info.html:67
|
#: src/events/templates/events/ctf_info.html:67
|
||||||
#: events/templates/events/team.html:23
|
#: src/events/templates/events/team.html:23
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "日付"
|
msgstr "日付"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:39
|
#: src/accounts/templates/accounts/profile.html:39
|
||||||
msgid "It seems that this user has not solved any challenge yet..."
|
msgid "It seems that this user has not solved any challenge yet..."
|
||||||
msgstr "まだ何も課題を解いていないようです..."
|
msgstr "まだ何も課題を解いていないようです..."
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:47
|
#: src/accounts/templates/accounts/profile.html:47
|
||||||
#: events/templates/events/event_info.html:63
|
#: src/events/templates/events/event_info.html:63
|
||||||
#: events/templates/events/event_info.html:87
|
#: src/events/templates/events/event_info.html:87
|
||||||
#: events/templates/events/manage_team.html:41
|
#: src/events/templates/events/manage_team.html:41
|
||||||
#: events/templates/events/team.html:46
|
#: src/events/templates/events/team.html:46
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:12
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:12
|
||||||
msgid "Rank"
|
msgid "Rank"
|
||||||
msgstr "ラング"
|
msgstr "ラング"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:56
|
#: src/accounts/templates/accounts/profile.html:56
|
||||||
msgid "Status: Member"
|
#, fuzzy
|
||||||
msgstr "ステータス: メンバー"
|
#| msgid "Members"
|
||||||
|
msgid "Member"
|
||||||
|
msgstr "メンバー"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:58
|
#: src/accounts/templates/accounts/profile.html:58
|
||||||
msgid "Status: Visitor"
|
#, fuzzy
|
||||||
|
#| msgid "Status: Visitor"
|
||||||
|
msgid " Visitor"
|
||||||
msgstr "ステータス: 訪問者"
|
msgstr "ステータス: 訪問者"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:64
|
#: src/accounts/templates/accounts/profile.html:64
|
||||||
#: events/templates/events/team.html:57
|
#: src/events/templates/events/team.html:57
|
||||||
msgid "Categories stats"
|
msgid "Categories stats"
|
||||||
msgstr "カテゴリー別の統計"
|
msgstr "カテゴリー別の統計"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:13
|
#: src/accounts/templates/accounts/profile.html:81
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Challenge Name"
|
||||||
|
msgid "Challenges created"
|
||||||
|
msgstr "課題名"
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/profile.html:87
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "It seems that this user has not solved any challenge yet..."
|
||||||
|
msgid "It seems that this user has not created any challenge yet..."
|
||||||
|
msgstr "まだ何も課題を解いていないようです..."
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/register.html:13
|
||||||
msgid "Welcome !"
|
msgid "Welcome !"
|
||||||
msgstr "ようこそ!"
|
msgstr "ようこそ!"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:14
|
#: src/accounts/templates/accounts/register.html:14
|
||||||
msgid "Your account has been created."
|
msgid "Your account has been created."
|
||||||
msgstr "アカウントが作成されました。"
|
msgstr "アカウントが作成されました。"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:25
|
#: src/accounts/templates/accounts/register.html:25
|
||||||
msgid "Personal website"
|
msgid "Personal website"
|
||||||
msgstr "個人サイト"
|
msgstr "個人サイト"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:26
|
#: src/accounts/templates/accounts/register.html:26
|
||||||
#: events/templates/events/event_info.html:119
|
#: src/events/templates/events/event_info.html:119
|
||||||
msgid "Register"
|
msgid "Register"
|
||||||
msgstr "登録"
|
msgstr "登録"
|
||||||
|
|
||||||
#: accounts/views/views.py:33
|
#: src/accounts/views/views.py:33
|
||||||
msgid "Your account was inactive."
|
msgid "Your account was inactive."
|
||||||
msgstr "アカウントは無効です。"
|
msgstr "アカウントは無効です。"
|
||||||
|
|
||||||
#: accounts/views/views.py:52
|
#: src/accounts/views/views.py:57
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Your password must contain at least 8 characters."
|
||||||
|
msgid "The password must be at least 8 characters long."
|
||||||
|
msgstr "パスワードには8文字以上が必要です。"
|
||||||
|
|
||||||
|
#: src/accounts/views/views.py:67
|
||||||
msgid ""
|
msgid ""
|
||||||
"The password must contain at least one letter and at least one digit or "
|
"The password must contain at least one letter and at least one digit or "
|
||||||
"punctuation character."
|
"punctuation character."
|
||||||
|
@ -217,428 +250,452 @@ msgstr ""
|
||||||
"パスワードには、少なくとも1つの文字と、1つの数字または記号を含める必要があり"
|
"パスワードには、少なくとも1つの文字と、1つの数字または記号を含める必要があり"
|
||||||
"ます。"
|
"ます。"
|
||||||
|
|
||||||
#: accounts/views/views.py:54
|
#: src/accounts/views/views.py:77
|
||||||
msgid "A user with that email already exists."
|
msgid "A user with that email already exists."
|
||||||
msgstr "そのEメールを持つユーザーがすでに存在しています。"
|
msgstr "そのEメールを持つユーザーがすでに存在しています。"
|
||||||
|
|
||||||
#: accounts/views/views.py:67
|
#: src/accounts/views/views.py:99
|
||||||
msgid "A user with that username already exists."
|
msgid "A user with that username already exists."
|
||||||
msgstr "そのユーザー名はすでに存在しています。"
|
msgstr "そのユーザー名はすでに存在しています。"
|
||||||
|
|
||||||
#: accounts/views/views.py:95
|
#: src/accounts/views/views.py:132
|
||||||
msgid "Email already taken."
|
msgid "Email already taken."
|
||||||
msgstr "Eメールはすでに受信済みです。"
|
msgstr "Eメールはすでに受信済みです。"
|
||||||
|
|
||||||
#: accounts/views/views.py:101
|
#: src/accounts/views/views.py:138
|
||||||
msgid "Username already taken."
|
msgid "Username already taken."
|
||||||
msgstr "ユーザー名はすでに使用されています。"
|
msgstr "ユーザー名はすでに使用されています。"
|
||||||
|
|
||||||
#: accounts/views/views.py:105 events/views/teams.py:124
|
#: src/accounts/views/views.py:142 src/events/views/teams.py:124
|
||||||
msgid "Updated."
|
msgid "Updated."
|
||||||
msgstr "更新しました。"
|
msgstr "更新しました。"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:12
|
#: src/ctfs/templates/ctfs/ctf_info.html:12
|
||||||
#: events/templates/events/ctf_info.html:12
|
#: src/events/templates/events/ctf_info.html:12
|
||||||
msgid "Published date"
|
msgid "Published date"
|
||||||
msgstr "掲載日"
|
msgstr "掲載日"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:16
|
#: src/ctfs/templates/ctfs/ctf_info.html:16
|
||||||
msgid "Challenge is not yet available."
|
msgid "Challenge is not yet available."
|
||||||
msgstr "課題はまだ利用できません。"
|
msgstr "課題はまだ利用できません。"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:29
|
#: src/ctfs/templates/ctfs/ctf_info.html:29
|
||||||
#: events/templates/events/ctf_info.html:24
|
#: src/events/templates/events/ctf_info.html:24
|
||||||
msgid "Congratulation !"
|
msgid "Congratulation !"
|
||||||
msgstr "おめでとうございます!"
|
msgstr "おめでとうございます!"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:31
|
#: src/ctfs/templates/ctfs/ctf_info.html:31
|
||||||
#: events/templates/events/ctf_info.html:26
|
#: src/events/templates/events/ctf_info.html:26
|
||||||
msgid "Already flagged"
|
msgid "Already flagged"
|
||||||
msgstr "すでにフラグが立っています"
|
msgstr "すでにフラグが立っています"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
|
#: src/ctfs/templates/ctfs/ctf_info.html:33
|
||||||
#: events/templates/events/ctf_info.html:36
|
#: src/ctfs/templates/ctfs/ctf_info.html:42
|
||||||
#: events/templates/events/ctf_info.html:45
|
#: src/events/templates/events/ctf_info.html:36
|
||||||
|
#: src/events/templates/events/ctf_info.html:45
|
||||||
msgid "Start the challenge"
|
msgid "Start the challenge"
|
||||||
msgstr "チャレンジ開始"
|
msgstr "チャレンジ開始"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
|
#: src/ctfs/templates/ctfs/ctf_info.html:35
|
||||||
#: events/templates/events/ctf_info.html:38
|
#: src/ctfs/templates/ctfs/ctf_info.html:44
|
||||||
#: events/templates/events/ctf_info.html:47
|
#: src/events/templates/events/ctf_info.html:38
|
||||||
|
#: src/events/templates/events/ctf_info.html:47
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "ダウンロード"
|
msgstr "ダウンロード"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:39
|
#: src/ctfs/templates/ctfs/ctf_info.html:39
|
||||||
#: events/templates/events/ctf_info.html:42
|
#: src/events/templates/events/ctf_info.html:42
|
||||||
msgid "Wrong flag ! You can do it !"
|
msgid "Wrong flag ! You can do it !"
|
||||||
msgstr "フラグが違います!あなたならできる!"
|
msgstr "フラグが違います!あなたならできる!"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:58
|
#: src/ctfs/templates/ctfs/ctf_info.html:58
|
||||||
#: events/templates/events/ctf_info.html:60
|
#: src/events/templates/events/ctf_info.html:60
|
||||||
msgid "Solved by"
|
msgid "Solved by"
|
||||||
msgstr "解答者"
|
msgstr "解答者"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:82
|
#: src/ctfs/templates/ctfs/ctf_info.html:82
|
||||||
#: events/templates/events/ctf_info.html:90
|
#: src/events/templates/events/ctf_info.html:90
|
||||||
msgid "Nobody has solved this challenge yet."
|
msgid "Nobody has solved this challenge yet."
|
||||||
msgstr "まだ誰もこの課題を解いていません。"
|
msgstr "まだ誰もこの課題を解いていません。"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:89
|
#: src/ctfs/templates/ctfs/ctf_info.html:89
|
||||||
#: events/templates/events/ctf_info.html:97
|
#: src/events/templates/events/ctf_info.html:97
|
||||||
msgid "Author"
|
msgid "Author"
|
||||||
msgstr "作成者"
|
msgstr "作成者"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:90
|
#: src/ctfs/templates/ctfs/ctf_info.html:90
|
||||||
#: events/templates/events/ctf_info.html:98
|
#: src/events/templates/events/ctf_info.html:98
|
||||||
msgid "Point reward"
|
msgid "Point reward"
|
||||||
msgstr "獲得ポイント"
|
msgstr "獲得ポイント"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:14
|
#: src/ctfs/templates/ctfs/ctfs_list.html:14
|
||||||
msgid "Solved"
|
msgid "Solved"
|
||||||
msgstr "解決済み"
|
msgstr "解決済み"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:37
|
#: src/ctfs/templates/ctfs/ctfs_list.html:37
|
||||||
msgid "No ctf available for this category."
|
msgid "No ctf available for this category."
|
||||||
msgstr "このカテゴリーにはCTFがありません。"
|
msgstr "このカテゴリーにはCTFがありません。"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:42
|
#: src/ctfs/templates/ctfs/ctfs_list.html:42
|
||||||
msgid "Categories"
|
msgid "Categories"
|
||||||
msgstr "カテゴリー"
|
msgstr "カテゴリー"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:48 templates/base.html:54
|
#: src/ctfs/templates/ctfs/ctfs_list.html:48 src/templates/base.html:56
|
||||||
msgid "No category available."
|
msgid "No category available."
|
||||||
msgstr "該当するカテゴリーはありません。"
|
msgstr "該当するカテゴリーはありません。"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:10
|
#: src/events/templates/events/create_team.html:10
|
||||||
#: events/templates/events/join_team.html:10
|
#: src/events/templates/events/join_team.html:10
|
||||||
msgid "This event starts at"
|
msgid "This event starts at"
|
||||||
msgstr "このイベントは始まります。"
|
msgstr "このイベントは始まります。"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:17
|
#: src/events/templates/events/create_team.html:17
|
||||||
#: events/templates/events/join_team.html:17
|
#: src/events/templates/events/join_team.html:17
|
||||||
msgid "You need to be registered to the event."
|
msgid "You need to be registered to the event."
|
||||||
msgstr "このイベントに登録する必要があります。"
|
msgstr "このイベントに登録する必要があります。"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:20 events/views/teams.py:120
|
#: src/events/templates/events/create_team.html:20
|
||||||
|
#: src/events/views/teams.py:120
|
||||||
msgid "Name already taken."
|
msgid "Name already taken."
|
||||||
msgstr "名前はすでに使用されています。"
|
msgstr "名前はすでに使用されています。"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:26
|
#: src/events/templates/events/create_team.html:26
|
||||||
#: events/templates/events/join_team.html:31
|
#: src/events/templates/events/join_team.html:31
|
||||||
#: events/templates/events/manage_team.html:22
|
#: src/events/templates/events/manage_team.html:22
|
||||||
msgid "Team name"
|
msgid "Team name"
|
||||||
msgstr "チーム名"
|
msgstr "チーム名"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:28
|
#: src/events/templates/events/create_team.html:28
|
||||||
#: events/templates/events/create_team.html:49
|
#: src/events/templates/events/create_team.html:49
|
||||||
#: events/templates/events/join_team.html:54
|
#: src/events/templates/events/join_team.html:54
|
||||||
msgid "Create Team"
|
msgid "Create Team"
|
||||||
msgstr "チーム作成"
|
msgstr "チーム作成"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:33
|
#: src/events/templates/events/create_team.html:33
|
||||||
#: events/templates/events/event_pwd.html:28
|
#: src/events/templates/events/event_pwd.html:44
|
||||||
#: events/templates/events/join_team.html:38
|
#: src/events/templates/events/join_team.html:38
|
||||||
msgid "You need to be logged to access this event."
|
msgid "You need to be logged to access this event."
|
||||||
msgstr "このイベントにアクセスするには、ログインする必要があります。"
|
msgstr "このイベントにアクセスするには、ログインする必要があります。"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:42
|
#: src/events/templates/events/create_team.html:42
|
||||||
#: events/templates/events/event_info.html:113
|
#: src/events/templates/events/event_info.html:113
|
||||||
#: events/templates/events/event_pwd.html:36
|
#: src/events/templates/events/event_pwd.html:52
|
||||||
#: events/templates/events/join_team.html:47
|
#: src/events/templates/events/join_team.html:47
|
||||||
msgid "Starts at"
|
msgid "Starts at"
|
||||||
msgstr "開始日"
|
msgstr "開始日"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:43
|
#: src/events/templates/events/create_team.html:43
|
||||||
#: events/templates/events/event_info.html:114
|
#: src/events/templates/events/event_info.html:114
|
||||||
#: events/templates/events/event_pwd.html:37
|
#: src/events/templates/events/event_pwd.html:53
|
||||||
#: events/templates/events/join_team.html:48
|
#: src/events/templates/events/join_team.html:48
|
||||||
msgid "Ends at"
|
msgid "Ends at"
|
||||||
msgstr "終了日"
|
msgstr "終了日"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:47
|
#: src/events/templates/events/create_team.html:47
|
||||||
#: events/templates/events/event_info.html:129
|
#: src/events/templates/events/event_info.html:129
|
||||||
#: events/templates/events/join_team.html:52
|
#: src/events/templates/events/join_team.html:52
|
||||||
msgid "Manage my team"
|
msgid "Manage my team"
|
||||||
msgstr "自分のチームを管理する"
|
msgstr "自分のチームを管理する"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:48
|
#: src/events/templates/events/create_team.html:48
|
||||||
#: events/templates/events/join_team.html:33
|
#: src/events/templates/events/join_team.html:33
|
||||||
#: events/templates/events/join_team.html:53
|
#: src/events/templates/events/join_team.html:53
|
||||||
msgid "Join Team"
|
msgid "Join Team"
|
||||||
msgstr "チームに参加する"
|
msgstr "チームに参加する"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:53
|
#: src/events/templates/events/create_team.html:53
|
||||||
#: events/templates/events/join_team.html:58
|
#: src/events/templates/events/join_team.html:58
|
||||||
msgid "Auto-matching"
|
msgid "Auto-matching"
|
||||||
msgstr "自動マッチング"
|
msgstr "自動マッチング"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:57
|
#: src/events/templates/events/create_team.html:57
|
||||||
#: events/templates/events/join_team.html:62
|
#: src/events/templates/events/join_team.html:62
|
||||||
msgid "Find me a team !"
|
msgid "Find me a team !"
|
||||||
msgstr "チームを見つけよう!"
|
msgstr "チームを見つけよう!"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:10
|
#: src/events/templates/events/ctf_info.html:10
|
||||||
msgid "Event"
|
msgid "Event"
|
||||||
msgstr "イベント"
|
msgstr "イベント"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:18
|
#: src/events/templates/events/ctf_info.html:18
|
||||||
msgid ""
|
msgid ""
|
||||||
"No translation available. Please try another language (English or French)."
|
"No translation available. Please try another language (English or French)."
|
||||||
msgstr "翻訳はありません。他の言語(英語またはフランス語)をお試しください。"
|
msgstr "翻訳はありません。他の言語(英語またはフランス語)をお試しください。"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:28
|
#: src/events/templates/events/ctf_info.html:28
|
||||||
#: events/templates/events/event_info.html:18
|
#: src/events/templates/events/event_info.html:18
|
||||||
msgid "This event is over."
|
msgid "This event is over."
|
||||||
msgstr "このイベントは終了しました。"
|
msgstr "このイベントは終了しました。"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:30
|
#: src/events/templates/events/ctf_info.html:30
|
||||||
msgid "Error while processing your request. (Invalid Form)"
|
msgid "Error while processing your request. (Invalid Form)"
|
||||||
msgstr "リクエストの処理中にエラーが発生しました(無効なフォーム)"
|
msgstr "リクエストの処理中にエラーが発生しました(無効なフォーム)"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:32
|
#: src/events/templates/events/ctf_info.html:32
|
||||||
msgid "You must register to the event before submitting flags."
|
msgid "You must register to the event before submitting flags."
|
||||||
msgstr "フラグを送信する前に、イベントへの登録が必要です。"
|
msgstr "フラグを送信する前に、イベントへの登録が必要です。"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:34
|
#: src/events/templates/events/ctf_info.html:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is a team event, please create or join a team before submitting flags."
|
"This is a team event, please create or join a team before submitting flags."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"これはチームイベントです。フラグを送信する前に、チームを作成または参加をして"
|
"これはチームイベントです。フラグを送信する前に、チームを作成または参加をして"
|
||||||
"ください。"
|
"ください。"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:9
|
#: src/events/templates/events/event_info.html:9
|
||||||
msgid "Subscriptions is over."
|
msgid "Subscriptions is over."
|
||||||
msgstr "申し込みは終了しました。"
|
msgstr "申し込みは終了しました。"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:12
|
#: src/events/templates/events/event_info.html:12
|
||||||
#: events/templates/events/event_pwd.html:18
|
#: src/events/templates/events/event_pwd.html:33
|
||||||
msgid "You're already registered to this event."
|
msgid "You're already registered to this event."
|
||||||
msgstr "すでにこのイベントに登録しています。"
|
msgstr "すでにこのイベントに登録しています。"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:20
|
#: src/events/templates/events/event_info.html:20
|
||||||
#: events/templates/events/event_pwd.html:9
|
#: src/events/templates/events/event_pwd.html:9
|
||||||
msgid "This event start at"
|
msgid "This event start at"
|
||||||
msgstr "このイベントの開始時間"
|
msgstr "このイベントの開始時間"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:30
|
#: src/events/templates/events/event_info.html:30
|
||||||
msgid "Challenges"
|
msgid "Challenges"
|
||||||
msgstr "課題"
|
msgstr "課題"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:47
|
#: src/events/templates/events/event_info.html:47
|
||||||
msgid "No challenges available."
|
msgid "No challenges available."
|
||||||
msgstr "チャレンジできません。"
|
msgstr "チャレンジできません。"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:51
|
#: src/events/templates/events/event_info.html:51
|
||||||
msgid "The event has not started yet."
|
msgid "The event has not started yet."
|
||||||
msgstr "イベントはまだ始まっていません。"
|
msgstr "イベントはまだ始まっていません。"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:57
|
#: src/events/templates/events/event_info.html:57
|
||||||
msgid "ScoreBoard"
|
msgid "ScoreBoard"
|
||||||
msgstr "スコアボード"
|
msgstr "スコアボード"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:88
|
#: src/events/templates/events/event_info.html:88
|
||||||
msgid "Team"
|
msgid "Team"
|
||||||
msgstr "チーム"
|
msgstr "チーム"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:106
|
#: src/events/templates/events/event_info.html:106
|
||||||
msgid "No one have earn point yet, you gonna be the first ?"
|
msgid "No one have earn point yet, you gonna be the first ?"
|
||||||
msgstr "まだ誰もポイントを獲得していませんが、あなたが最初に獲得しますか?"
|
msgstr "まだ誰もポイントを獲得していませんが、あなたが最初に獲得しますか?"
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:15
|
#: src/events/templates/events/event_pwd.html:16
|
||||||
#: events/templates/events/join_team.html:22
|
msgid ""
|
||||||
|
"This event is reserved for one or more 42 campuses. If you have not "
|
||||||
|
"connected your intranet to 42CTF, you can do so with this button: "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/events/templates/events/event_pwd.html:25
|
||||||
|
msgid ""
|
||||||
|
"This event is reserved for one or more 42 campuses. And unfortunately your "
|
||||||
|
"campus can't participate. Do not hesitate to contact us to organize an event "
|
||||||
|
"on your campus!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/events/templates/events/event_pwd.html:30
|
||||||
|
#: src/events/templates/events/join_team.html:22
|
||||||
msgid "Wrong password submited."
|
msgid "Wrong password submited."
|
||||||
msgstr "パスワードが違います。"
|
msgstr "パスワードが違います。"
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:20
|
#: src/events/templates/events/event_pwd.html:35
|
||||||
msgid "This event is password protected"
|
msgid "This event is password protected"
|
||||||
msgstr "このイベントはパスワードで保護されています。"
|
msgstr "このイベントはパスワードで保護されています。"
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:21
|
#: src/events/templates/events/event_pwd.html:36
|
||||||
msgid "You need to submit the event password to gain access to this event."
|
msgid "You need to submit the event password to gain access to this event."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"このイベントにアクセスするには、イベントのパスワードを送信する必要がありま"
|
"このイベントにアクセスするには、イベントのパスワードを送信する必要がありま"
|
||||||
"す。"
|
"す。"
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:6 templates/base.html:61
|
#: src/events/templates/events/events_list.html:6 src/templates/base.html:65
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "イベント"
|
msgstr "イベント"
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:38
|
#: src/events/templates/events/events_list.html:38
|
||||||
msgid "See more"
|
msgid "See more"
|
||||||
msgstr "もっと見る"
|
msgstr "もっと見る"
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:44
|
#: src/events/templates/events/events_list.html:44
|
||||||
msgid "No events available."
|
msgid "No events available."
|
||||||
msgstr "該当するイベントはありません。"
|
msgstr "該当するイベントはありません。"
|
||||||
|
|
||||||
#: events/templates/events/join_team.html:20
|
#: src/events/templates/events/join_team.html:20
|
||||||
msgid "Team does not exist."
|
msgid "Team does not exist."
|
||||||
msgstr "チームが存在しません。"
|
msgstr "チームが存在しません。"
|
||||||
|
|
||||||
#: events/templates/events/join_team.html:24
|
#: src/events/templates/events/join_team.html:24
|
||||||
msgid "Maximum size reached."
|
msgid "Maximum size reached."
|
||||||
msgstr "最大サイズに達しました。"
|
msgstr "最大サイズに達しました。"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:26
|
#: src/events/templates/events/manage_team.html:26
|
||||||
msgid "Team password"
|
msgid "Team password"
|
||||||
msgstr "チームのパスワード"
|
msgstr "チームのパスワード"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:29
|
#: src/events/templates/events/manage_team.html:29
|
||||||
msgid "Apply"
|
msgid "Apply"
|
||||||
msgstr "適用する"
|
msgstr "適用する"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:44
|
#: src/events/templates/events/manage_team.html:44
|
||||||
#: events/templates/events/team.html:49
|
#: src/events/templates/events/team.html:49
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "メンバー"
|
msgstr "メンバー"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:52
|
#: src/events/templates/events/manage_team.html:52
|
||||||
msgid "Leave Team"
|
msgid "Leave Team"
|
||||||
msgstr "チームを離れる"
|
msgstr "チームを離れる"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:59
|
#: src/events/templates/events/manage_team.html:59
|
||||||
msgid "Open to automatching"
|
msgid "Open to automatching"
|
||||||
msgstr "自動マッチングにする"
|
msgstr "自動マッチングにする"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:66
|
#: src/events/templates/events/manage_team.html:66
|
||||||
msgid "Close to automatching"
|
msgid "Close to automatching"
|
||||||
msgstr "自動マッチングをやめる"
|
msgstr "自動マッチングをやめる"
|
||||||
|
|
||||||
#: events/templates/events/team.html:38
|
#: src/events/templates/events/team.html:38
|
||||||
msgid "It seems that this team has not solved any challenge yet..."
|
msgid "It seems that this team has not solved any challenge yet..."
|
||||||
msgstr "このチームは、まだ何も課題を解いていないようです..."
|
msgstr "このチームは、まだ何も課題を解いていないようです..."
|
||||||
|
|
||||||
#: home/templates/home/home.html:21
|
#: src/home/templates/home/home.html:21
|
||||||
msgid "Weekly Top 5"
|
msgid "Weekly Top 5"
|
||||||
msgstr "週間トップ5"
|
msgstr "週間トップ5"
|
||||||
|
|
||||||
#: home/templates/home/home.html:48
|
#: src/home/templates/home/home.html:48
|
||||||
msgid "No article available."
|
msgid "No article available."
|
||||||
msgstr "記事はありません。"
|
msgstr "記事はありません。"
|
||||||
|
|
||||||
#: home/templates/home/home.html:53
|
#: src/home/templates/home/home.html:53
|
||||||
msgid "Latest challenges added"
|
msgid "Latest challenges added"
|
||||||
msgstr "最新の追加課題"
|
msgstr "最新の追加課題"
|
||||||
|
|
||||||
#: home/templates/home/home.html:58
|
#: src/home/templates/home/home.html:58
|
||||||
msgid "points"
|
msgid "points"
|
||||||
msgstr "ポイント"
|
msgstr "ポイント"
|
||||||
|
|
||||||
#: home/templates/home/home.html:62
|
#: src/home/templates/home/home.html:62
|
||||||
msgid "No ctf available."
|
msgid "No ctf available."
|
||||||
msgstr "取り組めるctfはありません。"
|
msgstr "取り組めるctfはありません。"
|
||||||
|
|
||||||
#: home/templates/home/home.html:66
|
#: src/home/templates/home/home.html:66
|
||||||
msgid "Latest Flags"
|
msgid "Latest Flags"
|
||||||
msgstr "最新のフラグ"
|
msgstr "最新のフラグ"
|
||||||
|
|
||||||
#: home/templates/home/home.html:80
|
#: src/home/templates/home/home.html:80
|
||||||
msgid "Flags"
|
msgid "Flags"
|
||||||
msgstr "フラグ"
|
msgstr "フラグ"
|
||||||
|
|
||||||
#: home/templates/home/home.html:86
|
#: src/home/templates/home/home.html:86
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "ユーザー"
|
msgstr "ユーザー"
|
||||||
|
|
||||||
#: project/settings.py:116
|
#: src/project/settings.py:116
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr "英語"
|
msgstr "英語"
|
||||||
|
|
||||||
#: project/settings.py:117
|
#: src/project/settings.py:117
|
||||||
msgid "German"
|
msgid "German"
|
||||||
msgstr "ドイツ語"
|
msgstr "ドイツ語"
|
||||||
|
|
||||||
#: project/settings.py:118
|
#: src/project/settings.py:118
|
||||||
msgid "French"
|
msgid "French"
|
||||||
msgstr "フランス語"
|
msgstr "フランス語"
|
||||||
|
|
||||||
#: project/settings.py:119
|
#: src/project/settings.py:119
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "ロシア語"
|
msgstr "ロシア語"
|
||||||
|
|
||||||
#: project/settings.py:120
|
#: src/project/settings.py:120
|
||||||
msgid "Japanese"
|
msgid "Japanese"
|
||||||
msgstr "日本語"
|
msgstr "日本語"
|
||||||
|
|
||||||
#: project/settings.py:121
|
#: src/project/settings.py:121
|
||||||
msgid "Spanish"
|
msgid "Spanish"
|
||||||
msgstr "スペイン語"
|
msgstr "スペイン語"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:38
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:15
|
||||||
|
msgid "Campus"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:46
|
||||||
msgid "First"
|
msgid "First"
|
||||||
msgstr "最初"
|
msgstr "最初"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:39
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:47
|
||||||
msgid "Previous"
|
msgid "Previous"
|
||||||
msgstr "前"
|
msgstr "前"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:43
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:51
|
||||||
msgid "Page "
|
msgid "Page "
|
||||||
msgstr "ページ"
|
msgstr "ページ"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:47
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:55
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "次"
|
msgstr "次"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:48
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:56
|
||||||
msgid "Last"
|
msgid "Last"
|
||||||
msgstr "最後"
|
msgstr "最後"
|
||||||
|
|
||||||
#: templates/base.html:59
|
#: src/templates/base.html:62
|
||||||
msgid "Scoreboard"
|
msgid "Scoreboard"
|
||||||
msgstr "スコアボード"
|
msgstr "スコアボード"
|
||||||
|
|
||||||
#: templates/base.html:64
|
#: src/templates/base.html:83
|
||||||
msgid "Resources"
|
#, fuzzy
|
||||||
msgstr "リソース"
|
#| msgid "Become a Patron!"
|
||||||
|
msgid "Become a member"
|
||||||
|
msgstr "支援者になる!"
|
||||||
|
|
||||||
#: templates/base.html:93
|
#: src/templates/base.html:93
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "ログアウト"
|
msgstr "ログアウト"
|
||||||
|
|
||||||
#: templates/base.html:100
|
#: src/templates/base.html:100
|
||||||
msgid "Sign Up"
|
msgid "Sign Up"
|
||||||
msgstr "サインアップ"
|
msgstr "サインアップ"
|
||||||
|
|
||||||
#: templates/base.html:135
|
#: src/templates/registration/password_reset_complete.html:11
|
||||||
msgid "Become a Patron!"
|
|
||||||
msgstr "支援者になる!"
|
|
||||||
|
|
||||||
#: templates/registration/password_reset_complete.html:11
|
|
||||||
msgid "Your new password has been set."
|
msgid "Your new password has been set."
|
||||||
msgstr "新しいパスワードが設定されました。"
|
msgstr "新しいパスワードが設定されました。"
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:20
|
#: src/templates/registration/password_reset_confirm.html:20
|
||||||
msgid "Your password can’t be too similar to your other personal information."
|
msgid "Your password can’t be too similar to your other personal information."
|
||||||
msgstr "パスワードは、自身の個人情報と似すぎていてはいけません。"
|
msgstr "パスワードは、自身の個人情報と似すぎていてはいけません。"
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:21
|
#: src/templates/registration/password_reset_confirm.html:21
|
||||||
msgid "Your password must contain at least 8 characters."
|
msgid "Your password must contain at least 8 characters."
|
||||||
msgstr "パスワードには8文字以上が必要です。"
|
msgstr "パスワードには8文字以上が必要です。"
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:22
|
#: src/templates/registration/password_reset_confirm.html:22
|
||||||
msgid "Your password can’t be a commonly used password."
|
msgid "Your password can’t be a commonly used password."
|
||||||
msgstr "パスワードは、一般的に使われているものを使用しないでください。"
|
msgstr "パスワードは、一般的に使われているものを使用しないでください。"
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:23
|
#: src/templates/registration/password_reset_confirm.html:23
|
||||||
msgid "Your password can’t be entirely numeric."
|
msgid "Your password can’t be entirely numeric."
|
||||||
msgstr "パスワードはすべて数字にはできません。"
|
msgstr "パスワードはすべて数字にはできません。"
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:26
|
#: src/templates/registration/password_reset_confirm.html:26
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "確認"
|
msgstr "確認"
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:28
|
#: src/templates/registration/password_reset_confirm.html:28
|
||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr "送信"
|
msgstr "送信"
|
||||||
|
|
||||||
#: templates/registration/password_reset_done.html:11
|
#: src/templates/registration/password_reset_done.html:11
|
||||||
msgid ""
|
msgid ""
|
||||||
"We've emailed you instructions for setting your password. You should receive "
|
"We've emailed you instructions for setting your password. You should receive "
|
||||||
"the email shortly!"
|
"the email shortly!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"パスワードの設定方法をメールでお送りしました。まもなくメールが届くはずです!"
|
"パスワードの設定方法をメールでお送りしました。まもなくメールが届くはずです!"
|
||||||
|
|
||||||
#: templates/registration/password_reset_form.html:16
|
#: src/templates/registration/password_reset_form.html:16
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
msgstr "リセット"
|
msgstr "リセット"
|
||||||
|
|
||||||
|
#~ msgid "Status: Member"
|
||||||
|
#~ msgstr "ステータス: メンバー"
|
||||||
|
|
||||||
|
#~ msgid "Resources"
|
||||||
|
#~ msgstr "リソース"
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
|
"POT-Creation-Date: 2022-08-16 19:28+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -20,192 +20,229 @@ msgstr ""
|
||||||
"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
|
"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
|
||||||
"%100>=11 && n%100<=14)? 2 : 3);\n"
|
"%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:8
|
#: src/accounts/templates/accounts/delete.html:8
|
||||||
msgid "Delete account"
|
msgid "Delete account"
|
||||||
msgstr "Удалить аккаунт"
|
msgstr "Удалить аккаунт"
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:11
|
#: src/accounts/templates/accounts/delete.html:11
|
||||||
msgid "Please confirm your password to delete your account."
|
msgid "Please confirm your password to delete your account."
|
||||||
msgstr "Пожалуйста, подтвердите свой пароль, чтобы удалить свой аккаунт."
|
msgstr "Пожалуйста, подтвердите свой пароль, чтобы удалить свой аккаунт."
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:12
|
#: src/accounts/templates/accounts/delete.html:12
|
||||||
msgid "Deleted accounts cannot be recovered."
|
msgid "Deleted accounts cannot be recovered."
|
||||||
msgstr "Удаленные аккаунты невозможно восстановить."
|
msgstr "Удаленные аккаунты невозможно восстановить."
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:15
|
#: src/accounts/templates/accounts/delete.html:15
|
||||||
msgid "Password incorrect."
|
msgid "Password incorrect."
|
||||||
msgstr "Неверный пароль."
|
msgstr "Неверный пароль."
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:17
|
#: src/accounts/templates/accounts/delete.html:17
|
||||||
msgid "Your account has been deleted."
|
msgid "Your account has been deleted."
|
||||||
msgstr "Твой аккаунт был удален."
|
msgstr "Твой аккаунт был удален."
|
||||||
|
|
||||||
#: accounts/templates/accounts/delete.html:22
|
#: src/accounts/templates/accounts/delete.html:22
|
||||||
#: accounts/templates/accounts/login.html:19
|
#: src/accounts/templates/accounts/login.html:19
|
||||||
#: accounts/templates/accounts/register.html:23
|
#: src/accounts/templates/accounts/register.html:23
|
||||||
#: events/templates/events/create_team.html:27
|
#: src/events/templates/events/create_team.html:27
|
||||||
#: events/templates/events/join_team.html:32
|
#: src/events/templates/events/join_team.html:32
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Пароль"
|
msgstr "Пароль"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:21
|
#: src/accounts/templates/accounts/edit.html:21
|
||||||
#: accounts/templates/accounts/login.html:18
|
#: src/accounts/templates/accounts/login.html:18
|
||||||
#: accounts/templates/accounts/register.html:22
|
#: src/accounts/templates/accounts/register.html:22
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
|
#: src/ctfs/templates/ctfs/ctf_info.html:63
|
||||||
#: events/templates/events/ctf_info.html:65
|
#: src/ctfs/templates/ctfs/ctfs_list.html:12
|
||||||
#: events/templates/events/event_info.html:64
|
#: src/events/templates/events/ctf_info.html:65
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:13
|
#: src/events/templates/events/event_info.html:64
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:13
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr "Имя пользователя"
|
msgstr "Имя пользователя"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:25
|
#: src/accounts/templates/accounts/edit.html:25
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Электронная почта"
|
msgstr "Электронная почта"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:30
|
#: src/accounts/templates/accounts/edit.html:30
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:64
|
#: src/ctfs/templates/ctfs/ctf_info.html:64
|
||||||
#: events/templates/events/ctf_info.html:66
|
#: src/events/templates/events/ctf_info.html:66
|
||||||
#: events/templates/events/event_info.html:65
|
#: src/events/templates/events/event_info.html:65
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:14
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:14
|
||||||
msgid "Website"
|
msgid "Website"
|
||||||
msgstr "Веб-сайт"
|
msgstr "Веб-сайт"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:36
|
#: src/accounts/templates/accounts/edit.html:36
|
||||||
msgid " Apply"
|
msgid " Apply"
|
||||||
msgstr "Применить"
|
msgstr "Применить"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:45
|
#: src/accounts/templates/accounts/edit.html:45
|
||||||
msgid "Connected accounts"
|
msgid "Connected accounts"
|
||||||
msgstr "Связанные аккаунты"
|
msgstr "Связанные аккаунты"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:53
|
#: src/accounts/templates/accounts/edit.html:53
|
||||||
msgid "Disconnect Discord"
|
msgid "Disconnect Discord"
|
||||||
msgstr "Отключить Discord"
|
msgstr "Отключить Discord"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:59
|
#: src/accounts/templates/accounts/edit.html:59
|
||||||
msgid "Connect Discord"
|
msgid "Connect Discord"
|
||||||
msgstr "Подключить Discord"
|
msgstr "Подключить Discord"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:70
|
#: src/accounts/templates/accounts/edit.html:68
|
||||||
#: accounts/templates/accounts/profile.html:46
|
#, fuzzy
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
|
#| msgid "Disconnect Discord"
|
||||||
#: events/templates/events/event_info.html:66
|
msgid "Disconnect 42"
|
||||||
#: events/templates/events/event_info.html:89
|
msgstr "Отключить Discord"
|
||||||
#: events/templates/events/manage_team.html:40
|
|
||||||
#: events/templates/events/team.html:45
|
#: src/accounts/templates/accounts/edit.html:74
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:15
|
#: src/events/templates/events/event_pwd.html:19
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Connect Discord"
|
||||||
|
msgid "Connect 42"
|
||||||
|
msgstr "Подключить Discord"
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/edit.html:85
|
||||||
|
#: src/accounts/templates/accounts/profile.html:46
|
||||||
|
#: src/ctfs/templates/ctfs/ctf_info.html:65
|
||||||
|
#: src/ctfs/templates/ctfs/ctfs_list.html:13
|
||||||
|
#: src/events/templates/events/event_info.html:66
|
||||||
|
#: src/events/templates/events/event_info.html:89
|
||||||
|
#: src/events/templates/events/manage_team.html:40
|
||||||
|
#: src/events/templates/events/team.html:45
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:16
|
||||||
msgid "Score"
|
msgid "Score"
|
||||||
msgstr "Счет"
|
msgstr "Счет"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:78
|
#: src/accounts/templates/accounts/edit.html:93
|
||||||
#: accounts/templates/accounts/profile.html:60
|
#: src/accounts/templates/accounts/profile.html:60
|
||||||
msgid "Registered since"
|
msgid "Registered since"
|
||||||
msgstr "Зарегистрирован с"
|
msgstr "Зарегистрирован с"
|
||||||
|
|
||||||
#: accounts/templates/accounts/edit.html:84
|
#: src/accounts/templates/accounts/edit.html:99
|
||||||
msgid " Delete my account"
|
msgid " Delete my account"
|
||||||
msgstr " Удалить мой аккаунт"
|
msgstr " Удалить мой аккаунт"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:13
|
#: src/accounts/templates/accounts/login.html:13
|
||||||
msgid "Please, verify your infos."
|
msgid "Please, verify your infos."
|
||||||
msgstr "Пожалуйста, проверь свои данные."
|
msgstr "Пожалуйста, проверь свои данные."
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:22
|
#: src/accounts/templates/accounts/login.html:22
|
||||||
msgid "Reset password"
|
msgid "Reset password"
|
||||||
msgstr "Сбросить пароль"
|
msgstr "Сбросить пароль"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:31
|
#: src/accounts/templates/accounts/login.html:31
|
||||||
#: accounts/templates/accounts/register.html:38 templates/base.html:97
|
#: src/accounts/templates/accounts/register.html:37 src/templates/base.html:97
|
||||||
#: templates/registration/password_reset_complete.html:18
|
#: src/templates/registration/password_reset_complete.html:18
|
||||||
#: templates/registration/password_reset_confirm.html:38
|
#: src/templates/registration/password_reset_confirm.html:38
|
||||||
#: templates/registration/password_reset_done.html:18
|
#: src/templates/registration/password_reset_done.html:18
|
||||||
#: templates/registration/password_reset_form.html:26
|
#: src/templates/registration/password_reset_form.html:26
|
||||||
msgid "Login"
|
msgid "Login"
|
||||||
msgstr "Авторизоваться"
|
msgstr "Авторизоваться"
|
||||||
|
|
||||||
#: accounts/templates/accounts/login.html:32
|
#: src/accounts/templates/accounts/login.html:32
|
||||||
#: accounts/templates/accounts/register.html:37
|
#: src/accounts/templates/accounts/register.html:36
|
||||||
#: templates/registration/password_reset_complete.html:19
|
#: src/templates/registration/password_reset_complete.html:19
|
||||||
#: templates/registration/password_reset_confirm.html:39
|
#: src/templates/registration/password_reset_confirm.html:39
|
||||||
#: templates/registration/password_reset_done.html:19
|
#: src/templates/registration/password_reset_done.html:19
|
||||||
#: templates/registration/password_reset_form.html:27
|
#: src/templates/registration/password_reset_form.html:27
|
||||||
msgid "Sign up"
|
msgid "Sign up"
|
||||||
msgstr "Зарегистрироваться"
|
msgstr "Зарегистрироваться"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:10
|
#: src/accounts/templates/accounts/profile.html:10
|
||||||
msgid "Challenges Solved by"
|
msgid "Challenges Solved by"
|
||||||
msgstr "Челленджы решенные"
|
msgstr "Челленджы решенные"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:21
|
#: src/accounts/templates/accounts/profile.html:21
|
||||||
#: events/templates/events/team.html:20
|
#: src/events/templates/events/team.html:20
|
||||||
msgid "Challenge Name"
|
msgid "Challenge Name"
|
||||||
msgstr "Название челленджа"
|
msgstr "Название челленджа"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:22
|
#: src/accounts/templates/accounts/profile.html:22
|
||||||
#: events/templates/events/team.html:21
|
#: src/events/templates/events/team.html:21
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr "Категория"
|
msgstr "Категория"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:23
|
#: src/accounts/templates/accounts/profile.html:23
|
||||||
#: events/templates/events/team.html:22
|
#: src/events/templates/events/team.html:22
|
||||||
msgid "Points"
|
msgid "Points"
|
||||||
msgstr "Баллы"
|
msgstr "Баллы"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:24
|
#: src/accounts/templates/accounts/profile.html:24
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:66
|
#: src/ctfs/templates/ctfs/ctf_info.html:66
|
||||||
#: events/templates/events/ctf_info.html:67
|
#: src/events/templates/events/ctf_info.html:67
|
||||||
#: events/templates/events/team.html:23
|
#: src/events/templates/events/team.html:23
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Дата"
|
msgstr "Дата"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:39
|
#: src/accounts/templates/accounts/profile.html:39
|
||||||
msgid "It seems that this user has not solved any challenge yet..."
|
msgid "It seems that this user has not solved any challenge yet..."
|
||||||
msgstr "Похоже, что этот пользователь ещё не решил ни одного челленджа..."
|
msgstr "Похоже, что этот пользователь ещё не решил ни одного челленджа..."
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:47
|
#: src/accounts/templates/accounts/profile.html:47
|
||||||
#: events/templates/events/event_info.html:63
|
#: src/events/templates/events/event_info.html:63
|
||||||
#: events/templates/events/event_info.html:87
|
#: src/events/templates/events/event_info.html:87
|
||||||
#: events/templates/events/manage_team.html:41
|
#: src/events/templates/events/manage_team.html:41
|
||||||
#: events/templates/events/team.html:46
|
#: src/events/templates/events/team.html:46
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:12
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:12
|
||||||
msgid "Rank"
|
msgid "Rank"
|
||||||
msgstr "Рейтинг"
|
msgstr "Рейтинг"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:56
|
#: src/accounts/templates/accounts/profile.html:56
|
||||||
msgid "Status: Member"
|
#, fuzzy
|
||||||
msgstr "Статус: Участник"
|
#| msgid "Members"
|
||||||
|
msgid "Member"
|
||||||
|
msgstr "Участники"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:58
|
#: src/accounts/templates/accounts/profile.html:58
|
||||||
msgid "Status: Visitor"
|
#, fuzzy
|
||||||
|
#| msgid "Status: Visitor"
|
||||||
|
msgid " Visitor"
|
||||||
msgstr "Статус: Гость"
|
msgstr "Статус: Гость"
|
||||||
|
|
||||||
#: accounts/templates/accounts/profile.html:64
|
#: src/accounts/templates/accounts/profile.html:64
|
||||||
#: events/templates/events/team.html:57
|
#: src/events/templates/events/team.html:57
|
||||||
msgid "Categories stats"
|
msgid "Categories stats"
|
||||||
msgstr "Статистика по категориям"
|
msgstr "Статистика по категориям"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:13
|
#: src/accounts/templates/accounts/profile.html:81
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Challenge Name"
|
||||||
|
msgid "Challenges created"
|
||||||
|
msgstr "Название челленджа"
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/profile.html:87
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "It seems that this user has not solved any challenge yet..."
|
||||||
|
msgid "It seems that this user has not created any challenge yet..."
|
||||||
|
msgstr "Похоже, что этот пользователь ещё не решил ни одного челленджа..."
|
||||||
|
|
||||||
|
#: src/accounts/templates/accounts/register.html:13
|
||||||
msgid "Welcome !"
|
msgid "Welcome !"
|
||||||
msgstr "Добро пожаловать !"
|
msgstr "Добро пожаловать !"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:14
|
#: src/accounts/templates/accounts/register.html:14
|
||||||
msgid "Your account has been created."
|
msgid "Your account has been created."
|
||||||
msgstr "Твой аккаунт был создан."
|
msgstr "Твой аккаунт был создан."
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:25
|
#: src/accounts/templates/accounts/register.html:25
|
||||||
msgid "Personal website"
|
msgid "Personal website"
|
||||||
msgstr "Персональный сайт"
|
msgstr "Персональный сайт"
|
||||||
|
|
||||||
#: accounts/templates/accounts/register.html:26
|
#: src/accounts/templates/accounts/register.html:26
|
||||||
#: events/templates/events/event_info.html:119
|
#: src/events/templates/events/event_info.html:119
|
||||||
msgid "Register"
|
msgid "Register"
|
||||||
msgstr "Зарегистрироваться"
|
msgstr "Зарегистрироваться"
|
||||||
|
|
||||||
#: accounts/views/views.py:33
|
#: src/accounts/views/views.py:33
|
||||||
msgid "Your account was inactive."
|
msgid "Your account was inactive."
|
||||||
msgstr "Твой аккаунт был неактивен."
|
msgstr "Твой аккаунт был неактивен."
|
||||||
|
|
||||||
#: accounts/views/views.py:52
|
#: src/accounts/views/views.py:57
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Your password must contain at least 8 characters."
|
||||||
|
msgid "The password must be at least 8 characters long."
|
||||||
|
msgstr "Твой пароль должен содержать не менее 8 символов."
|
||||||
|
|
||||||
|
#: src/accounts/views/views.py:67
|
||||||
msgid ""
|
msgid ""
|
||||||
"The password must contain at least one letter and at least one digit or "
|
"The password must contain at least one letter and at least one digit or "
|
||||||
"punctuation character."
|
"punctuation character."
|
||||||
|
@ -213,431 +250,457 @@ msgstr ""
|
||||||
"Пароль должен содержать как минимум одну букву и как минимум одну цифру или "
|
"Пароль должен содержать как минимум одну букву и как минимум одну цифру или "
|
||||||
"знак препинания"
|
"знак препинания"
|
||||||
|
|
||||||
#: accounts/views/views.py:54
|
#: src/accounts/views/views.py:77
|
||||||
msgid "A user with that email already exists."
|
msgid "A user with that email already exists."
|
||||||
msgstr "Пользователь с таким электронным адресом уже существует."
|
msgstr "Пользователь с таким электронным адресом уже существует."
|
||||||
|
|
||||||
#: accounts/views/views.py:67
|
#: src/accounts/views/views.py:99
|
||||||
msgid "A user with that username already exists."
|
msgid "A user with that username already exists."
|
||||||
msgstr "Пользователь с таким именем уже существует."
|
msgstr "Пользователь с таким именем уже существует."
|
||||||
|
|
||||||
#: accounts/views/views.py:95
|
#: src/accounts/views/views.py:132
|
||||||
msgid "Email already taken."
|
msgid "Email already taken."
|
||||||
msgstr "Электронная почта уже занята."
|
msgstr "Электронная почта уже занята."
|
||||||
|
|
||||||
#: accounts/views/views.py:101
|
#: src/accounts/views/views.py:138
|
||||||
msgid "Username already taken."
|
msgid "Username already taken."
|
||||||
msgstr "Имя пользователя уже занято."
|
msgstr "Имя пользователя уже занято."
|
||||||
|
|
||||||
#: accounts/views/views.py:105 events/views/teams.py:124
|
#: src/accounts/views/views.py:142 src/events/views/teams.py:124
|
||||||
msgid "Updated."
|
msgid "Updated."
|
||||||
msgstr "Обновлено."
|
msgstr "Обновлено."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:12
|
#: src/ctfs/templates/ctfs/ctf_info.html:12
|
||||||
#: events/templates/events/ctf_info.html:12
|
#: src/events/templates/events/ctf_info.html:12
|
||||||
msgid "Published date"
|
msgid "Published date"
|
||||||
msgstr "Дата публикации"
|
msgstr "Дата публикации"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:16
|
#: src/ctfs/templates/ctfs/ctf_info.html:16
|
||||||
msgid "Challenge is not yet available."
|
msgid "Challenge is not yet available."
|
||||||
msgstr "Челлендж пока не доступен."
|
msgstr "Челлендж пока не доступен."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:29
|
#: src/ctfs/templates/ctfs/ctf_info.html:29
|
||||||
#: events/templates/events/ctf_info.html:24
|
#: src/events/templates/events/ctf_info.html:24
|
||||||
msgid "Congratulation !"
|
msgid "Congratulation !"
|
||||||
msgstr "Поздравление !"
|
msgstr "Поздравление !"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:31
|
#: src/ctfs/templates/ctfs/ctf_info.html:31
|
||||||
#: events/templates/events/ctf_info.html:26
|
#: src/events/templates/events/ctf_info.html:26
|
||||||
msgid "Already flagged"
|
msgid "Already flagged"
|
||||||
msgstr "Уже отмечено"
|
msgstr "Этот челлендж уже пройден"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
|
#: src/ctfs/templates/ctfs/ctf_info.html:33
|
||||||
#: events/templates/events/ctf_info.html:36
|
#: src/ctfs/templates/ctfs/ctf_info.html:42
|
||||||
#: events/templates/events/ctf_info.html:45
|
#: src/events/templates/events/ctf_info.html:36
|
||||||
|
#: src/events/templates/events/ctf_info.html:45
|
||||||
msgid "Start the challenge"
|
msgid "Start the challenge"
|
||||||
msgstr "Начать челлендж"
|
msgstr "Начать челлендж"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
|
#: src/ctfs/templates/ctfs/ctf_info.html:35
|
||||||
#: events/templates/events/ctf_info.html:38
|
#: src/ctfs/templates/ctfs/ctf_info.html:44
|
||||||
#: events/templates/events/ctf_info.html:47
|
#: src/events/templates/events/ctf_info.html:38
|
||||||
|
#: src/events/templates/events/ctf_info.html:47
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "Скачать"
|
msgstr "Скачать"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:39
|
#: src/ctfs/templates/ctfs/ctf_info.html:39
|
||||||
#: events/templates/events/ctf_info.html:42
|
#: src/events/templates/events/ctf_info.html:42
|
||||||
msgid "Wrong flag ! You can do it !"
|
msgid "Wrong flag ! You can do it !"
|
||||||
msgstr "Неверный флаг ! У тебя всё получится !"
|
msgstr "Неверный флаг ! У тебя всё получится !"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:58
|
#: src/ctfs/templates/ctfs/ctf_info.html:58
|
||||||
#: events/templates/events/ctf_info.html:60
|
#: src/events/templates/events/ctf_info.html:60
|
||||||
msgid "Solved by"
|
msgid "Solved by"
|
||||||
msgstr "Решен"
|
msgstr "Решен"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:82
|
#: src/ctfs/templates/ctfs/ctf_info.html:82
|
||||||
#: events/templates/events/ctf_info.html:90
|
#: src/events/templates/events/ctf_info.html:90
|
||||||
msgid "Nobody has solved this challenge yet."
|
msgid "Nobody has solved this challenge yet."
|
||||||
msgstr "Никто еще не решил этот челлендж."
|
msgstr "Никто еще не решил этот челлендж."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:89
|
#: src/ctfs/templates/ctfs/ctf_info.html:89
|
||||||
#: events/templates/events/ctf_info.html:97
|
#: src/events/templates/events/ctf_info.html:97
|
||||||
msgid "Author"
|
msgid "Author"
|
||||||
msgstr "Автор"
|
msgstr "Автор"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctf_info.html:90
|
#: src/ctfs/templates/ctfs/ctf_info.html:90
|
||||||
#: events/templates/events/ctf_info.html:98
|
#: src/events/templates/events/ctf_info.html:98
|
||||||
msgid "Point reward"
|
msgid "Point reward"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:14
|
#: src/ctfs/templates/ctfs/ctfs_list.html:14
|
||||||
msgid "Solved"
|
msgid "Solved"
|
||||||
msgstr "Решено"
|
msgstr "Решено"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:37
|
#: src/ctfs/templates/ctfs/ctfs_list.html:37
|
||||||
msgid "No ctf available for this category."
|
msgid "No ctf available for this category."
|
||||||
msgstr "Для этой категории нет доступных CTF."
|
msgstr "Для этой категории нет доступных CTF."
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:42
|
#: src/ctfs/templates/ctfs/ctfs_list.html:42
|
||||||
msgid "Categories"
|
msgid "Categories"
|
||||||
msgstr "Категории"
|
msgstr "Категории"
|
||||||
|
|
||||||
#: ctfs/templates/ctfs/ctfs_list.html:48 templates/base.html:54
|
#: src/ctfs/templates/ctfs/ctfs_list.html:48 src/templates/base.html:56
|
||||||
msgid "No category available."
|
msgid "No category available."
|
||||||
msgstr "Категория отсутствует."
|
msgstr "Категория отсутствует."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:10
|
#: src/events/templates/events/create_team.html:10
|
||||||
#: events/templates/events/join_team.html:10
|
#: src/events/templates/events/join_team.html:10
|
||||||
msgid "This event starts at"
|
msgid "This event starts at"
|
||||||
msgstr "Это соревнование начнётся в"
|
msgstr "Это соревнование начнётся в"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:17
|
#: src/events/templates/events/create_team.html:17
|
||||||
#: events/templates/events/join_team.html:17
|
#: src/events/templates/events/join_team.html:17
|
||||||
msgid "You need to be registered to the event."
|
msgid "You need to be registered to the event."
|
||||||
msgstr "Ты должнен быть зарегистрированы на это соревнование."
|
msgstr "Ты должнен быть зарегистрированы на это соревнование."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:20 events/views/teams.py:120
|
#: src/events/templates/events/create_team.html:20
|
||||||
|
#: src/events/views/teams.py:120
|
||||||
msgid "Name already taken."
|
msgid "Name already taken."
|
||||||
msgstr "Имя уже занято."
|
msgstr "Имя уже занято."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:26
|
#: src/events/templates/events/create_team.html:26
|
||||||
#: events/templates/events/join_team.html:31
|
#: src/events/templates/events/join_team.html:31
|
||||||
#: events/templates/events/manage_team.html:22
|
#: src/events/templates/events/manage_team.html:22
|
||||||
msgid "Team name"
|
msgid "Team name"
|
||||||
msgstr "Название команды"
|
msgstr "Название команды"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:28
|
#: src/events/templates/events/create_team.html:28
|
||||||
#: events/templates/events/create_team.html:49
|
#: src/events/templates/events/create_team.html:49
|
||||||
#: events/templates/events/join_team.html:54
|
#: src/events/templates/events/join_team.html:54
|
||||||
msgid "Create Team"
|
msgid "Create Team"
|
||||||
msgstr "Создать команду"
|
msgstr "Создать команду"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:33
|
#: src/events/templates/events/create_team.html:33
|
||||||
#: events/templates/events/event_pwd.html:28
|
#: src/events/templates/events/event_pwd.html:44
|
||||||
#: events/templates/events/join_team.html:38
|
#: src/events/templates/events/join_team.html:38
|
||||||
msgid "You need to be logged to access this event."
|
msgid "You need to be logged to access this event."
|
||||||
msgstr "Для доступа к этому событию тебе необходимо авторизоваться."
|
msgstr "Для доступа к этому событию тебе необходимо авторизоваться."
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:42
|
#: src/events/templates/events/create_team.html:42
|
||||||
#: events/templates/events/event_info.html:113
|
#: src/events/templates/events/event_info.html:113
|
||||||
#: events/templates/events/event_pwd.html:36
|
#: src/events/templates/events/event_pwd.html:52
|
||||||
#: events/templates/events/join_team.html:47
|
#: src/events/templates/events/join_team.html:47
|
||||||
msgid "Starts at"
|
msgid "Starts at"
|
||||||
msgstr "Начинается в"
|
msgstr "Начинается в"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:43
|
#: src/events/templates/events/create_team.html:43
|
||||||
#: events/templates/events/event_info.html:114
|
#: src/events/templates/events/event_info.html:114
|
||||||
#: events/templates/events/event_pwd.html:37
|
#: src/events/templates/events/event_pwd.html:53
|
||||||
#: events/templates/events/join_team.html:48
|
#: src/events/templates/events/join_team.html:48
|
||||||
msgid "Ends at"
|
msgid "Ends at"
|
||||||
msgstr "Заканчивается в"
|
msgstr "Заканчивается в"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:47
|
#: src/events/templates/events/create_team.html:47
|
||||||
#: events/templates/events/event_info.html:129
|
#: src/events/templates/events/event_info.html:129
|
||||||
#: events/templates/events/join_team.html:52
|
#: src/events/templates/events/join_team.html:52
|
||||||
msgid "Manage my team"
|
msgid "Manage my team"
|
||||||
msgstr "Управлять моей командой"
|
msgstr "Управлять моей командой"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:48
|
#: src/events/templates/events/create_team.html:48
|
||||||
#: events/templates/events/join_team.html:33
|
#: src/events/templates/events/join_team.html:33
|
||||||
#: events/templates/events/join_team.html:53
|
#: src/events/templates/events/join_team.html:53
|
||||||
msgid "Join Team"
|
msgid "Join Team"
|
||||||
msgstr "Присоединиться к команде"
|
msgstr "Присоединиться к команде"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:53
|
#: src/events/templates/events/create_team.html:53
|
||||||
#: events/templates/events/join_team.html:58
|
#: src/events/templates/events/join_team.html:58
|
||||||
msgid "Auto-matching"
|
msgid "Auto-matching"
|
||||||
msgstr "Автоматический выбор"
|
msgstr "Автоматический выбор"
|
||||||
|
|
||||||
#: events/templates/events/create_team.html:57
|
#: src/events/templates/events/create_team.html:57
|
||||||
#: events/templates/events/join_team.html:62
|
#: src/events/templates/events/join_team.html:62
|
||||||
msgid "Find me a team !"
|
msgid "Find me a team !"
|
||||||
msgstr "Найди мне команду!"
|
msgstr "Найди мне команду!"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:10
|
#: src/events/templates/events/ctf_info.html:10
|
||||||
msgid "Event"
|
msgid "Event"
|
||||||
msgstr "Событие"
|
msgstr "Событие"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:18
|
#: src/events/templates/events/ctf_info.html:18
|
||||||
msgid ""
|
msgid ""
|
||||||
"No translation available. Please try another language (English or French)."
|
"No translation available. Please try another language (English or French)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Перевод недоступен. Пожалуйста, попобуй другой язык (английский или французский)."
|
"Перевод недоступен. Пожалуйста, попобуй другой язык (английский или "
|
||||||
|
"французский)."
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:28
|
#: src/events/templates/events/ctf_info.html:28
|
||||||
#: events/templates/events/event_info.html:18
|
#: src/events/templates/events/event_info.html:18
|
||||||
msgid "This event is over."
|
msgid "This event is over."
|
||||||
msgstr "Это соревнование закончилось."
|
msgstr "Это соревнование закончилось."
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:30
|
#: src/events/templates/events/ctf_info.html:30
|
||||||
msgid "Error while processing your request. (Invalid Form)"
|
msgid "Error while processing your request. (Invalid Form)"
|
||||||
msgstr "Ошибка при обработке твоего запроса. (Недействительная заявка)"
|
msgstr "Ошибка при обработке твоего запроса. (Недействительная заявка)"
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:32
|
#: src/events/templates/events/ctf_info.html:32
|
||||||
msgid "You must register to the event before submitting flags."
|
msgid "You must register to the event before submitting flags."
|
||||||
msgstr "Перед вводом флагов необходимо зарегистрироваться на соревнование."
|
msgstr "Перед вводом флагов необходимо зарегистрироваться на соревнование."
|
||||||
|
|
||||||
#: events/templates/events/ctf_info.html:34
|
#: src/events/templates/events/ctf_info.html:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is a team event, please create or join a team before submitting flags."
|
"This is a team event, please create or join a team before submitting flags."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Это командное соревнование, пожалуйста, создай или вступи в команду перед тем как отправить флаги."
|
"Это командное соревнование, пожалуйста, создай или вступи в команду перед "
|
||||||
|
"тем как отправить флаги."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:9
|
#: src/events/templates/events/event_info.html:9
|
||||||
msgid "Subscriptions is over."
|
msgid "Subscriptions is over."
|
||||||
msgstr "Регистрация уже завершена."
|
msgstr "Регистрация уже завершена."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:12
|
#: src/events/templates/events/event_info.html:12
|
||||||
#: events/templates/events/event_pwd.html:18
|
#: src/events/templates/events/event_pwd.html:33
|
||||||
msgid "You're already registered to this event."
|
msgid "You're already registered to this event."
|
||||||
msgstr "Ты уже зарегистрирован на это соревнование."
|
msgstr "Ты уже зарегистрирован на это соревнование."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:20
|
#: src/events/templates/events/event_info.html:20
|
||||||
#: events/templates/events/event_pwd.html:9
|
#: src/events/templates/events/event_pwd.html:9
|
||||||
msgid "This event start at"
|
msgid "This event start at"
|
||||||
msgstr "Это событие начётся в"
|
msgstr "Это событие начётся в"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:30
|
#: src/events/templates/events/event_info.html:30
|
||||||
msgid "Challenges"
|
msgid "Challenges"
|
||||||
msgstr "Челленджы"
|
msgstr "Челленджы"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:47
|
#: src/events/templates/events/event_info.html:47
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "No article available."
|
#| msgid "No article available."
|
||||||
msgid "No challenges available."
|
msgid "No challenges available."
|
||||||
msgstr "Нет доступных статей."
|
msgstr "Нет доступных статей."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:51
|
#: src/events/templates/events/event_info.html:51
|
||||||
msgid "The event has not started yet."
|
msgid "The event has not started yet."
|
||||||
msgstr "Это событие еще не началось."
|
msgstr "Это событие еще не началось."
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:57
|
#: src/events/templates/events/event_info.html:57
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Score"
|
#| msgid "Score"
|
||||||
msgid "ScoreBoard"
|
msgid "ScoreBoard"
|
||||||
msgstr "Таблица результатов"
|
msgstr "Таблица результатов"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:88
|
#: src/events/templates/events/event_info.html:88
|
||||||
msgid "Team"
|
msgid "Team"
|
||||||
msgstr "Команда"
|
msgstr "Команда"
|
||||||
|
|
||||||
#: events/templates/events/event_info.html:106
|
#: src/events/templates/events/event_info.html:106
|
||||||
msgid "No one have earn point yet, you gonna be the first ?"
|
msgid "No one have earn point yet, you gonna be the first ?"
|
||||||
msgstr "Никто еще не получил балла, собираешься стать первым ?"
|
msgstr "Никто еще не получил балла, собираешься стать первым ?"
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:15
|
#: src/events/templates/events/event_pwd.html:16
|
||||||
#: events/templates/events/join_team.html:22
|
msgid ""
|
||||||
|
"This event is reserved for one or more 42 campuses. If you have not "
|
||||||
|
"connected your intranet to 42CTF, you can do so with this button: "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/events/templates/events/event_pwd.html:25
|
||||||
|
msgid ""
|
||||||
|
"This event is reserved for one or more 42 campuses. And unfortunately your "
|
||||||
|
"campus can't participate. Do not hesitate to contact us to organize an event "
|
||||||
|
"on your campus!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/events/templates/events/event_pwd.html:30
|
||||||
|
#: src/events/templates/events/join_team.html:22
|
||||||
msgid "Wrong password submited."
|
msgid "Wrong password submited."
|
||||||
msgstr "Введен неправильный пароль."
|
msgstr "Введен неправильный пароль."
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:20
|
#: src/events/templates/events/event_pwd.html:35
|
||||||
msgid "This event is password protected"
|
msgid "This event is password protected"
|
||||||
msgstr "Это соревнование защищено паролем"
|
msgstr "Это соревнование защищено паролем"
|
||||||
|
|
||||||
#: events/templates/events/event_pwd.html:21
|
#: src/events/templates/events/event_pwd.html:36
|
||||||
msgid "You need to submit the event password to gain access to this event."
|
msgid "You need to submit the event password to gain access to this event."
|
||||||
msgstr "Чтобы получить доступ к этому соревнованию, необходимо ввести пароль."
|
msgstr "Чтобы получить доступ к этому соревнованию, необходимо ввести пароль."
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:6 templates/base.html:61
|
#: src/events/templates/events/events_list.html:6 src/templates/base.html:65
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "События"
|
msgstr "События"
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:38
|
#: src/events/templates/events/events_list.html:38
|
||||||
msgid "See more"
|
msgid "See more"
|
||||||
msgstr "Смотреть далее"
|
msgstr "Смотреть далее"
|
||||||
|
|
||||||
#: events/templates/events/events_list.html:44
|
#: src/events/templates/events/events_list.html:44
|
||||||
msgid "No events available."
|
msgid "No events available."
|
||||||
msgstr "Нет доступных соревнований."
|
msgstr "Нет доступных соревнований."
|
||||||
|
|
||||||
#: events/templates/events/join_team.html:20
|
#: src/events/templates/events/join_team.html:20
|
||||||
msgid "Team does not exist."
|
msgid "Team does not exist."
|
||||||
msgstr "Команда не существует."
|
msgstr "Команда не существует."
|
||||||
|
|
||||||
#: events/templates/events/join_team.html:24
|
#: src/events/templates/events/join_team.html:24
|
||||||
msgid "Maximum size reached."
|
msgid "Maximum size reached."
|
||||||
msgstr "Максимальный размер достигнут."
|
msgstr "Максимальный размер достигнут."
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:26
|
#: src/events/templates/events/manage_team.html:26
|
||||||
msgid "Team password"
|
msgid "Team password"
|
||||||
msgstr "Пароль команды"
|
msgstr "Пароль команды"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:29
|
#: src/events/templates/events/manage_team.html:29
|
||||||
msgid "Apply"
|
msgid "Apply"
|
||||||
msgstr "Применить"
|
msgstr "Применить"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:44
|
#: src/events/templates/events/manage_team.html:44
|
||||||
#: events/templates/events/team.html:49
|
#: src/events/templates/events/team.html:49
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "Участники"
|
msgstr "Участники"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:52
|
#: src/events/templates/events/manage_team.html:52
|
||||||
msgid "Leave Team"
|
msgid "Leave Team"
|
||||||
msgstr "Покинуть команду"
|
msgstr "Покинуть команду"
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:59
|
#: src/events/templates/events/manage_team.html:59
|
||||||
msgid "Open to automatching"
|
msgid "Open to automatching"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/manage_team.html:66
|
#: src/events/templates/events/manage_team.html:66
|
||||||
msgid "Close to automatching"
|
msgid "Close to automatching"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: events/templates/events/team.html:38
|
#: src/events/templates/events/team.html:38
|
||||||
msgid "It seems that this team has not solved any challenge yet..."
|
msgid "It seems that this team has not solved any challenge yet..."
|
||||||
msgstr "Кажется, что эта команда еще не решила ни одной задачи..."
|
msgstr "Кажется, что эта команда еще не решила ни одной задачи..."
|
||||||
|
|
||||||
#: home/templates/home/home.html:21
|
#: src/home/templates/home/home.html:21
|
||||||
msgid "Weekly Top 5"
|
msgid "Weekly Top 5"
|
||||||
msgstr "Еженедельная пятерка лучших"
|
msgstr "Еженедельная пятерка лучших"
|
||||||
|
|
||||||
#: home/templates/home/home.html:48
|
#: src/home/templates/home/home.html:48
|
||||||
msgid "No article available."
|
msgid "No article available."
|
||||||
msgstr "Нет доступных статей."
|
msgstr "Нет доступных статей."
|
||||||
|
|
||||||
#: home/templates/home/home.html:53
|
#: src/home/templates/home/home.html:53
|
||||||
msgid "Latest challenges added"
|
msgid "Latest challenges added"
|
||||||
msgstr "Последние добавленные челленджы"
|
msgstr "Недавно добавленные челленджы"
|
||||||
|
|
||||||
#: home/templates/home/home.html:58
|
#: src/home/templates/home/home.html:58
|
||||||
msgid "points"
|
msgid "points"
|
||||||
msgstr "очки"
|
msgstr "очки"
|
||||||
|
|
||||||
#: home/templates/home/home.html:62
|
#: src/home/templates/home/home.html:62
|
||||||
msgid "No ctf available."
|
msgid "No ctf available."
|
||||||
msgstr "Нет доступных CTF."
|
msgstr "Нет доступных CTF."
|
||||||
|
|
||||||
#: home/templates/home/home.html:66
|
#: src/home/templates/home/home.html:66
|
||||||
msgid "Latest Flags"
|
msgid "Latest Flags"
|
||||||
msgstr "Последние флаги"
|
msgstr "Недавно кто решил челлендж"
|
||||||
|
|
||||||
#: home/templates/home/home.html:80
|
#: src/home/templates/home/home.html:80
|
||||||
msgid "Flags"
|
msgid "Flags"
|
||||||
msgstr "Флаги"
|
msgstr "Флаги"
|
||||||
|
|
||||||
#: home/templates/home/home.html:86
|
#: src/home/templates/home/home.html:86
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "Пользователи"
|
msgstr "Пользователи"
|
||||||
|
|
||||||
#: project/settings.py:116
|
#: src/project/settings.py:116
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr "Английский"
|
msgstr "Английский"
|
||||||
|
|
||||||
#: project/settings.py:117
|
#: src/project/settings.py:117
|
||||||
msgid "German"
|
msgid "German"
|
||||||
msgstr "Немецкий"
|
msgstr "Немецкий"
|
||||||
|
|
||||||
#: project/settings.py:118
|
#: src/project/settings.py:118
|
||||||
msgid "French"
|
msgid "French"
|
||||||
msgstr "Французский"
|
msgstr "Французский"
|
||||||
|
|
||||||
#: project/settings.py:119
|
#: src/project/settings.py:119
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
msgstr "Русский"
|
msgstr "Русский"
|
||||||
|
|
||||||
#: project/settings.py:120
|
#: src/project/settings.py:120
|
||||||
msgid "Japanese"
|
msgid "Japanese"
|
||||||
msgstr "Японский"
|
msgstr "Японский"
|
||||||
|
|
||||||
#: project/settings.py:121
|
#: src/project/settings.py:121
|
||||||
msgid "Spanish"
|
msgid "Spanish"
|
||||||
msgstr "Испанский"
|
msgstr "Испанский"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:38
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:15
|
||||||
|
msgid "Campus"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:46
|
||||||
msgid "First"
|
msgid "First"
|
||||||
msgstr "Первый"
|
msgstr "Первый"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:39
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:47
|
||||||
msgid "Previous"
|
msgid "Previous"
|
||||||
msgstr "Предыдущий"
|
msgstr "Предыдущий"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:43
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:51
|
||||||
msgid "Page "
|
msgid "Page "
|
||||||
msgstr "Страница "
|
msgstr "Страница "
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:47
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:55
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Следующий"
|
msgstr "Следующий"
|
||||||
|
|
||||||
#: scoreboard/templates/scoreboard/scoreboard.html:48
|
#: src/scoreboard/templates/scoreboard/scoreboard.html:56
|
||||||
msgid "Last"
|
msgid "Last"
|
||||||
msgstr "Последний"
|
msgstr "Последний"
|
||||||
|
|
||||||
#: templates/base.html:59
|
#: src/templates/base.html:62
|
||||||
msgid "Scoreboard"
|
msgid "Scoreboard"
|
||||||
msgstr "Табло"
|
msgstr "Таблица результатов"
|
||||||
|
|
||||||
#: templates/base.html:64
|
#: src/templates/base.html:83
|
||||||
msgid "Resources"
|
#, fuzzy
|
||||||
msgstr "Ресурсы"
|
#| msgid "Become a Patron!"
|
||||||
|
msgid "Become a member"
|
||||||
|
msgstr "Стать спонсором!"
|
||||||
|
|
||||||
#: templates/base.html:93
|
#: src/templates/base.html:93
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Выйти"
|
msgstr "Выйти"
|
||||||
|
|
||||||
#: templates/base.html:100
|
#: src/templates/base.html:100
|
||||||
msgid "Sign Up"
|
msgid "Sign Up"
|
||||||
msgstr "Зарегистрироваться"
|
msgstr "Зарегистрироваться"
|
||||||
|
|
||||||
#: templates/base.html:135
|
#: src/templates/registration/password_reset_complete.html:11
|
||||||
msgid "Become a Patron!"
|
|
||||||
msgstr "Стать спонсором!"
|
|
||||||
|
|
||||||
#: templates/registration/password_reset_complete.html:11
|
|
||||||
msgid "Your new password has been set."
|
msgid "Your new password has been set."
|
||||||
msgstr "Твой новый пароль был установлен."
|
msgstr "Твой новый пароль был установлен."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:20
|
#: src/templates/registration/password_reset_confirm.html:20
|
||||||
msgid "Your password can’t be too similar to your other personal information."
|
msgid "Your password can’t be too similar to your other personal information."
|
||||||
msgstr "Твой пароль не должен быть слишком похож на другие твои личные данные."
|
msgstr "Твой пароль не должен быть слишком похож на другие твои личные данные."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:21
|
#: src/templates/registration/password_reset_confirm.html:21
|
||||||
msgid "Your password must contain at least 8 characters."
|
msgid "Your password must contain at least 8 characters."
|
||||||
msgstr "Твой пароль должен содержать не менее 8 символов."
|
msgstr "Твой пароль должен содержать не менее 8 символов."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:22
|
#: src/templates/registration/password_reset_confirm.html:22
|
||||||
msgid "Your password can’t be a commonly used password."
|
msgid "Your password can’t be a commonly used password."
|
||||||
msgstr "Твой пароль не может быть одним из распространенных паролей."
|
msgstr "Твой пароль не может быть одним из распространенных паролей."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:23
|
#: src/templates/registration/password_reset_confirm.html:23
|
||||||
msgid "Your password can’t be entirely numeric."
|
msgid "Your password can’t be entirely numeric."
|
||||||
msgstr "Твой пароль не может состоять только из цифр."
|
msgstr "Твой пароль не может состоять только из цифр."
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:26
|
#: src/templates/registration/password_reset_confirm.html:26
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "Подтвердить"
|
msgstr "Подтвердить"
|
||||||
|
|
||||||
#: templates/registration/password_reset_confirm.html:28
|
#: src/templates/registration/password_reset_confirm.html:28
|
||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr "Отправить"
|
msgstr "Отправить"
|
||||||
|
|
||||||
#: templates/registration/password_reset_done.html:11
|
#: src/templates/registration/password_reset_done.html:11
|
||||||
msgid ""
|
msgid ""
|
||||||
"We've emailed you instructions for setting your password. You should receive "
|
"We've emailed you instructions for setting your password. You should receive "
|
||||||
"the email shortly!"
|
"the email shortly!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Мы отправили тебе по электронной почте инструкции по установке пароля."
|
"Мы отправили тебе по электронной почте инструкции по установке пароля.Письмо "
|
||||||
"Письмо будет получено совсем скоро!"
|
"будет получено совсем скоро!"
|
||||||
|
|
||||||
#: templates/registration/password_reset_form.html:16
|
#: src/templates/registration/password_reset_form.html:16
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
msgstr "Сбросить"
|
msgstr "Сбросить"
|
||||||
|
|
||||||
|
#~ msgid "Status: Member"
|
||||||
|
#~ msgstr "Статус: Участник"
|
||||||
|
|
||||||
|
#~ msgid "Resources"
|
||||||
|
#~ msgstr "Ресурсы"
|
||||||
|
|
|
@ -39,6 +39,7 @@ INSTALLED_APPS = [
|
||||||
'resources.apps.ResourcesConfig',
|
'resources.apps.ResourcesConfig',
|
||||||
'django.contrib.sites',
|
'django.contrib.sites',
|
||||||
'api.apps.ApiConfig',
|
'api.apps.ApiConfig',
|
||||||
|
'django.contrib.sitemaps',
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
|
@ -151,7 +152,10 @@ TEMPLATES[0]['OPTIONS']['context_processors'].append("ctfs.context_processors.ca
|
||||||
MEDIA_URL = '/media/'
|
MEDIA_URL = '/media/'
|
||||||
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
|
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
|
||||||
LOGIN_URL = '/accounts/signin/'
|
LOGIN_URL = '/accounts/signin/'
|
||||||
EMAIL_BACKEND = 'django_mailjet.backends.MailjetBackend'
|
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||||
EMAIL_HOST = 'in-v3.mailjet.com'
|
EMAIL_HOST = 'mail.42ctf.local'
|
||||||
EMAIL_PORT = 587
|
EMAIL_PORT = 587
|
||||||
DEFAULT_FROM_EMAIL = '42ctf <no-reply@42ctf.org>'
|
EMAIL_USE_TLS = True
|
||||||
|
EMAIL_HOST_USER = os.getenv("EMAIL_USER")
|
||||||
|
EMAIL_HOST_PASSWORD = os.getenv("EMAIL_PASSWORD")
|
||||||
|
DEFAULT_FROM_EMAIL = '42CTF <no-reply@42ctf.org>'
|
||||||
|
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
|
"POT-Creation-Date: 2022-08-16 19:28+0200\n"
|
||||||
"PO-Revision-Date: 2022-02-10 19:27+0100\n"
|
"PO-Revision-Date: 2022-02-10 19:27+0100\n"
|
||||||
"Last-Translator: Clément Hamada <clementhamada@pm.me>\n"
|
"Last-Translator: Clément Hamada <clementhamada@pm.me>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -17,15 +17,15 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:7
|
#: src/resources/templates/resources/about.html:11
|
||||||
msgid "What is 42CTF ?"
|
msgid "What is 42CTF ?"
|
||||||
msgstr "Was ist 42CTF?"
|
msgstr "Was ist 42CTF?"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:10
|
#: src/resources/templates/resources/about.html:14
|
||||||
msgid "A short introduction to CTF"
|
msgid "A short introduction to CTF"
|
||||||
msgstr "Eine kurze Einführung zu CTF"
|
msgstr "Eine kurze Einführung zu CTF"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:11
|
#: src/resources/templates/resources/about.html:15
|
||||||
msgid ""
|
msgid ""
|
||||||
"CTF stands for Capture The Flag. It is a cybersecurity competition, where "
|
"CTF stands for Capture The Flag. It is a cybersecurity competition, where "
|
||||||
"participants have to solve challenges of various categories to gain points "
|
"participants have to solve challenges of various categories to gain points "
|
||||||
|
@ -35,7 +35,7 @@ msgstr ""
|
||||||
"indem Teilnehmer Herausforderungen verschiedener Kategorien lösen müssen um "
|
"indem Teilnehmer Herausforderungen verschiedener Kategorien lösen müssen um "
|
||||||
"die meisten Punkte zu verdienen."
|
"die meisten Punkte zu verdienen."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:12
|
#: src/resources/templates/resources/about.html:16
|
||||||
msgid ""
|
msgid ""
|
||||||
"The challenges require participants to find sort of passwords called \"flags"
|
"The challenges require participants to find sort of passwords called \"flags"
|
||||||
"\" and to submit them on the platform."
|
"\" and to submit them on the platform."
|
||||||
|
@ -43,32 +43,32 @@ msgstr ""
|
||||||
"Die Herausforderungen bestehen darin eine Art Passwort zu finden: sogenannte "
|
"Die Herausforderungen bestehen darin eine Art Passwort zu finden: sogenannte "
|
||||||
"\\"
|
"\\"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:15
|
#: src/resources/templates/resources/about.html:19
|
||||||
msgid "Functionment of 42CTF"
|
msgid "Functionment of 42CTF"
|
||||||
msgstr "Funktionsweise von 42CTF"
|
msgstr "Funktionsweise von 42CTF"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:16
|
#: src/resources/templates/resources/about.html:20
|
||||||
msgid "42CTF is what we call a permanent CTF."
|
msgid "42CTF is what we call a permanent CTF."
|
||||||
msgstr "42CTF ist ein sogenanntes Dauer-CTF."
|
msgstr "42CTF ist ein sogenanntes Dauer-CTF."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "Except from the"
|
msgid "Except from the"
|
||||||
msgstr "Außer bei"
|
msgstr "Außer bei"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "events"
|
msgid "events"
|
||||||
msgstr "Ereignissen"
|
msgstr "Ereignissen"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "challenges are available on the platform without time limitations."
|
msgid "challenges are available on the platform without time limitations."
|
||||||
msgstr "sind Herausforderungen auf der Plattform unbegrenzt zugänglich."
|
msgstr "sind Herausforderungen auf der Plattform unbegrenzt zugänglich."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:18
|
#: src/resources/templates/resources/about.html:22
|
||||||
msgid "The registration on 42CTF is open to everyone, 42 students or not."
|
msgid "The registration on 42CTF is open to everyone, 42 students or not."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Die Registrierung bei 42CTF ist für jeden offen, ob 42-Student oder nicht."
|
"Die Registrierung bei 42CTF ist für jeden offen, ob 42-Student oder nicht."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:19
|
#: src/resources/templates/resources/about.html:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Events may or may not be open. If you would like to organize an event on "
|
"Events may or may not be open. If you would like to organize an event on "
|
||||||
"42CTF, feel free to contact us."
|
"42CTF, feel free to contact us."
|
||||||
|
@ -76,26 +76,26 @@ msgstr ""
|
||||||
"Ereignisse können öffentlich oder privat sein. Wenn Sie ein Ereignis bei "
|
"Ereignisse können öffentlich oder privat sein. Wenn Sie ein Ereignis bei "
|
||||||
"42CTF organisieren möchten, kontaktieren Sie uns."
|
"42CTF organisieren möchten, kontaktieren Sie uns."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:22
|
#: src/resources/templates/resources/about.html:26
|
||||||
msgid "42CTF Team"
|
msgid "42CTF Team"
|
||||||
msgstr "das 42CTF Team"
|
msgstr "das 42CTF Team"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:23
|
#: src/resources/templates/resources/about.html:27
|
||||||
msgid "42CTF is managed by 42 students."
|
msgid "42CTF is managed by 42 students."
|
||||||
msgstr "42CTF wird von 42-Studenten verwaltet."
|
msgstr "42CTF wird von 42-Studenten verwaltet."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:24
|
#: src/resources/templates/resources/about.html:28
|
||||||
msgid "You can meet the team on"
|
msgid "You can meet the team on"
|
||||||
msgstr "Treffen können Sie das Team auf"
|
msgstr "Treffen können Sie das Team auf"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:25
|
#: src/resources/templates/resources/about.html:29
|
||||||
msgid ""
|
msgid ""
|
||||||
"Challenges are created by various contributors, not necessarily 42 students."
|
"Challenges are created by various contributors, not necessarily 42 students."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Herausforderungen werden von verschiedenen Mitwirkende beigetragen, nicht "
|
"Herausforderungen werden von verschiedenen Mitwirkende beigetragen, nicht "
|
||||||
"zwingend 42-Studenten."
|
"zwingend 42-Studenten."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:26
|
#: src/resources/templates/resources/about.html:30
|
||||||
msgid ""
|
msgid ""
|
||||||
"Anyone is welcome to submit their own challenges, either on the permanent "
|
"Anyone is welcome to submit their own challenges, either on the permanent "
|
||||||
"CTF or for a specific event."
|
"CTF or for a specific event."
|
||||||
|
@ -103,23 +103,90 @@ msgstr ""
|
||||||
"Beiträge sind von jedem willkommen, entweder auf dem Dauer-CTF, oder für ein "
|
"Beiträge sind von jedem willkommen, entweder auf dem Dauer-CTF, oder für ein "
|
||||||
"bestimmtes Ereignis."
|
"bestimmtes Ereignis."
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:7
|
#: src/resources/templates/resources/becomeMember.html:8
|
||||||
|
msgid "Become a 42CTF member"
|
||||||
|
msgstr "42CTF-Mitglied werden"
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:13
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Become a 42CTF member"
|
||||||
|
msgid "Why should I become a 42CTF member ?"
|
||||||
|
msgstr "42CTF-Mitglied werden"
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:18
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" 42CTF is a non-profit organization with a legal status under "
|
||||||
|
"the french law (Association loi 1901).<br>\n"
|
||||||
|
" Running a CTF platform costs money, and we are not currently "
|
||||||
|
"funded by anyone except you.<br>\n"
|
||||||
|
" You can become a 42CTF member if you want to support our "
|
||||||
|
"activity :)\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:27
|
||||||
|
msgid "I want to be a member !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:30
|
||||||
|
msgid ""
|
||||||
|
"You're welcome ! To become a member, all you need to do is to donate us 15 "
|
||||||
|
"euros and your membership will last for a year."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:36
|
||||||
|
msgid "If you want to use another payment method, please contact us !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:43
|
||||||
|
msgid "What do I get ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:45
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" - A <span class='is-member'>different color</span> for your "
|
||||||
|
"pseudo in the scoreboard, to let everyone know you're a member.<br>\n"
|
||||||
|
" - The possibility to play past CTF, with challenges no longer "
|
||||||
|
"available, in the form of private events with the people of your choice."
|
||||||
|
"<br>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:51
|
||||||
|
msgid "More advantages may come later, and you can submit us your ideas."
|
||||||
|
msgstr ""
|
||||||
|
"Weitere Vorteile können später folgen, und Sie können uns Ihre Ideen "
|
||||||
|
"mitteilen."
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:56
|
||||||
|
msgid "How do I claim it ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:59
|
||||||
|
msgid ""
|
||||||
|
"Once you've donated the 15 euros, you just need to contact us on discord or "
|
||||||
|
"by mail:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/create_challenge.html:7
|
||||||
msgid "Create new challenges"
|
msgid "Create new challenges"
|
||||||
msgstr "Erstelle neue Herausforderungen"
|
msgstr "Erstelle neue Herausforderungen"
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:10
|
#: src/resources/templates/resources/create_challenge.html:10
|
||||||
msgid "If you want to create new challenges for 42CTF, send us a message on "
|
msgid "If you want to create new challenges for 42CTF, send us a message on "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Falls Sie Herausforderungen für 42CTF erstellen möchten, schicken Sie uns "
|
"Falls Sie Herausforderungen für 42CTF erstellen möchten, schicken Sie uns "
|
||||||
"eine Nachricht auf "
|
"eine Nachricht auf "
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:11
|
#: src/resources/templates/resources/create_challenge.html:11
|
||||||
msgid "If your challenge is offline, then you don't have to ask us in advance."
|
msgid "If your challenge is offline, then you don't have to ask us in advance."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Falls Ihre Herausforderung offline ist, müssen Sie uns nicht im voraus "
|
"Falls Ihre Herausforderung offline ist, müssen Sie uns nicht im voraus "
|
||||||
"fragen."
|
"fragen."
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:12
|
#: src/resources/templates/resources/create_challenge.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"If your challenge is online (for example web or pwn), then you should give "
|
"If your challenge is online (for example web or pwn), then you should give "
|
||||||
"us a short description of what you want to do."
|
"us a short description of what you want to do."
|
||||||
|
@ -127,105 +194,22 @@ msgstr ""
|
||||||
"Falls Ihre Herausforderung online ist (z.B. web oder pwn), dann sollten Sie "
|
"Falls Ihre Herausforderung online ist (z.B. web oder pwn), dann sollten Sie "
|
||||||
"uns eine kurze Beschreibung Ihres Vorhabens geben."
|
"uns eine kurze Beschreibung Ihres Vorhabens geben."
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:13
|
#: src/resources/templates/resources/create_challenge.html:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"We may be able to help you or to give you resources such as dockerfiles."
|
"We may be able to help you or to give you resources such as dockerfiles."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wir können Ihnen helfen oder Ressourcen sowie Dockerfiles zur Verfügung "
|
"Wir können Ihnen helfen oder Ressourcen sowie Dockerfiles zur Verfügung "
|
||||||
"stellen."
|
"stellen."
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:14
|
#: src/resources/templates/resources/create_challenge.html:14
|
||||||
msgid "We plan to make those resources publicly available in a near future."
|
msgid "We plan to make those resources publicly available in a near future."
|
||||||
msgstr "Wir haben vor diese Ressourcen in naher Zukunft zu veröffentlichen."
|
msgstr "Wir haben vor diese Ressourcen in naher Zukunft zu veröffentlichen."
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:7
|
#: src/resources/templates/resources/donate.html:7
|
||||||
msgid "Donate"
|
msgid "Donate"
|
||||||
msgstr "Spenden"
|
msgstr "Spenden"
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:10
|
#: src/resources/templates/resources/donate.html:14
|
||||||
msgid "Become a 42CTF member"
|
|
||||||
msgstr "42CTF-Mitglied werden"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:11
|
|
||||||
msgid ""
|
|
||||||
"42CTF is a non-profit organization with a legal status under the french law "
|
|
||||||
"(Association loi 1901)."
|
|
||||||
msgstr ""
|
|
||||||
"42CTF ist eine gemeinnützige Organisation mit einem Rechtsstatus nach "
|
|
||||||
"französischem Recht (Association loi 1901)."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:12
|
|
||||||
msgid "You can support us by becoming a member and paying a fee of 15 euros."
|
|
||||||
msgstr ""
|
|
||||||
"Sie können uns unterstützen indem Sie Mitglied werden und 15 Euro zahlen."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:13
|
|
||||||
msgid "Membership is then granted for 1 year."
|
|
||||||
msgstr "Die Mitgliedschaft wird dann ein Jahr lang gewährt."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:15
|
|
||||||
msgid "When you become a member, you gain the following advantages:"
|
|
||||||
msgstr "Wenn Sie Mitglied werden, bekommen Sie folgende Vorteile:"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:16
|
|
||||||
msgid ""
|
|
||||||
"A different color for your pseudo in the scoreboard, to let everyone know "
|
|
||||||
"you're a member."
|
|
||||||
msgstr ""
|
|
||||||
"Eine verschiedene Farbe für Ihren Nutzernamen im Punktestand, sodass jeder "
|
|
||||||
"weiß dass Sie ein Mitglied sind."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:17
|
|
||||||
msgid ""
|
|
||||||
"The possibility to play again past CTF, with challenges no longer available, "
|
|
||||||
"in the form of private events with the people of your choice."
|
|
||||||
msgstr ""
|
|
||||||
"Die Möglichkeit einen vergangenen CTF zu wiederholen, mit Herausforderungen "
|
|
||||||
"die nicht mehr verfügbar sind, in Form von privaten Ereignissen mit Menschen "
|
|
||||||
"Ihrer Wahl."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:18
|
|
||||||
msgid ""
|
|
||||||
"Ex: you played Welcome CTF 2021, and want to play it again with your friends "
|
|
||||||
"during one weekend."
|
|
||||||
msgstr ""
|
|
||||||
"Z.B.: Sie haben am Welcome CTF 2021 teilgenommen, und wollen es mit Ihren "
|
|
||||||
"Freunden an einem Wochenende wiederholen."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:19
|
|
||||||
msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
|
|
||||||
msgstr ""
|
|
||||||
"Oder Sie haben nicht am Welcome CTF 2021 teilgenommen weil Sie nicht dazu "
|
|
||||||
"berechtigt waren."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:22
|
|
||||||
msgid "More advantages may come later, and you can submit us your ideas."
|
|
||||||
msgstr ""
|
|
||||||
"Weitere Vorteile können später folgen, und Sie können uns Ihre Ideen "
|
|
||||||
"mitteilen."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:23
|
|
||||||
msgid ""
|
|
||||||
"However, we will not organize limited time CTF for members only, as this "
|
|
||||||
"will be equivalent to organize paid events, and we want 42CTF to remain FREE "
|
|
||||||
"for all."
|
|
||||||
msgstr ""
|
|
||||||
"Trotzdem werden wir keine zeitlich begrenzte CTFs nur für Mitglieder "
|
|
||||||
"organisieren, da diese Zahlungspflichtige Ereignissen gleichen, und wir "
|
|
||||||
"42CTF KOSTENLOS für alle zugänglich behalten wollen."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:26
|
|
||||||
msgid "Donate to 42CTF"
|
|
||||||
msgstr "An 42CTF spenden"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:27
|
|
||||||
msgid ""
|
|
||||||
"You can donate to 42CTF or pay your membership with the following means:"
|
|
||||||
msgstr ""
|
|
||||||
"Folgende Zahlungsmethoden sind für eine Spende an 42CTF oder den Kauf einer "
|
|
||||||
"Mitgliedshaft verfügbar:"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:44
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you would like us to add another payment method or if you want to pay in "
|
"If you would like us to add another payment method or if you want to pay in "
|
||||||
"cash, send us a message !"
|
"cash, send us a message !"
|
||||||
|
@ -233,43 +217,31 @@ msgstr ""
|
||||||
"Falls Sie möchten, dass wir eine andere Zahlungsmethode hinzufügen oder "
|
"Falls Sie möchten, dass wir eine andere Zahlungsmethode hinzufügen oder "
|
||||||
"lieber Bar zahlen möchten, schicken Sie uns eine Nachricht!"
|
"lieber Bar zahlen möchten, schicken Sie uns eine Nachricht!"
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:46
|
#: src/resources/templates/resources/donate.html:18
|
||||||
msgid ""
|
|
||||||
"If you're paying for your membership, don't forget to send us your first and "
|
|
||||||
"last name, as well as your 42CTF pseudo."
|
|
||||||
msgstr ""
|
|
||||||
"Falls Sie für eine Mitgliedschaft zahlen, vergessen Sie nicht uns Ihren vor "
|
|
||||||
"und Nachnamen, sowie Ihren 42CTF Nutzernamen mitzuteilen."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:47
|
|
||||||
msgid ""
|
|
||||||
"We will only use thoe data to keep track of our members and grant you "
|
|
||||||
"advantages, and we will never communicate them to any third party."
|
|
||||||
msgstr ""
|
|
||||||
"Wir verwenden diese Daten nur um den Überblick über unsere Mitglieder zu "
|
|
||||||
"Behalten und ihnen Vorteile zu bieten, und werden Sie niemals an einem "
|
|
||||||
"Dritten übermitteln."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:50
|
|
||||||
msgid "What will we do with your money ?"
|
msgid "What will we do with your money ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:51
|
#: src/resources/templates/resources/donate.html:21
|
||||||
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Hosting a website - and especially a CTF platform - costs money:\n"
|
"Hosting a website - and especially a CTF platform - costs money: more "
|
||||||
" more precisely, it costs us <b>50 euros per month</b>.<br>\n"
|
"precisely, it costs us <b>50 euros per month</b>.\n"
|
||||||
" If we had <b>40 members</b> each year, it would be enough to "
|
" <br><br>\n"
|
||||||
"cover the hosting of 42CTF.<br>\n"
|
" If we had <b>40 members</b> each year, it would be "
|
||||||
" With the additional money, we could for example offer prizes "
|
"enough to cover the hosting of 42CTF.\n"
|
||||||
"for limited-time events, but we will update this page as soon as we reach "
|
" <br>\n"
|
||||||
"this threshold :)"
|
" We currently have %(nb_members)s members.\n"
|
||||||
|
" <br><br>\n"
|
||||||
|
" With the additional money, we could for example offer "
|
||||||
|
"prizes for limited-time events, but we will update this page as soon as we "
|
||||||
|
"reach this threshold :)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/edit.html:7
|
#: src/resources/templates/resources/edit.html:7
|
||||||
msgid "Edit this page"
|
msgid "Edit this page"
|
||||||
msgstr "Diese Seite bearbeiten"
|
msgstr "Diese Seite bearbeiten"
|
||||||
|
|
||||||
#: resources/templates/resources/edit.html:12
|
#: src/resources/templates/resources/edit.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"More information coming soon, but as you can guess it involves making a pull "
|
"More information coming soon, but as you can guess it involves making a pull "
|
||||||
"request to your favorite"
|
"request to your favorite"
|
||||||
|
@ -277,31 +249,31 @@ msgstr ""
|
||||||
"Weitere Information wird folgen, doch sowie Sie es erraten können benötigt "
|
"Weitere Information wird folgen, doch sowie Sie es erraten können benötigt "
|
||||||
"es eine Pull Request auf Ihrer lieblings"
|
"es eine Pull Request auf Ihrer lieblings"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:7
|
#: src/resources/templates/resources/tools.html:7
|
||||||
msgid "Recommended Tools"
|
msgid "Recommended Tools"
|
||||||
msgstr "Empfohlene Werkzeuge"
|
msgstr "Empfohlene Werkzeuge"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:10
|
#: src/resources/templates/resources/tools.html:10
|
||||||
msgid "To get you started, we built a VM that you can simply import in"
|
msgid "To get you started, we built a VM that you can simply import in"
|
||||||
msgstr "Zum beginnen haben wir eine VM erstellt die Sie einfach auf"
|
msgstr "Zum beginnen haben wir eine VM erstellt die Sie einfach auf"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:10
|
#: src/resources/templates/resources/tools.html:10
|
||||||
msgid "with a bunch of useful tools."
|
msgid "with a bunch of useful tools."
|
||||||
msgstr "importieren können, mit vielen nützlichen Werkzeugen."
|
msgstr "importieren können, mit vielen nützlichen Werkzeugen."
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:11
|
#: src/resources/templates/resources/tools.html:11
|
||||||
msgid "You can dowload this OVA"
|
msgid "You can dowload this OVA"
|
||||||
msgstr "Herunterladen können Sie die OVA"
|
msgstr "Herunterladen können Sie die OVA"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:11
|
#: src/resources/templates/resources/tools.html:11
|
||||||
msgid "here"
|
msgid "here"
|
||||||
msgstr "Hier"
|
msgstr "Hier"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:13
|
#: src/resources/templates/resources/tools.html:13
|
||||||
msgid "Here are the tools installed on the VM:"
|
msgid "Here are the tools installed on the VM:"
|
||||||
msgstr "Folgende Werkzeuge sind auf der VM vorinstalliert:"
|
msgstr "Folgende Werkzeuge sind auf der VM vorinstalliert:"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:22
|
#: src/resources/templates/resources/tools.html:22
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you want to solve the challenges on your own machine, we recommend you to "
|
"If you want to solve the challenges on your own machine, we recommend you to "
|
||||||
"use a Linux operating system."
|
"use a Linux operating system."
|
||||||
|
@ -309,7 +281,7 @@ msgstr ""
|
||||||
"Falls Sie die Herausforderung auf Ihrer eigenen Maschine lösen möchten, "
|
"Falls Sie die Herausforderung auf Ihrer eigenen Maschine lösen möchten, "
|
||||||
"empfehlen wir Ihnen einen Linux Betriebssystem zu verwenden."
|
"empfehlen wir Ihnen einen Linux Betriebssystem zu verwenden."
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:23
|
#: src/resources/templates/resources/tools.html:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
|
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
|
||||||
"Windows."
|
"Windows."
|
||||||
|
@ -317,19 +289,19 @@ msgstr ""
|
||||||
"Die meisten Reverse-Engineering Herausforderungen sind ELF-Binärdateien und "
|
"Die meisten Reverse-Engineering Herausforderungen sind ELF-Binärdateien und "
|
||||||
"können auf macOS oder Windows nicht ausgeführt werden."
|
"können auf macOS oder Windows nicht ausgeführt werden."
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:25
|
#: src/resources/templates/resources/tools.html:25
|
||||||
msgid "Additionnaly, you will need the following languages interpreters:"
|
msgid "Additionnaly, you will need the following languages interpreters:"
|
||||||
msgstr "Zusätzlich, werden Sie folgende Skript-Interpreter benötigen:"
|
msgstr "Zusätzlich, werden Sie folgende Skript-Interpreter benötigen:"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:7
|
#: src/resources/templates/resources/translate.html:7
|
||||||
msgid "Translate 42CTF"
|
msgid "Translate 42CTF"
|
||||||
msgstr "42CTF Übersetzen"
|
msgstr "42CTF Übersetzen"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:10
|
#: src/resources/templates/resources/translate.html:10
|
||||||
msgid "42CTF source code is publicly available on this"
|
msgid "42CTF source code is publicly available on this"
|
||||||
msgstr "42CTF's Quellcode ist öffentlich zugänglich auf"
|
msgstr "42CTF's Quellcode ist öffentlich zugänglich auf"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:11
|
#: src/resources/templates/resources/translate.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Translation does not require any programming skill and is a good way to "
|
"Translation does not require any programming skill and is a good way to "
|
||||||
"contribute if you want to help us, by making the platform always more "
|
"contribute if you want to help us, by making the platform always more "
|
||||||
|
@ -339,28 +311,19 @@ msgstr ""
|
||||||
"Möglichkeit beizutragen wenn Sie uns helfen möchten, indem Sie diese "
|
"Möglichkeit beizutragen wenn Sie uns helfen möchten, indem Sie diese "
|
||||||
"Plattform immer zugänglicher machen."
|
"Plattform immer zugänglicher machen."
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:12
|
#: src/resources/templates/resources/translate.html:14
|
||||||
msgid "We have a"
|
msgid "We have a"
|
||||||
msgstr "Wir haben einen"
|
msgstr "Wir haben einen"
|
||||||
|
|
||||||
# FIXME: internalization -> internationalization
|
# FIXME: internalization -> internationalization
|
||||||
#: resources/templates/resources/translate.html:12
|
#: src/resources/templates/resources/translate.html:14
|
||||||
msgid ""
|
msgid ""
|
||||||
"describing how to translate pages with the Django internalization module."
|
"describing how to translate pages with the Django internalization module."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"indem beschrieben wird wie man mit dem Django Internationalisierungsmodul "
|
"indem beschrieben wird wie man mit dem Django Internationalisierungsmodul "
|
||||||
"Seiten übersetzt."
|
"Seiten übersetzt."
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:13
|
#: src/resources/templates/resources/translate.html:16
|
||||||
msgid ""
|
|
||||||
"We invite you to read it to know all the details, but it merely requires you "
|
|
||||||
"to edit text files, so you see, no programming skills required ;)"
|
|
||||||
msgstr ""
|
|
||||||
"Wir laden Sie dazu ein es zu lesen um alle Einzelheiten zur Kenntnis zu "
|
|
||||||
"nehmen, doch schrecken Sie sich nicht ab, es ist nichts mehr als "
|
|
||||||
"Textverarbeitung, keine Programmierkenntnisse sind benötigt ;)"
|
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:14
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will need to fork the git repository, make your changes, push them, and "
|
"You will need to fork the git repository, make your changes, push them, and "
|
||||||
"then open a pull request so that we can merge your contributions into our "
|
"then open a pull request so that we can merge your contributions into our "
|
||||||
|
@ -370,6 +333,92 @@ msgstr ""
|
||||||
"eine Pull Request eröffnen, sodass wir Ihre Beiträge in unsere Repository "
|
"eine Pull Request eröffnen, sodass wir Ihre Beiträge in unsere Repository "
|
||||||
"mergen können."
|
"mergen können."
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:15
|
#: src/resources/templates/resources/translate.html:17
|
||||||
msgid "Don't hesitate to reach for help on"
|
msgid "Don't hesitate to reach for help on"
|
||||||
msgstr "Zögern Sie nicht, nach Hilfe zu bitten auf"
|
msgstr "Zögern Sie nicht, nach Hilfe zu bitten auf"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "42CTF is a non-profit organization with a legal status under the french "
|
||||||
|
#~ "law (Association loi 1901)."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "42CTF ist eine gemeinnützige Organisation mit einem Rechtsstatus nach "
|
||||||
|
#~ "französischem Recht (Association loi 1901)."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "You can support us by becoming a member and paying a fee of 15 euros."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Sie können uns unterstützen indem Sie Mitglied werden und 15 Euro zahlen."
|
||||||
|
|
||||||
|
#~ msgid "Membership is then granted for 1 year."
|
||||||
|
#~ msgstr "Die Mitgliedschaft wird dann ein Jahr lang gewährt."
|
||||||
|
|
||||||
|
#~ msgid "When you become a member, you gain the following advantages:"
|
||||||
|
#~ msgstr "Wenn Sie Mitglied werden, bekommen Sie folgende Vorteile:"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "A different color for your pseudo in the scoreboard, to let everyone know "
|
||||||
|
#~ "you're a member."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Eine verschiedene Farbe für Ihren Nutzernamen im Punktestand, sodass "
|
||||||
|
#~ "jeder weiß dass Sie ein Mitglied sind."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The possibility to play again past CTF, with challenges no longer "
|
||||||
|
#~ "available, in the form of private events with the people of your choice."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Die Möglichkeit einen vergangenen CTF zu wiederholen, mit "
|
||||||
|
#~ "Herausforderungen die nicht mehr verfügbar sind, in Form von privaten "
|
||||||
|
#~ "Ereignissen mit Menschen Ihrer Wahl."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Ex: you played Welcome CTF 2021, and want to play it again with your "
|
||||||
|
#~ "friends during one weekend."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Z.B.: Sie haben am Welcome CTF 2021 teilgenommen, und wollen es mit Ihren "
|
||||||
|
#~ "Freunden an einem Wochenende wiederholen."
|
||||||
|
|
||||||
|
#~ msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Oder Sie haben nicht am Welcome CTF 2021 teilgenommen weil Sie nicht dazu "
|
||||||
|
#~ "berechtigt waren."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "However, we will not organize limited time CTF for members only, as this "
|
||||||
|
#~ "will be equivalent to organize paid events, and we want 42CTF to remain "
|
||||||
|
#~ "FREE for all."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Trotzdem werden wir keine zeitlich begrenzte CTFs nur für Mitglieder "
|
||||||
|
#~ "organisieren, da diese Zahlungspflichtige Ereignissen gleichen, und wir "
|
||||||
|
#~ "42CTF KOSTENLOS für alle zugänglich behalten wollen."
|
||||||
|
|
||||||
|
#~ msgid "Donate to 42CTF"
|
||||||
|
#~ msgstr "An 42CTF spenden"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "You can donate to 42CTF or pay your membership with the following means:"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Folgende Zahlungsmethoden sind für eine Spende an 42CTF oder den Kauf "
|
||||||
|
#~ "einer Mitgliedshaft verfügbar:"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "If you're paying for your membership, don't forget to send us your first "
|
||||||
|
#~ "and last name, as well as your 42CTF pseudo."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Falls Sie für eine Mitgliedschaft zahlen, vergessen Sie nicht uns Ihren "
|
||||||
|
#~ "vor und Nachnamen, sowie Ihren 42CTF Nutzernamen mitzuteilen."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "We will only use thoe data to keep track of our members and grant you "
|
||||||
|
#~ "advantages, and we will never communicate them to any third party."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Wir verwenden diese Daten nur um den Überblick über unsere Mitglieder zu "
|
||||||
|
#~ "Behalten und ihnen Vorteile zu bieten, und werden Sie niemals an einem "
|
||||||
|
#~ "Dritten übermitteln."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "We invite you to read it to know all the details, but it merely requires "
|
||||||
|
#~ "you to edit text files, so you see, no programming skills required ;)"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Wir laden Sie dazu ein es zu lesen um alle Einzelheiten zur Kenntnis zu "
|
||||||
|
#~ "nehmen, doch schrecken Sie sich nicht ab, es ist nichts mehr als "
|
||||||
|
#~ "Textverarbeitung, keine Programmierkenntnisse sind benötigt ;)"
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
|
"POT-Creation-Date: 2022-08-16 19:28+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -18,295 +18,281 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:7
|
#: src/resources/templates/resources/about.html:11
|
||||||
msgid "What is 42CTF ?"
|
msgid "What is 42CTF ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:10
|
#: src/resources/templates/resources/about.html:14
|
||||||
msgid "A short introduction to CTF"
|
msgid "A short introduction to CTF"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:11
|
#: src/resources/templates/resources/about.html:15
|
||||||
msgid ""
|
msgid ""
|
||||||
"CTF stands for Capture The Flag. It is a cybersecurity competition, where "
|
"CTF stands for Capture The Flag. It is a cybersecurity competition, where "
|
||||||
"participants have to solve challenges of various categories to gain points "
|
"participants have to solve challenges of various categories to gain points "
|
||||||
"and progress on the scoreboard."
|
"and progress on the scoreboard."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:12
|
#: src/resources/templates/resources/about.html:16
|
||||||
msgid ""
|
msgid ""
|
||||||
"The challenges require participants to find sort of passwords called \"flags"
|
"The challenges require participants to find sort of passwords called \"flags"
|
||||||
"\" and to submit them on the platform."
|
"\" and to submit them on the platform."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:15
|
#: src/resources/templates/resources/about.html:19
|
||||||
msgid "Functionment of 42CTF"
|
msgid "Functionment of 42CTF"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:16
|
#: src/resources/templates/resources/about.html:20
|
||||||
msgid "42CTF is what we call a permanent CTF."
|
msgid "42CTF is what we call a permanent CTF."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "Except from the"
|
msgid "Except from the"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "events"
|
msgid "events"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "challenges are available on the platform without time limitations."
|
msgid "challenges are available on the platform without time limitations."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:18
|
#: src/resources/templates/resources/about.html:22
|
||||||
msgid "The registration on 42CTF is open to everyone, 42 students or not."
|
msgid "The registration on 42CTF is open to everyone, 42 students or not."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:19
|
#: src/resources/templates/resources/about.html:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Events may or may not be open. If you would like to organize an event on "
|
"Events may or may not be open. If you would like to organize an event on "
|
||||||
"42CTF, feel free to contact us."
|
"42CTF, feel free to contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:22
|
#: src/resources/templates/resources/about.html:26
|
||||||
msgid "42CTF Team"
|
msgid "42CTF Team"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:23
|
#: src/resources/templates/resources/about.html:27
|
||||||
msgid "42CTF is managed by 42 students."
|
msgid "42CTF is managed by 42 students."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:24
|
#: src/resources/templates/resources/about.html:28
|
||||||
msgid "You can meet the team on"
|
msgid "You can meet the team on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:25
|
#: src/resources/templates/resources/about.html:29
|
||||||
msgid ""
|
msgid ""
|
||||||
"Challenges are created by various contributors, not necessarily 42 students."
|
"Challenges are created by various contributors, not necessarily 42 students."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:26
|
#: src/resources/templates/resources/about.html:30
|
||||||
msgid ""
|
msgid ""
|
||||||
"Anyone is welcome to submit their own challenges, either on the permanent "
|
"Anyone is welcome to submit their own challenges, either on the permanent "
|
||||||
"CTF or for a specific event."
|
"CTF or for a specific event."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:7
|
#: src/resources/templates/resources/becomeMember.html:8
|
||||||
|
msgid "Become a 42CTF member"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:13
|
||||||
|
msgid "Why should I become a 42CTF member ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:18
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" 42CTF is a non-profit organization with a legal status under "
|
||||||
|
"the french law (Association loi 1901).<br>\n"
|
||||||
|
" Running a CTF platform costs money, and we are not currently "
|
||||||
|
"funded by anyone except you.<br>\n"
|
||||||
|
" You can become a 42CTF member if you want to support our "
|
||||||
|
"activity :)\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:27
|
||||||
|
msgid "I want to be a member !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:30
|
||||||
|
msgid ""
|
||||||
|
"You're welcome ! To become a member, all you need to do is to donate us 15 "
|
||||||
|
"euros and your membership will last for a year."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:36
|
||||||
|
msgid "If you want to use another payment method, please contact us !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:43
|
||||||
|
msgid "What do I get ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:45
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" - A <span class='is-member'>different color</span> for your "
|
||||||
|
"pseudo in the scoreboard, to let everyone know you're a member.<br>\n"
|
||||||
|
" - The possibility to play past CTF, with challenges no longer "
|
||||||
|
"available, in the form of private events with the people of your choice."
|
||||||
|
"<br>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:51
|
||||||
|
msgid "More advantages may come later, and you can submit us your ideas."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:56
|
||||||
|
msgid "How do I claim it ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:59
|
||||||
|
msgid ""
|
||||||
|
"Once you've donated the 15 euros, you just need to contact us on discord or "
|
||||||
|
"by mail:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/create_challenge.html:7
|
||||||
msgid "Create new challenges"
|
msgid "Create new challenges"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:10
|
#: src/resources/templates/resources/create_challenge.html:10
|
||||||
msgid "If you want to create new challenges for 42CTF, send us a message on "
|
msgid "If you want to create new challenges for 42CTF, send us a message on "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:11
|
#: src/resources/templates/resources/create_challenge.html:11
|
||||||
msgid "If your challenge is offline, then you don't have to ask us in advance."
|
msgid "If your challenge is offline, then you don't have to ask us in advance."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:12
|
#: src/resources/templates/resources/create_challenge.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"If your challenge is online (for example web or pwn), then you should give "
|
"If your challenge is online (for example web or pwn), then you should give "
|
||||||
"us a short description of what you want to do."
|
"us a short description of what you want to do."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:13
|
#: src/resources/templates/resources/create_challenge.html:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"We may be able to help you or to give you resources such as dockerfiles."
|
"We may be able to help you or to give you resources such as dockerfiles."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:14
|
#: src/resources/templates/resources/create_challenge.html:14
|
||||||
msgid "We plan to make those resources publicly available in a near future."
|
msgid "We plan to make those resources publicly available in a near future."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:7
|
#: src/resources/templates/resources/donate.html:7
|
||||||
msgid "Donate"
|
msgid "Donate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:10
|
#: src/resources/templates/resources/donate.html:14
|
||||||
msgid "Become a 42CTF member"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:11
|
|
||||||
msgid ""
|
|
||||||
"42CTF is a non-profit organization with a legal status under the french law "
|
|
||||||
"(Association loi 1901)."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:12
|
|
||||||
msgid "You can support us by becoming a member and paying a fee of 15 euros."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:13
|
|
||||||
msgid "Membership is then granted for 1 year."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:15
|
|
||||||
msgid "When you become a member, you gain the following advantages:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:16
|
|
||||||
msgid ""
|
|
||||||
"A different color for your pseudo in the scoreboard, to let everyone know "
|
|
||||||
"you're a member."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:17
|
|
||||||
msgid ""
|
|
||||||
"The possibility to play again past CTF, with challenges no longer available, "
|
|
||||||
"in the form of private events with the people of your choice."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:18
|
|
||||||
msgid ""
|
|
||||||
"Ex: you played Welcome CTF 2021, and want to play it again with your friends "
|
|
||||||
"during one weekend."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:19
|
|
||||||
msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:22
|
|
||||||
msgid "More advantages may come later, and you can submit us your ideas."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:23
|
|
||||||
msgid ""
|
|
||||||
"However, we will not organize limited time CTF for members only, as this "
|
|
||||||
"will be equivalent to organize paid events, and we want 42CTF to remain FREE "
|
|
||||||
"for all."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:26
|
|
||||||
msgid "Donate to 42CTF"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:27
|
|
||||||
msgid ""
|
|
||||||
"You can donate to 42CTF or pay your membership with the following means:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:44
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you would like us to add another payment method or if you want to pay in "
|
"If you would like us to add another payment method or if you want to pay in "
|
||||||
"cash, send us a message !"
|
"cash, send us a message !"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:46
|
#: src/resources/templates/resources/donate.html:18
|
||||||
msgid ""
|
|
||||||
"If you're paying for your membership, don't forget to send us your first and "
|
|
||||||
"last name, as well as your 42CTF pseudo."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:47
|
|
||||||
msgid ""
|
|
||||||
"We will only use thoe data to keep track of our members and grant you "
|
|
||||||
"advantages, and we will never communicate them to any third party."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:50
|
|
||||||
msgid "What will we do with your money ?"
|
msgid "What will we do with your money ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:51
|
#: src/resources/templates/resources/donate.html:21
|
||||||
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Hosting a website - and especially a CTF platform - costs money:\n"
|
"Hosting a website - and especially a CTF platform - costs money: more "
|
||||||
" more precisely, it costs us <b>50 euros per month</b>.<br>\n"
|
"precisely, it costs us <b>50 euros per month</b>.\n"
|
||||||
" If we had <b>40 members</b> each year, it would be enough to "
|
" <br><br>\n"
|
||||||
"cover the hosting of 42CTF.<br>\n"
|
" If we had <b>40 members</b> each year, it would be "
|
||||||
" With the additional money, we could for example offer prizes "
|
"enough to cover the hosting of 42CTF.\n"
|
||||||
"for limited-time events, but we will update this page as soon as we reach "
|
" <br>\n"
|
||||||
"this threshold :)"
|
" We currently have %(nb_members)s members.\n"
|
||||||
|
" <br><br>\n"
|
||||||
|
" With the additional money, we could for example offer "
|
||||||
|
"prizes for limited-time events, but we will update this page as soon as we "
|
||||||
|
"reach this threshold :)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/edit.html:7
|
#: src/resources/templates/resources/edit.html:7
|
||||||
msgid "Edit this page"
|
msgid "Edit this page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/edit.html:12
|
#: src/resources/templates/resources/edit.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"More information coming soon, but as you can guess it involves making a pull "
|
"More information coming soon, but as you can guess it involves making a pull "
|
||||||
"request to your favorite"
|
"request to your favorite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:7
|
#: src/resources/templates/resources/tools.html:7
|
||||||
msgid "Recommended Tools"
|
msgid "Recommended Tools"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:10
|
#: src/resources/templates/resources/tools.html:10
|
||||||
msgid "To get you started, we built a VM that you can simply import in"
|
msgid "To get you started, we built a VM that you can simply import in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:10
|
#: src/resources/templates/resources/tools.html:10
|
||||||
msgid "with a bunch of useful tools."
|
msgid "with a bunch of useful tools."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:11
|
#: src/resources/templates/resources/tools.html:11
|
||||||
msgid "You can dowload this OVA"
|
msgid "You can dowload this OVA"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:11
|
#: src/resources/templates/resources/tools.html:11
|
||||||
msgid "here"
|
msgid "here"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:13
|
#: src/resources/templates/resources/tools.html:13
|
||||||
msgid "Here are the tools installed on the VM:"
|
msgid "Here are the tools installed on the VM:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:22
|
#: src/resources/templates/resources/tools.html:22
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you want to solve the challenges on your own machine, we recommend you to "
|
"If you want to solve the challenges on your own machine, we recommend you to "
|
||||||
"use a Linux operating system."
|
"use a Linux operating system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:23
|
#: src/resources/templates/resources/tools.html:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
|
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
|
||||||
"Windows."
|
"Windows."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:25
|
#: src/resources/templates/resources/tools.html:25
|
||||||
msgid "Additionnaly, you will need the following languages interpreters:"
|
msgid "Additionnaly, you will need the following languages interpreters:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:7
|
#: src/resources/templates/resources/translate.html:7
|
||||||
msgid "Translate 42CTF"
|
msgid "Translate 42CTF"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:10
|
#: src/resources/templates/resources/translate.html:10
|
||||||
msgid "42CTF source code is publicly available on this"
|
msgid "42CTF source code is publicly available on this"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:11
|
#: src/resources/templates/resources/translate.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Translation does not require any programming skill and is a good way to "
|
"Translation does not require any programming skill and is a good way to "
|
||||||
"contribute if you want to help us, by making the platform always more "
|
"contribute if you want to help us, by making the platform always more "
|
||||||
"accessible."
|
"accessible."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:12
|
#: src/resources/templates/resources/translate.html:14
|
||||||
msgid "We have a"
|
msgid "We have a"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:12
|
#: src/resources/templates/resources/translate.html:14
|
||||||
msgid ""
|
msgid ""
|
||||||
"describing how to translate pages with the Django internalization module."
|
"describing how to translate pages with the Django internalization module."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:13
|
#: src/resources/templates/resources/translate.html:16
|
||||||
msgid ""
|
|
||||||
"We invite you to read it to know all the details, but it merely requires you "
|
|
||||||
"to edit text files, so you see, no programming skills required ;)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:14
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will need to fork the git repository, make your changes, push them, and "
|
"You will need to fork the git repository, make your changes, push them, and "
|
||||||
"then open a pull request so that we can merge your contributions into our "
|
"then open a pull request so that we can merge your contributions into our "
|
||||||
"repository."
|
"repository."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:15
|
#: src/resources/templates/resources/translate.html:17
|
||||||
msgid "Don't hesitate to reach for help on"
|
msgid "Don't hesitate to reach for help on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
|
"POT-Creation-Date: 2022-08-16 19:28+0200\n"
|
||||||
"PO-Revision-Date: 2022-02-09 10:55+0100\n"
|
"PO-Revision-Date: 2022-02-09 10:55+0100\n"
|
||||||
"Last-Translator: Javier Uhagón (uhagontorralvojavier@gmail.com)\n"
|
"Last-Translator: Javier Uhagón (uhagontorralvojavier@gmail.com)\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -18,15 +18,15 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:7
|
#: src/resources/templates/resources/about.html:11
|
||||||
msgid "What is 42CTF ?"
|
msgid "What is 42CTF ?"
|
||||||
msgstr "¿ Qué es 42CTF ?"
|
msgstr "¿ Qué es 42CTF ?"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:10
|
#: src/resources/templates/resources/about.html:14
|
||||||
msgid "A short introduction to CTF"
|
msgid "A short introduction to CTF"
|
||||||
msgstr "Una corta introducción a CTF"
|
msgstr "Una corta introducción a CTF"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:11
|
#: src/resources/templates/resources/about.html:15
|
||||||
msgid ""
|
msgid ""
|
||||||
"CTF stands for Capture The Flag. It is a cybersecurity competition, where "
|
"CTF stands for Capture The Flag. It is a cybersecurity competition, where "
|
||||||
"participants have to solve challenges of various categories to gain points "
|
"participants have to solve challenges of various categories to gain points "
|
||||||
|
@ -36,7 +36,7 @@ msgstr ""
|
||||||
"que los participantes tienen que resolver retos de diferentes categorías "
|
"que los participantes tienen que resolver retos de diferentes categorías "
|
||||||
"para ganar puntos y progresar en la Tabla de puntos."
|
"para ganar puntos y progresar en la Tabla de puntos."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:12
|
#: src/resources/templates/resources/about.html:16
|
||||||
msgid ""
|
msgid ""
|
||||||
"The challenges require participants to find sort of passwords called \"flags"
|
"The challenges require participants to find sort of passwords called \"flags"
|
||||||
"\" and to submit them on the platform."
|
"\" and to submit them on the platform."
|
||||||
|
@ -44,32 +44,32 @@ msgstr ""
|
||||||
"Los retos requieren que los participantes encuentren unas contraseñas "
|
"Los retos requieren que los participantes encuentren unas contraseñas "
|
||||||
"llamadas \\"
|
"llamadas \\"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:15
|
#: src/resources/templates/resources/about.html:19
|
||||||
msgid "Functionment of 42CTF"
|
msgid "Functionment of 42CTF"
|
||||||
msgstr "Funcionamiento de 42CTF"
|
msgstr "Funcionamiento de 42CTF"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:16
|
#: src/resources/templates/resources/about.html:20
|
||||||
msgid "42CTF is what we call a permanent CTF."
|
msgid "42CTF is what we call a permanent CTF."
|
||||||
msgstr "42CTF es lo que llamamos un CTF permanente."
|
msgstr "42CTF es lo que llamamos un CTF permanente."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "Except from the"
|
msgid "Except from the"
|
||||||
msgstr "A excepción de"
|
msgstr "A excepción de"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "events"
|
msgid "events"
|
||||||
msgstr "eventos"
|
msgstr "eventos"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "challenges are available on the platform without time limitations."
|
msgid "challenges are available on the platform without time limitations."
|
||||||
msgstr "los retos están disponibles en la plataforma sin limites de tiempo."
|
msgstr "los retos están disponibles en la plataforma sin limites de tiempo."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:18
|
#: src/resources/templates/resources/about.html:22
|
||||||
msgid "The registration on 42CTF is open to everyone, 42 students or not."
|
msgid "The registration on 42CTF is open to everyone, 42 students or not."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"El registro a 42CTF está abierto a todo el mundo, estudiantes de 42 o no."
|
"El registro a 42CTF está abierto a todo el mundo, estudiantes de 42 o no."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:19
|
#: src/resources/templates/resources/about.html:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Events may or may not be open. If you would like to organize an event on "
|
"Events may or may not be open. If you would like to organize an event on "
|
||||||
"42CTF, feel free to contact us."
|
"42CTF, feel free to contact us."
|
||||||
|
@ -77,26 +77,26 @@ msgstr ""
|
||||||
"Los eventos pueden o no estar abiertos. Si quieres organizar un evento en "
|
"Los eventos pueden o no estar abiertos. Si quieres organizar un evento en "
|
||||||
"42CTF, sientete libre de contactarnos."
|
"42CTF, sientete libre de contactarnos."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:22
|
#: src/resources/templates/resources/about.html:26
|
||||||
msgid "42CTF Team"
|
msgid "42CTF Team"
|
||||||
msgstr "Equipo de 42CTF"
|
msgstr "Equipo de 42CTF"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:23
|
#: src/resources/templates/resources/about.html:27
|
||||||
msgid "42CTF is managed by 42 students."
|
msgid "42CTF is managed by 42 students."
|
||||||
msgstr "42CTF está gestionado por estudiantes de 42."
|
msgstr "42CTF está gestionado por estudiantes de 42."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:24
|
#: src/resources/templates/resources/about.html:28
|
||||||
msgid "You can meet the team on"
|
msgid "You can meet the team on"
|
||||||
msgstr "Puedes conocer al equipo en"
|
msgstr "Puedes conocer al equipo en"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:25
|
#: src/resources/templates/resources/about.html:29
|
||||||
msgid ""
|
msgid ""
|
||||||
"Challenges are created by various contributors, not necessarily 42 students."
|
"Challenges are created by various contributors, not necessarily 42 students."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Los retos son creados por varios contribuidores, no necesariamente "
|
"Los retos son creados por varios contribuidores, no necesariamente "
|
||||||
"estudiantes de 42."
|
"estudiantes de 42."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:26
|
#: src/resources/templates/resources/about.html:30
|
||||||
msgid ""
|
msgid ""
|
||||||
"Anyone is welcome to submit their own challenges, either on the permanent "
|
"Anyone is welcome to submit their own challenges, either on the permanent "
|
||||||
"CTF or for a specific event."
|
"CTF or for a specific event."
|
||||||
|
@ -104,19 +104,84 @@ msgstr ""
|
||||||
"Todo el mundo está bienvenido a publicar sus propios retos, en el CTF "
|
"Todo el mundo está bienvenido a publicar sus propios retos, en el CTF "
|
||||||
"permanente o en un evento en específico."
|
"permanente o en un evento en específico."
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:7
|
#: src/resources/templates/resources/becomeMember.html:8
|
||||||
|
msgid "Become a 42CTF member"
|
||||||
|
msgstr "Convertirse en un miembro de 42CTF"
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:13
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Become a 42CTF member"
|
||||||
|
msgid "Why should I become a 42CTF member ?"
|
||||||
|
msgstr "Convertirse en un miembro de 42CTF"
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:18
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" 42CTF is a non-profit organization with a legal status under "
|
||||||
|
"the french law (Association loi 1901).<br>\n"
|
||||||
|
" Running a CTF platform costs money, and we are not currently "
|
||||||
|
"funded by anyone except you.<br>\n"
|
||||||
|
" You can become a 42CTF member if you want to support our "
|
||||||
|
"activity :)\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:27
|
||||||
|
msgid "I want to be a member !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:30
|
||||||
|
msgid ""
|
||||||
|
"You're welcome ! To become a member, all you need to do is to donate us 15 "
|
||||||
|
"euros and your membership will last for a year."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:36
|
||||||
|
msgid "If you want to use another payment method, please contact us !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:43
|
||||||
|
msgid "What do I get ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:45
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" - A <span class='is-member'>different color</span> for your "
|
||||||
|
"pseudo in the scoreboard, to let everyone know you're a member.<br>\n"
|
||||||
|
" - The possibility to play past CTF, with challenges no longer "
|
||||||
|
"available, in the form of private events with the people of your choice."
|
||||||
|
"<br>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:51
|
||||||
|
msgid "More advantages may come later, and you can submit us your ideas."
|
||||||
|
msgstr "Más ideas llegarán pronto, y puedes enviarnos ideas."
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:56
|
||||||
|
msgid "How do I claim it ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:59
|
||||||
|
msgid ""
|
||||||
|
"Once you've donated the 15 euros, you just need to contact us on discord or "
|
||||||
|
"by mail:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/create_challenge.html:7
|
||||||
msgid "Create new challenges"
|
msgid "Create new challenges"
|
||||||
msgstr "Crear retos nuevos"
|
msgstr "Crear retos nuevos"
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:10
|
#: src/resources/templates/resources/create_challenge.html:10
|
||||||
msgid "If you want to create new challenges for 42CTF, send us a message on "
|
msgid "If you want to create new challenges for 42CTF, send us a message on "
|
||||||
msgstr "Si quieres crear nuevos retos para 42CTF, mandanos un mensaje en "
|
msgstr "Si quieres crear nuevos retos para 42CTF, mandanos un mensaje en "
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:11
|
#: src/resources/templates/resources/create_challenge.html:11
|
||||||
msgid "If your challenge is offline, then you don't have to ask us in advance."
|
msgid "If your challenge is offline, then you don't have to ask us in advance."
|
||||||
msgstr "Si tu reto es offline, no nos tienes que avisar por adelantado."
|
msgstr "Si tu reto es offline, no nos tienes que avisar por adelantado."
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:12
|
#: src/resources/templates/resources/create_challenge.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"If your challenge is online (for example web or pwn), then you should give "
|
"If your challenge is online (for example web or pwn), then you should give "
|
||||||
"us a short description of what you want to do."
|
"us a short description of what you want to do."
|
||||||
|
@ -124,98 +189,20 @@ msgstr ""
|
||||||
"Si tu evento es online (por ejemplo web o pwn), entonces deberias mandarnos "
|
"Si tu evento es online (por ejemplo web o pwn), entonces deberias mandarnos "
|
||||||
"una corta descripción de lo que quieres hacer."
|
"una corta descripción de lo que quieres hacer."
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:13
|
#: src/resources/templates/resources/create_challenge.html:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"We may be able to help you or to give you resources such as dockerfiles."
|
"We may be able to help you or to give you resources such as dockerfiles."
|
||||||
msgstr "Podemos ser de ayuda o darte recursos como dockerfiles."
|
msgstr "Podemos ser de ayuda o darte recursos como dockerfiles."
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:14
|
#: src/resources/templates/resources/create_challenge.html:14
|
||||||
msgid "We plan to make those resources publicly available in a near future."
|
msgid "We plan to make those resources publicly available in a near future."
|
||||||
msgstr "Planeamos publicar estos recursos al publico en un futuro cercano."
|
msgstr "Planeamos publicar estos recursos al publico en un futuro cercano."
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:7
|
#: src/resources/templates/resources/donate.html:7
|
||||||
msgid "Donate"
|
msgid "Donate"
|
||||||
msgstr "Donar"
|
msgstr "Donar"
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:10
|
#: src/resources/templates/resources/donate.html:14
|
||||||
msgid "Become a 42CTF member"
|
|
||||||
msgstr "Convertirse en un miembro de 42CTF"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:11
|
|
||||||
msgid ""
|
|
||||||
"42CTF is a non-profit organization with a legal status under the french law "
|
|
||||||
"(Association loi 1901)."
|
|
||||||
msgstr ""
|
|
||||||
"42CTF es una organización sin ánimo de lucro bajo un estatus legal bajo la "
|
|
||||||
"ley francesa (loi de asociación 1901)."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:12
|
|
||||||
msgid "You can support us by becoming a member and paying a fee of 15 euros."
|
|
||||||
msgstr ""
|
|
||||||
"Puedes apoyarnos convirtiendote en un miebro y pagandonos una comisión de 15 "
|
|
||||||
"euros."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:13
|
|
||||||
msgid "Membership is then granted for 1 year."
|
|
||||||
msgstr "La membresia dura 1 año."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:15
|
|
||||||
msgid "When you become a member, you gain the following advantages:"
|
|
||||||
msgstr "Cuando te conviertes en un miembro, ganas las siguientes ventajas:"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:16
|
|
||||||
msgid ""
|
|
||||||
"A different color for your pseudo in the scoreboard, to let everyone know "
|
|
||||||
"you're a member."
|
|
||||||
msgstr ""
|
|
||||||
"Un color diferente para tu pseudo en la tabla de puntuaciones para que todo "
|
|
||||||
"el mundo sepa que eres un miembro."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:17
|
|
||||||
msgid ""
|
|
||||||
"The possibility to play again past CTF, with challenges no longer available, "
|
|
||||||
"in the form of private events with the people of your choice."
|
|
||||||
msgstr ""
|
|
||||||
"La posibilidad e jugar un CTF del pasado, con retos que ya no están "
|
|
||||||
"disponibles, crear eventos privados con gente de tu elección."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:18
|
|
||||||
msgid ""
|
|
||||||
"Ex: you played Welcome CTF 2021, and want to play it again with your friends "
|
|
||||||
"during one weekend."
|
|
||||||
msgstr ""
|
|
||||||
"Ejemplo: Si jugaste CTF 2021, y quieres volverlo a jugar con tus amigos "
|
|
||||||
"durante un fin de semana."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:19
|
|
||||||
msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
|
|
||||||
msgstr "O no jugaste el Welcome CTF 2021 porque no estabas disponible."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:22
|
|
||||||
msgid "More advantages may come later, and you can submit us your ideas."
|
|
||||||
msgstr "Más ideas llegarán pronto, y puedes enviarnos ideas."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:23
|
|
||||||
msgid ""
|
|
||||||
"However, we will not organize limited time CTF for members only, as this "
|
|
||||||
"will be equivalent to organize paid events, and we want 42CTF to remain FREE "
|
|
||||||
"for all."
|
|
||||||
msgstr ""
|
|
||||||
"Sin embargo, no organizaremos CTF de tiempo limitado para miembros, ya que "
|
|
||||||
"esto sería equivalente a organizar eventos de pago, y queremos mantener "
|
|
||||||
"42CTF GRATIS para todos."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:26
|
|
||||||
msgid "Donate to 42CTF"
|
|
||||||
msgstr "Dona a 42CTF"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:27
|
|
||||||
msgid ""
|
|
||||||
"You can donate to 42CTF or pay your membership with the following means:"
|
|
||||||
msgstr ""
|
|
||||||
"Puedes donar a 42CTF o pagar tu membresía con los siguientes métodos de pago:"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:44
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you would like us to add another payment method or if you want to pay in "
|
"If you would like us to add another payment method or if you want to pay in "
|
||||||
"cash, send us a message !"
|
"cash, send us a message !"
|
||||||
|
@ -223,42 +210,31 @@ msgstr ""
|
||||||
"Si quieres que añadamos otro metodo de pago o quieres pagarnos en efectivo "
|
"Si quieres que añadamos otro metodo de pago o quieres pagarnos en efectivo "
|
||||||
"¡Mandanos un mensaje!"
|
"¡Mandanos un mensaje!"
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:46
|
#: src/resources/templates/resources/donate.html:18
|
||||||
msgid ""
|
|
||||||
"If you're paying for your membership, don't forget to send us your first and "
|
|
||||||
"last name, as well as your 42CTF pseudo."
|
|
||||||
msgstr ""
|
|
||||||
"Si estás pagando por tu membresía, no olvides mandarnos tu nombre y "
|
|
||||||
"apellido, también tu nombre de usuario en 42CTF"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:47
|
|
||||||
msgid ""
|
|
||||||
"We will only use thoe data to keep track of our members and grant you "
|
|
||||||
"advantages, and we will never communicate them to any third party."
|
|
||||||
msgstr ""
|
|
||||||
"Solo usarmos los datos para tener control de la lista de miembros y darte "
|
|
||||||
"las ventajas de miembro, nunca se los daremos a ningún tercero."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:50
|
|
||||||
msgid "What will we do with your money ?"
|
msgid "What will we do with your money ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:51
|
#: src/resources/templates/resources/donate.html:21
|
||||||
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Hosting a website - and especially a CTF platform - costs money:\n"
|
"Hosting a website - and especially a CTF platform - costs money: more "
|
||||||
" more precisely, it costs us <b>50 euros per month</b>.<br>\n"
|
"precisely, it costs us <b>50 euros per month</b>.\n"
|
||||||
" If we had <b>40 members</b> each year, it would be enough to "
|
" <br><br>\n"
|
||||||
"cover the hosting of 42CTF.<br>\n"
|
" If we had <b>40 members</b> each year, it would be "
|
||||||
" With the additional money, we could for example offer prizes "
|
"enough to cover the hosting of 42CTF.\n"
|
||||||
"for limited-time events, but we will update this page as soon as we reach "
|
" <br>\n"
|
||||||
"this threshold :)"
|
" We currently have %(nb_members)s members.\n"
|
||||||
|
" <br><br>\n"
|
||||||
|
" With the additional money, we could for example offer "
|
||||||
|
"prizes for limited-time events, but we will update this page as soon as we "
|
||||||
|
"reach this threshold :)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/edit.html:7
|
#: src/resources/templates/resources/edit.html:7
|
||||||
msgid "Edit this page"
|
msgid "Edit this page"
|
||||||
msgstr "Editar esta página"
|
msgstr "Editar esta página"
|
||||||
|
|
||||||
#: resources/templates/resources/edit.html:12
|
#: src/resources/templates/resources/edit.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"More information coming soon, but as you can guess it involves making a pull "
|
"More information coming soon, but as you can guess it involves making a pull "
|
||||||
"request to your favorite"
|
"request to your favorite"
|
||||||
|
@ -266,33 +242,33 @@ msgstr ""
|
||||||
"Más información llegará pronto, pero como puedes imaginar requiere hacer un "
|
"Más información llegará pronto, pero como puedes imaginar requiere hacer un "
|
||||||
"pull request a tu favorito"
|
"pull request a tu favorito"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:7
|
#: src/resources/templates/resources/tools.html:7
|
||||||
msgid "Recommended Tools"
|
msgid "Recommended Tools"
|
||||||
msgstr "Herramientas Recomendadas"
|
msgstr "Herramientas Recomendadas"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:10
|
#: src/resources/templates/resources/tools.html:10
|
||||||
msgid "To get you started, we built a VM that you can simply import in"
|
msgid "To get you started, we built a VM that you can simply import in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Para empezar, hemos creado una Máquina Virtual que simplemente puedes "
|
"Para empezar, hemos creado una Máquina Virtual que simplemente puedes "
|
||||||
"importar."
|
"importar."
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:10
|
#: src/resources/templates/resources/tools.html:10
|
||||||
msgid "with a bunch of useful tools."
|
msgid "with a bunch of useful tools."
|
||||||
msgstr "con unas cuantas herramientas útiles."
|
msgstr "con unas cuantas herramientas útiles."
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:11
|
#: src/resources/templates/resources/tools.html:11
|
||||||
msgid "You can dowload this OVA"
|
msgid "You can dowload this OVA"
|
||||||
msgstr "Puedes descargar este OVA"
|
msgstr "Puedes descargar este OVA"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:11
|
#: src/resources/templates/resources/tools.html:11
|
||||||
msgid "here"
|
msgid "here"
|
||||||
msgstr "aquí"
|
msgstr "aquí"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:13
|
#: src/resources/templates/resources/tools.html:13
|
||||||
msgid "Here are the tools installed on the VM:"
|
msgid "Here are the tools installed on the VM:"
|
||||||
msgstr "Aquí están las herramientas instaladas en la Máquina Virtual:"
|
msgstr "Aquí están las herramientas instaladas en la Máquina Virtual:"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:22
|
#: src/resources/templates/resources/tools.html:22
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you want to solve the challenges on your own machine, we recommend you to "
|
"If you want to solve the challenges on your own machine, we recommend you to "
|
||||||
"use a Linux operating system."
|
"use a Linux operating system."
|
||||||
|
@ -300,7 +276,7 @@ msgstr ""
|
||||||
"Si quieres resolver los retos en tu propia máquina, te recomendamos usar "
|
"Si quieres resolver los retos en tu propia máquina, te recomendamos usar "
|
||||||
"Linux como sistema operativo."
|
"Linux como sistema operativo."
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:23
|
#: src/resources/templates/resources/tools.html:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
|
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
|
||||||
"Windows."
|
"Windows."
|
||||||
|
@ -308,19 +284,19 @@ msgstr ""
|
||||||
"La mayoría de retos de ingeniería inversa usan binarios ELF y no funcionarán "
|
"La mayoría de retos de ingeniería inversa usan binarios ELF y no funcionarán "
|
||||||
"en Mac OS o Windows."
|
"en Mac OS o Windows."
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:25
|
#: src/resources/templates/resources/tools.html:25
|
||||||
msgid "Additionnaly, you will need the following languages interpreters:"
|
msgid "Additionnaly, you will need the following languages interpreters:"
|
||||||
msgstr "Además, necesitarás tender los siguientes interpretes de lenguaje:"
|
msgstr "Además, necesitarás tender los siguientes interpretes de lenguaje:"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:7
|
#: src/resources/templates/resources/translate.html:7
|
||||||
msgid "Translate 42CTF"
|
msgid "Translate 42CTF"
|
||||||
msgstr "Traducir 42CTF"
|
msgstr "Traducir 42CTF"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:10
|
#: src/resources/templates/resources/translate.html:10
|
||||||
msgid "42CTF source code is publicly available on this"
|
msgid "42CTF source code is publicly available on this"
|
||||||
msgstr "El código de 42CTF está disponible al público aquí"
|
msgstr "El código de 42CTF está disponible al público aquí"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:11
|
#: src/resources/templates/resources/translate.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Translation does not require any programming skill and is a good way to "
|
"Translation does not require any programming skill and is a good way to "
|
||||||
"contribute if you want to help us, by making the platform always more "
|
"contribute if you want to help us, by making the platform always more "
|
||||||
|
@ -330,27 +306,18 @@ msgstr ""
|
||||||
"contribuir si quieres ayudarnos, haciendo la plataforma siempre más "
|
"contribuir si quieres ayudarnos, haciendo la plataforma siempre más "
|
||||||
"accesible."
|
"accesible."
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:12
|
#: src/resources/templates/resources/translate.html:14
|
||||||
msgid "We have a"
|
msgid "We have a"
|
||||||
msgstr "Tenemos un"
|
msgstr "Tenemos un"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:12
|
#: src/resources/templates/resources/translate.html:14
|
||||||
msgid ""
|
msgid ""
|
||||||
"describing how to translate pages with the Django internalization module."
|
"describing how to translate pages with the Django internalization module."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Describiendo como traducir las páginas con el modulo de internacionalización "
|
"Describiendo como traducir las páginas con el modulo de internacionalización "
|
||||||
"Django."
|
"Django."
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:13
|
#: src/resources/templates/resources/translate.html:16
|
||||||
msgid ""
|
|
||||||
"We invite you to read it to know all the details, but it merely requires you "
|
|
||||||
"to edit text files, so you see, no programming skills required ;)"
|
|
||||||
msgstr ""
|
|
||||||
"Te invitamos a leerlo para conocer todos los detalles, pero simplemente "
|
|
||||||
"rquiere que edites archivos de texto, asi que como ves, no hace falta saber "
|
|
||||||
"programar ;)"
|
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:14
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will need to fork the git repository, make your changes, push them, and "
|
"You will need to fork the git repository, make your changes, push them, and "
|
||||||
"then open a pull request so that we can merge your contributions into our "
|
"then open a pull request so that we can merge your contributions into our "
|
||||||
|
@ -360,6 +327,89 @@ msgstr ""
|
||||||
"hacer un push y entonces abrir un Pull request para que podamos hacer merge "
|
"hacer un push y entonces abrir un Pull request para que podamos hacer merge "
|
||||||
"de tus cambios a nuestro repositorio."
|
"de tus cambios a nuestro repositorio."
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:15
|
#: src/resources/templates/resources/translate.html:17
|
||||||
msgid "Don't hesitate to reach for help on"
|
msgid "Don't hesitate to reach for help on"
|
||||||
msgstr "No dudes en pedirnos ayuda"
|
msgstr "No dudes en pedirnos ayuda"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "42CTF is a non-profit organization with a legal status under the french "
|
||||||
|
#~ "law (Association loi 1901)."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "42CTF es una organización sin ánimo de lucro bajo un estatus legal bajo "
|
||||||
|
#~ "la ley francesa (loi de asociación 1901)."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "You can support us by becoming a member and paying a fee of 15 euros."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Puedes apoyarnos convirtiendote en un miebro y pagandonos una comisión de "
|
||||||
|
#~ "15 euros."
|
||||||
|
|
||||||
|
#~ msgid "Membership is then granted for 1 year."
|
||||||
|
#~ msgstr "La membresia dura 1 año."
|
||||||
|
|
||||||
|
#~ msgid "When you become a member, you gain the following advantages:"
|
||||||
|
#~ msgstr "Cuando te conviertes en un miembro, ganas las siguientes ventajas:"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "A different color for your pseudo in the scoreboard, to let everyone know "
|
||||||
|
#~ "you're a member."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Un color diferente para tu pseudo en la tabla de puntuaciones para que "
|
||||||
|
#~ "todo el mundo sepa que eres un miembro."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The possibility to play again past CTF, with challenges no longer "
|
||||||
|
#~ "available, in the form of private events with the people of your choice."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "La posibilidad e jugar un CTF del pasado, con retos que ya no están "
|
||||||
|
#~ "disponibles, crear eventos privados con gente de tu elección."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Ex: you played Welcome CTF 2021, and want to play it again with your "
|
||||||
|
#~ "friends during one weekend."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Ejemplo: Si jugaste CTF 2021, y quieres volverlo a jugar con tus amigos "
|
||||||
|
#~ "durante un fin de semana."
|
||||||
|
|
||||||
|
#~ msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
|
||||||
|
#~ msgstr "O no jugaste el Welcome CTF 2021 porque no estabas disponible."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "However, we will not organize limited time CTF for members only, as this "
|
||||||
|
#~ "will be equivalent to organize paid events, and we want 42CTF to remain "
|
||||||
|
#~ "FREE for all."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Sin embargo, no organizaremos CTF de tiempo limitado para miembros, ya "
|
||||||
|
#~ "que esto sería equivalente a organizar eventos de pago, y queremos "
|
||||||
|
#~ "mantener 42CTF GRATIS para todos."
|
||||||
|
|
||||||
|
#~ msgid "Donate to 42CTF"
|
||||||
|
#~ msgstr "Dona a 42CTF"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "You can donate to 42CTF or pay your membership with the following means:"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Puedes donar a 42CTF o pagar tu membresía con los siguientes métodos de "
|
||||||
|
#~ "pago:"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "If you're paying for your membership, don't forget to send us your first "
|
||||||
|
#~ "and last name, as well as your 42CTF pseudo."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Si estás pagando por tu membresía, no olvides mandarnos tu nombre y "
|
||||||
|
#~ "apellido, también tu nombre de usuario en 42CTF"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "We will only use thoe data to keep track of our members and grant you "
|
||||||
|
#~ "advantages, and we will never communicate them to any third party."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Solo usarmos los datos para tener control de la lista de miembros y darte "
|
||||||
|
#~ "las ventajas de miembro, nunca se los daremos a ningún tercero."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "We invite you to read it to know all the details, but it merely requires "
|
||||||
|
#~ "you to edit text files, so you see, no programming skills required ;)"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Te invitamos a leerlo para conocer todos los detalles, pero simplemente "
|
||||||
|
#~ "rquiere que edites archivos de texto, asi que como ves, no hace falta "
|
||||||
|
#~ "saber programar ;)"
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
|
"POT-Creation-Date: 2022-08-16 19:28+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -18,25 +18,25 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:7
|
#: src/resources/templates/resources/about.html:11
|
||||||
msgid "What is 42CTF ?"
|
msgid "What is 42CTF ?"
|
||||||
msgstr "Qu'est-ce que 42CTF ?"
|
msgstr "Qu'est-ce que 42CTF ?"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:10
|
#: src/resources/templates/resources/about.html:14
|
||||||
msgid "A short introduction to CTF"
|
msgid "A short introduction to CTF"
|
||||||
msgstr "Une brève introduction aux CTF"
|
msgstr "Une brève introduction aux CTF"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:11
|
#: src/resources/templates/resources/about.html:15
|
||||||
msgid ""
|
msgid ""
|
||||||
"CTF stands for Capture The Flag. It is a cybersecurity competition, where "
|
"CTF stands for Capture The Flag. It is a cybersecurity competition, where "
|
||||||
"participants have to solve challenges of various categories to gain points "
|
"participants have to solve challenges of various categories to gain points "
|
||||||
"and progress on the scoreboard."
|
"and progress on the scoreboard."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"CTF veut dire Capture The Flag. C'est une compétition de cybersécurité où "
|
"CTF signifie \"Capture The Flag\". C'est une compétition de cybersécurité où "
|
||||||
"les participants doivent résoudre des challenges dans différentes catégories "
|
"les participants doivent résoudre des challenges dans différentes catégories "
|
||||||
"pour gagner des points et progresser dans le classement."
|
"pour gagner des points et progresser dans le classement."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:12
|
#: src/resources/templates/resources/about.html:16
|
||||||
msgid ""
|
msgid ""
|
||||||
"The challenges require participants to find sort of passwords called \"flags"
|
"The challenges require participants to find sort of passwords called \"flags"
|
||||||
"\" and to submit them on the platform."
|
"\" and to submit them on the platform."
|
||||||
|
@ -44,59 +44,59 @@ msgstr ""
|
||||||
"Les challenges demandent aux participants de trouver des sortes de mots de "
|
"Les challenges demandent aux participants de trouver des sortes de mots de "
|
||||||
"passe appelés \"flags\" et de les soumettre sur la plateforme."
|
"passe appelés \"flags\" et de les soumettre sur la plateforme."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:15
|
#: src/resources/templates/resources/about.html:19
|
||||||
msgid "Functionment of 42CTF"
|
msgid "Functionment of 42CTF"
|
||||||
msgstr "Fonctionnement de 42CTF"
|
msgstr "Fonctionnement de 42CTF"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:16
|
#: src/resources/templates/resources/about.html:20
|
||||||
msgid "42CTF is what we call a permanent CTF."
|
msgid "42CTF is what we call a permanent CTF."
|
||||||
msgstr "42CTF est ce qu'on appelle un CTF permanent."
|
msgstr "42CTF est ce qu'on appelle un CTF permanent."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "Except from the"
|
msgid "Except from the"
|
||||||
msgstr "Sauf pour les"
|
msgstr "Sauf pour les"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "events"
|
msgid "events"
|
||||||
msgstr "évènements"
|
msgstr "évènements"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "challenges are available on the platform without time limitations."
|
msgid "challenges are available on the platform without time limitations."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"les challenges sont disponnibles sur la plateforme sans limites de temps."
|
"les challenges sont disponnibles sur la plateforme sans limites de temps."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:18
|
#: src/resources/templates/resources/about.html:22
|
||||||
msgid "The registration on 42CTF is open to everyone, 42 students or not."
|
msgid "The registration on 42CTF is open to everyone, 42 students or not."
|
||||||
msgstr "L'inscription à 42CTF est ouverte à tous, étudiant de 42 ou"
|
msgstr "L'inscription à 42CTF est ouverte à tous, étudiant de 42 ou non."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:19
|
#: src/resources/templates/resources/about.html:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Events may or may not be open. If you would like to organize an event on "
|
"Events may or may not be open. If you would like to organize an event on "
|
||||||
"42CTF, feel free to contact us."
|
"42CTF, feel free to contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Les évènements peuvent être publics ou non. Si vous souhaitez organiser un "
|
"Les évènements peuvent être publics ou non. Si tu souhaites organiser un "
|
||||||
"évènement sur 42CTF, n'hésitez pas à nous contacter."
|
"évènement sur 42CTF, n'hésite pas à nous contacter."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:22
|
#: src/resources/templates/resources/about.html:26
|
||||||
msgid "42CTF Team"
|
msgid "42CTF Team"
|
||||||
msgstr "Équipe de 42CTF"
|
msgstr "Équipe de 42CTF"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:23
|
#: src/resources/templates/resources/about.html:27
|
||||||
msgid "42CTF is managed by 42 students."
|
msgid "42CTF is managed by 42 students."
|
||||||
msgstr "42CTF est géré par des étudiants de 42"
|
msgstr "42CTF est géré par des étudiants de 42"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:24
|
#: src/resources/templates/resources/about.html:28
|
||||||
msgid "You can meet the team on"
|
msgid "You can meet the team on"
|
||||||
msgstr "Vous pouvez rencontrer l'équipe sur"
|
msgstr "Tu peux rencontrer l'équipe sur"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:25
|
#: src/resources/templates/resources/about.html:29
|
||||||
msgid ""
|
msgid ""
|
||||||
"Challenges are created by various contributors, not necessarily 42 students."
|
"Challenges are created by various contributors, not necessarily 42 students."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Les challenges sont créés par divers contributeurs, pas nécessairement des "
|
"Les challenges sont créés par divers contributeurs, pas nécessairement des "
|
||||||
"étudiants de 42."
|
"étudiants de 42."
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:26
|
#: src/resources/templates/resources/about.html:30
|
||||||
msgid ""
|
msgid ""
|
||||||
"Anyone is welcome to submit their own challenges, either on the permanent "
|
"Anyone is welcome to submit their own challenges, either on the permanent "
|
||||||
"CTF or for a specific event."
|
"CTF or for a specific event."
|
||||||
|
@ -104,272 +104,250 @@ msgstr ""
|
||||||
"Tout le monde est invité à soumettre ses propres défis, que ce soit sur le "
|
"Tout le monde est invité à soumettre ses propres défis, que ce soit sur le "
|
||||||
"CTF permanent ou pour un évènement spécifique."
|
"CTF permanent ou pour un évènement spécifique."
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:7
|
#: src/resources/templates/resources/becomeMember.html:8
|
||||||
|
msgid "Become a 42CTF member"
|
||||||
|
msgstr "Adhérer à 42CTF"
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:13
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Become a 42CTF member"
|
||||||
|
msgid "Why should I become a 42CTF member ?"
|
||||||
|
msgstr "Pourquoi devrais-je adhérer à 42CTF ?"
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:18
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" 42CTF is a non-profit organization with a legal status under "
|
||||||
|
"the french law (Association loi 1901).<br>\n"
|
||||||
|
" Running a CTF platform costs money, and we are not currently "
|
||||||
|
"funded by anyone except you.<br>\n"
|
||||||
|
" You can become a 42CTF member if you want to support our "
|
||||||
|
"activity :)\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" 42CTF est une Association loi 1901 (France).<br>\n"
|
||||||
|
" Maintenir une plateforme de CTF coûte de l'argent, et nous ne sommes actuellement financés par personne à part toi.<br>\n"
|
||||||
|
" Tu peux adhérer à 42CTF si tu veux soutenir notre activité :) \n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:27
|
||||||
|
msgid "I want to be a member !"
|
||||||
|
msgstr "Je veux adhérer !"
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:30
|
||||||
|
msgid ""
|
||||||
|
"You're welcome ! To become a member, all you need to do is to donate us 15 "
|
||||||
|
"euros and your membership will last for a year."
|
||||||
|
msgstr "Bienvenue ! Pour adhérer, il suffit de nous donner 15 euros et ton adhésion sera valable pour une année complète."
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:36
|
||||||
|
msgid "If you want to use another payment method, please contact us !"
|
||||||
|
msgstr "Si tu souhaite utiliser un autre mode de paiment, n'hésite pas à nous contacter !"
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:43
|
||||||
|
msgid "What do I get ?"
|
||||||
|
msgstr "Qu'est ce que j'y gagne ?"
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:45
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" - A <span class='is-member'>different color</span> for your "
|
||||||
|
"pseudo in the scoreboard, to let everyone know you're a member.<br>\n"
|
||||||
|
" - The possibility to play past CTF, with challenges no longer "
|
||||||
|
"available, in the form of private events with the people of your choice."
|
||||||
|
"<br>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" - Une <span class='is-member'>couleur différente</span> pour ton "
|
||||||
|
"pseudo dans le scoreboard, pour que tout le monde sache que tu as adhéré.<br>\n"
|
||||||
|
" - La possibilité de (re)jouer les CTFs passés, dont les challenges ne sont plus disponibles, sous la forme d'un évènement privé avec les personnes de ton choix."
|
||||||
|
"<br>\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:51
|
||||||
|
msgid "More advantages may come later, and you can submit us your ideas."
|
||||||
|
msgstr ""
|
||||||
|
"Plus d'avantages pourraient être disponibles plus tard, et tu peux nous "
|
||||||
|
"soumettre vos idées."
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:56
|
||||||
|
msgid "How do I claim it ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:59
|
||||||
|
msgid ""
|
||||||
|
"Once you've donated the 15 euros, you just need to contact us on discord or "
|
||||||
|
"by mail:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/create_challenge.html:7
|
||||||
msgid "Create new challenges"
|
msgid "Create new challenges"
|
||||||
msgstr "Créer de nouveaux challenges"
|
msgstr "Créer de nouveaux challenges"
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:10
|
#: src/resources/templates/resources/create_challenge.html:10
|
||||||
msgid "If you want to create new challenges for 42CTF, send us a message on "
|
msgid "If you want to create new challenges for 42CTF, send us a message on "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Si vous souhaitez créer de nouveaux challenges pour 42CTF, envoyez-nous un "
|
"Si tu souhaites créer de nouveaux challenges pour 42CTF, envoie-nous un "
|
||||||
"message sur "
|
"message sur "
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:11
|
#: src/resources/templates/resources/create_challenge.html:11
|
||||||
msgid "If your challenge is offline, then you don't have to ask us in advance."
|
msgid "If your challenge is offline, then you don't have to ask us in advance."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Si votre défi est hors ligne, vous n'avez pas besoin de nous demander à "
|
"Si ton challenge est hors ligne, tu n'as pas besoin de nous demander à "
|
||||||
"l'avance."
|
"l'avance."
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:12
|
#: src/resources/templates/resources/create_challenge.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"If your challenge is online (for example web or pwn), then you should give "
|
"If your challenge is online (for example web or pwn), then you should give "
|
||||||
"us a short description of what you want to do."
|
"us a short description of what you want to do."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Si votre challenge est en ligne (par exemple web or pwn), alors vous devrez "
|
"Si ton challenge est en ligne (par exemple web or pwn), alors tu devras "
|
||||||
"nous donner une courte description de ce que vous voulez faire."
|
"nous donner une courte description de ce que tu veux faire."
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:13
|
#: src/resources/templates/resources/create_challenge.html:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"We may be able to help you or to give you resources such as dockerfiles."
|
"We may be able to help you or to give you resources such as dockerfiles."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nous pouvons être en mesure de vous aider ou de vous fournir des ressources "
|
"Nous pouvons être en mesure de t'aider ou de te fournir des ressources "
|
||||||
"comme des dockerfiles."
|
"comme des dockerfiles."
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:14
|
#: src/resources/templates/resources/create_challenge.html:14
|
||||||
msgid "We plan to make those resources publicly available in a near future."
|
msgid "We plan to make those resources publicly available in a near future."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nous prévoyons de rendre ces ressources accessibles au public dans un avenir "
|
"Nous prévoyons de rendre ces ressources accessibles au public dans un avenir "
|
||||||
"proche."
|
"proche."
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:7
|
#: src/resources/templates/resources/donate.html:7
|
||||||
msgid "Donate"
|
msgid "Donate"
|
||||||
msgstr "Donner"
|
msgstr "Donner"
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:10
|
#: src/resources/templates/resources/donate.html:14
|
||||||
msgid "Become a 42CTF member"
|
|
||||||
msgstr "Devenez membre de 42CTF"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:11
|
|
||||||
msgid ""
|
|
||||||
"42CTF is a non-profit organization with a legal status under the french law "
|
|
||||||
"(Association loi 1901)."
|
|
||||||
msgstr "42CTF est une association loi 1901 (loi française)."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:12
|
|
||||||
msgid "You can support us by becoming a member and paying a fee of 15 euros."
|
|
||||||
msgstr ""
|
|
||||||
"Vous pouvez nous aider financièrement en devenant membre, au cout de 15 "
|
|
||||||
"euros."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:13
|
|
||||||
msgid "Membership is then granted for 1 year."
|
|
||||||
msgstr "Le status de membre est valable 1 an au paiement de la cotisation."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:15
|
|
||||||
msgid "When you become a member, you gain the following advantages:"
|
|
||||||
msgstr "Lorsque vous adherez à 42CTF, vous obtenez les avantages suivants :"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:16
|
|
||||||
msgid ""
|
|
||||||
"A different color for your pseudo in the scoreboard, to let everyone know "
|
|
||||||
"you're a member."
|
|
||||||
msgstr ""
|
|
||||||
"Une couleur différente pour votre pseudo sur le scoreboard, pour que tout le "
|
|
||||||
"monde sache que vous êtes membre."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:17
|
|
||||||
msgid ""
|
|
||||||
"The possibility to play again past CTF, with challenges no longer available, "
|
|
||||||
"in the form of private events with the people of your choice."
|
|
||||||
msgstr ""
|
|
||||||
"La possibilité de jouer de nouveau aux CTF passés, avec des challenges qui "
|
|
||||||
"ne sont plus disponibles, sous la forme d'un évènement privé avec les "
|
|
||||||
"personnes de votre choix."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:18
|
|
||||||
msgid ""
|
|
||||||
"Ex: you played Welcome CTF 2021, and want to play it again with your friends "
|
|
||||||
"during one weekend."
|
|
||||||
msgstr ""
|
|
||||||
"Ex: vous avez joué au Welcome CTF 2021, et vous voulez renouveler "
|
|
||||||
"l'expérience avec vos amis le temps d'un weekend."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:19
|
|
||||||
msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
|
|
||||||
msgstr "Ou au contraire vous n'avez pas joué car vous n'étiez pas éligible."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:22
|
|
||||||
msgid "More advantages may come later, and you can submit us your ideas."
|
|
||||||
msgstr ""
|
|
||||||
"Plus d'avantages pourraient être disponibles plus tard, et vous pouvez nous "
|
|
||||||
"soumettre vos idées."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:23
|
|
||||||
msgid ""
|
|
||||||
"However, we will not organize limited time CTF for members only, as this "
|
|
||||||
"will be equivalent to organize paid events, and we want 42CTF to remain FREE "
|
|
||||||
"for all."
|
|
||||||
msgstr ""
|
|
||||||
"Cependant, nous n'organiserons pas de CTF en temps limité réservé aux "
|
|
||||||
"membres, car cela serait équivalent à organiser des évènements payants, et "
|
|
||||||
"nous voulons que 42CTF reste GRATUIT pour tous."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:26
|
|
||||||
msgid "Donate to 42CTF"
|
|
||||||
msgstr "Donnez à 42CTF"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:27
|
|
||||||
msgid ""
|
|
||||||
"You can donate to 42CTF or pay your membership with the following means:"
|
|
||||||
msgstr ""
|
|
||||||
"Vous pouvez donner à 42CTF ou payer votre adhésion avec les moyens suivants :"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:44
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you would like us to add another payment method or if you want to pay in "
|
"If you would like us to add another payment method or if you want to pay in "
|
||||||
"cash, send us a message !"
|
"cash, send us a message !"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Si vous aimeriez qu'on ajoute un autre moyen de paiement, ou si vous voulez "
|
"Si tu aimerais qu'on ajoute un autre moyen de paiement, ou si tu veux "
|
||||||
"payer en liquide, envoyez-nous un message !"
|
"payer en liquide, envoie-nous un message !"
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:46
|
#: src/resources/templates/resources/donate.html:18
|
||||||
msgid ""
|
|
||||||
"If you're paying for your membership, don't forget to send us your first and "
|
|
||||||
"last name, as well as your 42CTF pseudo."
|
|
||||||
msgstr ""
|
|
||||||
"Si vous payez pour l'adhésion, n'oubliez pas de nous envoyer vos noms et "
|
|
||||||
"prénoms, ainsi que votre pseudo 42CTF."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:47
|
|
||||||
msgid ""
|
|
||||||
"We will only use thoe data to keep track of our members and grant you "
|
|
||||||
"advantages, and we will never communicate them to any third party."
|
|
||||||
msgstr ""
|
|
||||||
"Nous utiliserons ces données exclusivement pour tenir compte de nos membres "
|
|
||||||
"et vous accorder des avantages, nous ne transmettrons jamais ces données à "
|
|
||||||
"des tierces parties."
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:50
|
|
||||||
msgid "What will we do with your money ?"
|
msgid "What will we do with your money ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:51
|
#: src/resources/templates/resources/donate.html:21
|
||||||
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Hosting a website - and especially a CTF platform - costs money:\n"
|
"Hosting a website - and especially a CTF platform - costs money: more "
|
||||||
" more precisely, it costs us <b>50 euros per month</b>.<br>\n"
|
"precisely, it costs us <b>50 euros per month</b>.\n"
|
||||||
" If we had <b>40 members</b> each year, it would be enough to "
|
" <br><br>\n"
|
||||||
"cover the hosting of 42CTF.<br>\n"
|
" If we had <b>40 members</b> each year, it would be "
|
||||||
" With the additional money, we could for example offer prizes "
|
"enough to cover the hosting of 42CTF.\n"
|
||||||
"for limited-time events, but we will update this page as soon as we reach "
|
" <br>\n"
|
||||||
"this threshold :)"
|
" We currently have %(nb_members)s members.\n"
|
||||||
|
" <br><br>\n"
|
||||||
|
" With the additional money, we could for example offer "
|
||||||
|
"prizes for limited-time events, but we will update this page as soon as we "
|
||||||
|
"reach this threshold :)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/edit.html:7
|
#: src/resources/templates/resources/edit.html:7
|
||||||
msgid "Edit this page"
|
msgid "Edit this page"
|
||||||
msgstr "Modifier cette page"
|
msgstr "Modifier cette page"
|
||||||
|
|
||||||
#: resources/templates/resources/edit.html:12
|
#: src/resources/templates/resources/edit.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"More information coming soon, but as you can guess it involves making a pull "
|
"More information coming soon, but as you can guess it involves making a pull "
|
||||||
"request to your favorite"
|
"request to your favorite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"De plus amples informations seront bientôt disponibles, mais comme vous "
|
"De plus amples informations seront bientôt disponibles, mais comme tu "
|
||||||
"pouvez le deviner, vous pouvez faire une pull request sur votre bien aimé"
|
"pouvez le deviner, tu peux faire une pull request sur ton bien aimé"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:7
|
#: src/resources/templates/resources/tools.html:7
|
||||||
msgid "Recommended Tools"
|
msgid "Recommended Tools"
|
||||||
msgstr "Outils recommandés"
|
msgstr "Outils recommandés"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:10
|
#: src/resources/templates/resources/tools.html:10
|
||||||
msgid "To get you started, we built a VM that you can simply import in"
|
msgid "To get you started, we built a VM that you can simply import in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Pour commencer, nous avons construit une VM que vous pouvez simplement "
|
"Pour commencer, nous avons construit une VM que tu peux simplement "
|
||||||
"importer dans"
|
"importer dans"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:10
|
#: src/resources/templates/resources/tools.html:10
|
||||||
msgid "with a bunch of useful tools."
|
msgid "with a bunch of useful tools."
|
||||||
msgstr "avec quelques outils utiles"
|
msgstr "avec quelques outils utiles"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:11
|
#: src/resources/templates/resources/tools.html:11
|
||||||
msgid "You can dowload this OVA"
|
msgid "You can dowload this OVA"
|
||||||
msgstr "Vous pouvez télécharger l'OVA"
|
msgstr "Tu peux télécharger l'OVA"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:11
|
#: src/resources/templates/resources/tools.html:11
|
||||||
msgid "here"
|
msgid "here"
|
||||||
msgstr "ici"
|
msgstr "ici"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:13
|
#: src/resources/templates/resources/tools.html:13
|
||||||
msgid "Here are the tools installed on the VM:"
|
msgid "Here are the tools installed on the VM:"
|
||||||
msgstr "Voici la liste des outils installés sur la VM:"
|
msgstr "Voici la liste des outils installés sur la VM:"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:22
|
#: src/resources/templates/resources/tools.html:22
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you want to solve the challenges on your own machine, we recommend you to "
|
"If you want to solve the challenges on your own machine, we recommend you to "
|
||||||
"use a Linux operating system."
|
"use a Linux operating system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Si vous voulez résoudre les challenges sur votre propre machine, nous "
|
"Si tu veux résoudre les challenges sur ta propre machine, nous "
|
||||||
"recommandons l'utilisation de Linux."
|
"recommandons l'utilisation de Linux."
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:23
|
#: src/resources/templates/resources/tools.html:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
|
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
|
||||||
"Windows."
|
"Windows."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"La plupart des challenges de reverse sont des binaies ELF et ne "
|
"La plupart des challenges de reverse sont des binaires ELF et ne "
|
||||||
"fonctionneront pas sur MacOS ou Windows."
|
"fonctionneront pas sur MacOS ou Windows."
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:25
|
#: src/resources/templates/resources/tools.html:25
|
||||||
msgid "Additionnaly, you will need the following languages interpreters:"
|
msgid "Additionnaly, you will need the following languages interpreters:"
|
||||||
msgstr "De plus, vous aurez besoin des interpréteurs de langage suivants :"
|
msgstr "De plus, tu auras besoin des interpréteurs de langage suivants :"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:7
|
#: src/resources/templates/resources/translate.html:7
|
||||||
msgid "Translate 42CTF"
|
msgid "Translate 42CTF"
|
||||||
msgstr "Traduire 42CTF"
|
msgstr "Traduire 42CTF"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:10
|
#: src/resources/templates/resources/translate.html:10
|
||||||
msgid "42CTF source code is publicly available on this"
|
msgid "42CTF source code is publicly available on this"
|
||||||
msgstr "Le code source de 42CTF est publiquement disponible sur ce"
|
msgstr "Le code source de 42CTF est publiquement disponible sur ce"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:11
|
#: src/resources/templates/resources/translate.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Translation does not require any programming skill and is a good way to "
|
"Translation does not require any programming skill and is a good way to "
|
||||||
"contribute if you want to help us, by making the platform always more "
|
"contribute if you want to help us, by making the platform always more "
|
||||||
"accessible."
|
"accessible."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"La traduction ne nécessite aucune compétence en programmation et constitue "
|
"La traduction ne nécessite aucune compétence en programmation et constitue "
|
||||||
"un bon moyen de contribuer si vous souhaitez nous aider, en rendant la "
|
"un bon moyen de contribuer si tu souhaites nous aider, en rendant la "
|
||||||
"plateforme toujours plus accessible."
|
"plateforme toujours plus accessible."
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:12
|
#: src/resources/templates/resources/translate.html:14
|
||||||
msgid "We have a"
|
msgid "We have a"
|
||||||
msgstr "Nous avons un"
|
msgstr "Nous avons un"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:12
|
#: src/resources/templates/resources/translate.html:14
|
||||||
msgid ""
|
msgid ""
|
||||||
"describing how to translate pages with the Django internalization module."
|
"describing how to translate pages with the Django internalization module."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"qui décrit comment traduire des pages avec le module d'internalisation de "
|
"qui décrit comment traduire des pages avec le module d'internalisation de "
|
||||||
"Django."
|
"Django."
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:13
|
#: src/resources/templates/resources/translate.html:16
|
||||||
msgid ""
|
|
||||||
"We invite you to read it to know all the details, but it merely requires you "
|
|
||||||
"to edit text files, so you see, no programming skills required ;)"
|
|
||||||
msgstr ""
|
|
||||||
"Nous vous invitons à le lire pour connaitre tous les détails, mais il suffit "
|
|
||||||
"simplement de modifier des fichiers texte, donc vous voyez, aucune "
|
|
||||||
"compétence en programmation n'est requise ;)"
|
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:14
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will need to fork the git repository, make your changes, push them, and "
|
"You will need to fork the git repository, make your changes, push them, and "
|
||||||
"then open a pull request so that we can merge your contributions into our "
|
"then open a pull request so that we can merge your contributions into our "
|
||||||
"repository."
|
"repository."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Vous devrez forker le dépôt git, effectuer vos modifications, les push, puis "
|
"Tu devras fork le dépôt git, effectuer tes modifications, les push, puis "
|
||||||
"ouvrir une pull request afin que nous puissions merge vos contributions dans "
|
"ouvrir une pull request afin que nous puissions merge tes contributions dans "
|
||||||
"notre repo."
|
"notre repo."
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:15
|
#: src/resources/templates/resources/translate.html:17
|
||||||
msgid "Don't hesitate to reach for help on"
|
msgid "Don't hesitate to reach for help on"
|
||||||
msgstr "N'hésitez pas à demander de l'aide sur"
|
msgstr "N'hésite pas à demander de l'aide sur"
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
|
"POT-Creation-Date: 2022-08-16 19:28+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -18,295 +18,281 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:7
|
#: src/resources/templates/resources/about.html:11
|
||||||
msgid "What is 42CTF ?"
|
msgid "What is 42CTF ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:10
|
#: src/resources/templates/resources/about.html:14
|
||||||
msgid "A short introduction to CTF"
|
msgid "A short introduction to CTF"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:11
|
#: src/resources/templates/resources/about.html:15
|
||||||
msgid ""
|
msgid ""
|
||||||
"CTF stands for Capture The Flag. It is a cybersecurity competition, where "
|
"CTF stands for Capture The Flag. It is a cybersecurity competition, where "
|
||||||
"participants have to solve challenges of various categories to gain points "
|
"participants have to solve challenges of various categories to gain points "
|
||||||
"and progress on the scoreboard."
|
"and progress on the scoreboard."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:12
|
#: src/resources/templates/resources/about.html:16
|
||||||
msgid ""
|
msgid ""
|
||||||
"The challenges require participants to find sort of passwords called \"flags"
|
"The challenges require participants to find sort of passwords called \"flags"
|
||||||
"\" and to submit them on the platform."
|
"\" and to submit them on the platform."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:15
|
#: src/resources/templates/resources/about.html:19
|
||||||
msgid "Functionment of 42CTF"
|
msgid "Functionment of 42CTF"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:16
|
#: src/resources/templates/resources/about.html:20
|
||||||
msgid "42CTF is what we call a permanent CTF."
|
msgid "42CTF is what we call a permanent CTF."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "Except from the"
|
msgid "Except from the"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "events"
|
msgid "events"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "challenges are available on the platform without time limitations."
|
msgid "challenges are available on the platform without time limitations."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:18
|
#: src/resources/templates/resources/about.html:22
|
||||||
msgid "The registration on 42CTF is open to everyone, 42 students or not."
|
msgid "The registration on 42CTF is open to everyone, 42 students or not."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:19
|
#: src/resources/templates/resources/about.html:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Events may or may not be open. If you would like to organize an event on "
|
"Events may or may not be open. If you would like to organize an event on "
|
||||||
"42CTF, feel free to contact us."
|
"42CTF, feel free to contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:22
|
#: src/resources/templates/resources/about.html:26
|
||||||
msgid "42CTF Team"
|
msgid "42CTF Team"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:23
|
#: src/resources/templates/resources/about.html:27
|
||||||
msgid "42CTF is managed by 42 students."
|
msgid "42CTF is managed by 42 students."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:24
|
#: src/resources/templates/resources/about.html:28
|
||||||
msgid "You can meet the team on"
|
msgid "You can meet the team on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:25
|
#: src/resources/templates/resources/about.html:29
|
||||||
msgid ""
|
msgid ""
|
||||||
"Challenges are created by various contributors, not necessarily 42 students."
|
"Challenges are created by various contributors, not necessarily 42 students."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:26
|
#: src/resources/templates/resources/about.html:30
|
||||||
msgid ""
|
msgid ""
|
||||||
"Anyone is welcome to submit their own challenges, either on the permanent "
|
"Anyone is welcome to submit their own challenges, either on the permanent "
|
||||||
"CTF or for a specific event."
|
"CTF or for a specific event."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:7
|
#: src/resources/templates/resources/becomeMember.html:8
|
||||||
|
msgid "Become a 42CTF member"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:13
|
||||||
|
msgid "Why should I become a 42CTF member ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:18
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" 42CTF is a non-profit organization with a legal status under "
|
||||||
|
"the french law (Association loi 1901).<br>\n"
|
||||||
|
" Running a CTF platform costs money, and we are not currently "
|
||||||
|
"funded by anyone except you.<br>\n"
|
||||||
|
" You can become a 42CTF member if you want to support our "
|
||||||
|
"activity :)\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:27
|
||||||
|
msgid "I want to be a member !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:30
|
||||||
|
msgid ""
|
||||||
|
"You're welcome ! To become a member, all you need to do is to donate us 15 "
|
||||||
|
"euros and your membership will last for a year."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:36
|
||||||
|
msgid "If you want to use another payment method, please contact us !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:43
|
||||||
|
msgid "What do I get ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:45
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" - A <span class='is-member'>different color</span> for your "
|
||||||
|
"pseudo in the scoreboard, to let everyone know you're a member.<br>\n"
|
||||||
|
" - The possibility to play past CTF, with challenges no longer "
|
||||||
|
"available, in the form of private events with the people of your choice."
|
||||||
|
"<br>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:51
|
||||||
|
msgid "More advantages may come later, and you can submit us your ideas."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:56
|
||||||
|
msgid "How do I claim it ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:59
|
||||||
|
msgid ""
|
||||||
|
"Once you've donated the 15 euros, you just need to contact us on discord or "
|
||||||
|
"by mail:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/create_challenge.html:7
|
||||||
msgid "Create new challenges"
|
msgid "Create new challenges"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:10
|
#: src/resources/templates/resources/create_challenge.html:10
|
||||||
msgid "If you want to create new challenges for 42CTF, send us a message on "
|
msgid "If you want to create new challenges for 42CTF, send us a message on "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:11
|
#: src/resources/templates/resources/create_challenge.html:11
|
||||||
msgid "If your challenge is offline, then you don't have to ask us in advance."
|
msgid "If your challenge is offline, then you don't have to ask us in advance."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:12
|
#: src/resources/templates/resources/create_challenge.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"If your challenge is online (for example web or pwn), then you should give "
|
"If your challenge is online (for example web or pwn), then you should give "
|
||||||
"us a short description of what you want to do."
|
"us a short description of what you want to do."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:13
|
#: src/resources/templates/resources/create_challenge.html:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"We may be able to help you or to give you resources such as dockerfiles."
|
"We may be able to help you or to give you resources such as dockerfiles."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:14
|
#: src/resources/templates/resources/create_challenge.html:14
|
||||||
msgid "We plan to make those resources publicly available in a near future."
|
msgid "We plan to make those resources publicly available in a near future."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:7
|
#: src/resources/templates/resources/donate.html:7
|
||||||
msgid "Donate"
|
msgid "Donate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:10
|
#: src/resources/templates/resources/donate.html:14
|
||||||
msgid "Become a 42CTF member"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:11
|
|
||||||
msgid ""
|
|
||||||
"42CTF is a non-profit organization with a legal status under the french law "
|
|
||||||
"(Association loi 1901)."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:12
|
|
||||||
msgid "You can support us by becoming a member and paying a fee of 15 euros."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:13
|
|
||||||
msgid "Membership is then granted for 1 year."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:15
|
|
||||||
msgid "When you become a member, you gain the following advantages:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:16
|
|
||||||
msgid ""
|
|
||||||
"A different color for your pseudo in the scoreboard, to let everyone know "
|
|
||||||
"you're a member."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:17
|
|
||||||
msgid ""
|
|
||||||
"The possibility to play again past CTF, with challenges no longer available, "
|
|
||||||
"in the form of private events with the people of your choice."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:18
|
|
||||||
msgid ""
|
|
||||||
"Ex: you played Welcome CTF 2021, and want to play it again with your friends "
|
|
||||||
"during one weekend."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:19
|
|
||||||
msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:22
|
|
||||||
msgid "More advantages may come later, and you can submit us your ideas."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:23
|
|
||||||
msgid ""
|
|
||||||
"However, we will not organize limited time CTF for members only, as this "
|
|
||||||
"will be equivalent to organize paid events, and we want 42CTF to remain FREE "
|
|
||||||
"for all."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:26
|
|
||||||
msgid "Donate to 42CTF"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:27
|
|
||||||
msgid ""
|
|
||||||
"You can donate to 42CTF or pay your membership with the following means:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:44
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you would like us to add another payment method or if you want to pay in "
|
"If you would like us to add another payment method or if you want to pay in "
|
||||||
"cash, send us a message !"
|
"cash, send us a message !"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:46
|
#: src/resources/templates/resources/donate.html:18
|
||||||
msgid ""
|
|
||||||
"If you're paying for your membership, don't forget to send us your first and "
|
|
||||||
"last name, as well as your 42CTF pseudo."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:47
|
|
||||||
msgid ""
|
|
||||||
"We will only use thoe data to keep track of our members and grant you "
|
|
||||||
"advantages, and we will never communicate them to any third party."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:50
|
|
||||||
msgid "What will we do with your money ?"
|
msgid "What will we do with your money ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:51
|
#: src/resources/templates/resources/donate.html:21
|
||||||
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Hosting a website - and especially a CTF platform - costs money:\n"
|
"Hosting a website - and especially a CTF platform - costs money: more "
|
||||||
" more precisely, it costs us <b>50 euros per month</b>.<br>\n"
|
"precisely, it costs us <b>50 euros per month</b>.\n"
|
||||||
" If we had <b>40 members</b> each year, it would be enough to "
|
" <br><br>\n"
|
||||||
"cover the hosting of 42CTF.<br>\n"
|
" If we had <b>40 members</b> each year, it would be "
|
||||||
" With the additional money, we could for example offer prizes "
|
"enough to cover the hosting of 42CTF.\n"
|
||||||
"for limited-time events, but we will update this page as soon as we reach "
|
" <br>\n"
|
||||||
"this threshold :)"
|
" We currently have %(nb_members)s members.\n"
|
||||||
|
" <br><br>\n"
|
||||||
|
" With the additional money, we could for example offer "
|
||||||
|
"prizes for limited-time events, but we will update this page as soon as we "
|
||||||
|
"reach this threshold :)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/edit.html:7
|
#: src/resources/templates/resources/edit.html:7
|
||||||
msgid "Edit this page"
|
msgid "Edit this page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/edit.html:12
|
#: src/resources/templates/resources/edit.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"More information coming soon, but as you can guess it involves making a pull "
|
"More information coming soon, but as you can guess it involves making a pull "
|
||||||
"request to your favorite"
|
"request to your favorite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:7
|
#: src/resources/templates/resources/tools.html:7
|
||||||
msgid "Recommended Tools"
|
msgid "Recommended Tools"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:10
|
#: src/resources/templates/resources/tools.html:10
|
||||||
msgid "To get you started, we built a VM that you can simply import in"
|
msgid "To get you started, we built a VM that you can simply import in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:10
|
#: src/resources/templates/resources/tools.html:10
|
||||||
msgid "with a bunch of useful tools."
|
msgid "with a bunch of useful tools."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:11
|
#: src/resources/templates/resources/tools.html:11
|
||||||
msgid "You can dowload this OVA"
|
msgid "You can dowload this OVA"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:11
|
#: src/resources/templates/resources/tools.html:11
|
||||||
msgid "here"
|
msgid "here"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:13
|
#: src/resources/templates/resources/tools.html:13
|
||||||
msgid "Here are the tools installed on the VM:"
|
msgid "Here are the tools installed on the VM:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:22
|
#: src/resources/templates/resources/tools.html:22
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you want to solve the challenges on your own machine, we recommend you to "
|
"If you want to solve the challenges on your own machine, we recommend you to "
|
||||||
"use a Linux operating system."
|
"use a Linux operating system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:23
|
#: src/resources/templates/resources/tools.html:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
|
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
|
||||||
"Windows."
|
"Windows."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:25
|
#: src/resources/templates/resources/tools.html:25
|
||||||
msgid "Additionnaly, you will need the following languages interpreters:"
|
msgid "Additionnaly, you will need the following languages interpreters:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:7
|
#: src/resources/templates/resources/translate.html:7
|
||||||
msgid "Translate 42CTF"
|
msgid "Translate 42CTF"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:10
|
#: src/resources/templates/resources/translate.html:10
|
||||||
msgid "42CTF source code is publicly available on this"
|
msgid "42CTF source code is publicly available on this"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:11
|
#: src/resources/templates/resources/translate.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Translation does not require any programming skill and is a good way to "
|
"Translation does not require any programming skill and is a good way to "
|
||||||
"contribute if you want to help us, by making the platform always more "
|
"contribute if you want to help us, by making the platform always more "
|
||||||
"accessible."
|
"accessible."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:12
|
#: src/resources/templates/resources/translate.html:14
|
||||||
msgid "We have a"
|
msgid "We have a"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:12
|
#: src/resources/templates/resources/translate.html:14
|
||||||
msgid ""
|
msgid ""
|
||||||
"describing how to translate pages with the Django internalization module."
|
"describing how to translate pages with the Django internalization module."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:13
|
#: src/resources/templates/resources/translate.html:16
|
||||||
msgid ""
|
|
||||||
"We invite you to read it to know all the details, but it merely requires you "
|
|
||||||
"to edit text files, so you see, no programming skills required ;)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:14
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will need to fork the git repository, make your changes, push them, and "
|
"You will need to fork the git repository, make your changes, push them, and "
|
||||||
"then open a pull request so that we can merge your contributions into our "
|
"then open a pull request so that we can merge your contributions into our "
|
||||||
"repository."
|
"repository."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:15
|
#: src/resources/templates/resources/translate.html:17
|
||||||
msgid "Don't hesitate to reach for help on"
|
msgid "Don't hesitate to reach for help on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
|
"POT-Creation-Date: 2022-08-16 19:28+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -18,15 +18,15 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:7
|
#: src/resources/templates/resources/about.html:11
|
||||||
msgid "What is 42CTF ?"
|
msgid "What is 42CTF ?"
|
||||||
msgstr "42CTFとは?"
|
msgstr "42CTFとは?"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:10
|
#: src/resources/templates/resources/about.html:14
|
||||||
msgid "A short introduction to CTF"
|
msgid "A short introduction to CTF"
|
||||||
msgstr "CTFについての簡単な紹介"
|
msgstr "CTFについての簡単な紹介"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:11
|
#: src/resources/templates/resources/about.html:15
|
||||||
msgid ""
|
msgid ""
|
||||||
"CTF stands for Capture The Flag. It is a cybersecurity competition, where "
|
"CTF stands for Capture The Flag. It is a cybersecurity competition, where "
|
||||||
"participants have to solve challenges of various categories to gain points "
|
"participants have to solve challenges of various categories to gain points "
|
||||||
|
@ -36,7 +36,7 @@ msgstr ""
|
||||||
"加者は様々なカテゴリーの課題を解決してポイントを獲得し、スコアボードでの順位"
|
"加者は様々なカテゴリーの課題を解決してポイントを獲得し、スコアボードでの順位"
|
||||||
"を上げていきます。"
|
"を上げていきます。"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:12
|
#: src/resources/templates/resources/about.html:16
|
||||||
msgid ""
|
msgid ""
|
||||||
"The challenges require participants to find sort of passwords called \"flags"
|
"The challenges require participants to find sort of passwords called \"flags"
|
||||||
"\" and to submit them on the platform."
|
"\" and to submit them on the platform."
|
||||||
|
@ -44,31 +44,31 @@ msgstr ""
|
||||||
"この課題では、参加者は\"フラグ\"と呼ばれるパスワードを見つけて、プラット"
|
"この課題では、参加者は\"フラグ\"と呼ばれるパスワードを見つけて、プラット"
|
||||||
"フォームに送信することになっています。"
|
"フォームに送信することになっています。"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:15
|
#: src/resources/templates/resources/about.html:19
|
||||||
msgid "Functionment of 42CTF"
|
msgid "Functionment of 42CTF"
|
||||||
msgstr "42CTFの機能紹介"
|
msgstr "42CTFの機能紹介"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:16
|
#: src/resources/templates/resources/about.html:20
|
||||||
msgid "42CTF is what we call a permanent CTF."
|
msgid "42CTF is what we call a permanent CTF."
|
||||||
msgstr "42CTFは、いわゆる永続的CTFです。"
|
msgstr "42CTFは、いわゆる永続的CTFです。"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "Except from the"
|
msgid "Except from the"
|
||||||
msgstr "こちらを除き"
|
msgstr "こちらを除き"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "events"
|
msgid "events"
|
||||||
msgstr "(イベント)"
|
msgstr "(イベント)"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "challenges are available on the platform without time limitations."
|
msgid "challenges are available on the platform without time limitations."
|
||||||
msgstr "時間制限なしにプラットフォーム上でチャレンジ可能です。"
|
msgstr "時間制限なしにプラットフォーム上でチャレンジ可能です。"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:18
|
#: src/resources/templates/resources/about.html:22
|
||||||
msgid "The registration on 42CTF is open to everyone, 42 students or not."
|
msgid "The registration on 42CTF is open to everyone, 42 students or not."
|
||||||
msgstr "42CTFへの登録は、42の学生であるかどうかに関わらず、誰でも可能です。"
|
msgstr "42CTFへの登録は、42の学生であるかどうかに関わらず、誰でも可能です。"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:19
|
#: src/resources/templates/resources/about.html:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Events may or may not be open. If you would like to organize an event on "
|
"Events may or may not be open. If you would like to organize an event on "
|
||||||
"42CTF, feel free to contact us."
|
"42CTF, feel free to contact us."
|
||||||
|
@ -76,24 +76,24 @@ msgstr ""
|
||||||
"イベントは開催する場合としない場合があります。42CTFでのイベント開催をご希望の"
|
"イベントは開催する場合としない場合があります。42CTFでのイベント開催をご希望の"
|
||||||
"方は、お気軽にお問い合わせください。"
|
"方は、お気軽にお問い合わせください。"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:22
|
#: src/resources/templates/resources/about.html:26
|
||||||
msgid "42CTF Team"
|
msgid "42CTF Team"
|
||||||
msgstr "42CTFチーム"
|
msgstr "42CTFチーム"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:23
|
#: src/resources/templates/resources/about.html:27
|
||||||
msgid "42CTF is managed by 42 students."
|
msgid "42CTF is managed by 42 students."
|
||||||
msgstr "42CTFは42の学生によって運営されています。"
|
msgstr "42CTFは42の学生によって運営されています。"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:24
|
#: src/resources/templates/resources/about.html:28
|
||||||
msgid "You can meet the team on"
|
msgid "You can meet the team on"
|
||||||
msgstr "こちらでチームに会えます:"
|
msgstr "こちらでチームに会えます:"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:25
|
#: src/resources/templates/resources/about.html:29
|
||||||
msgid ""
|
msgid ""
|
||||||
"Challenges are created by various contributors, not necessarily 42 students."
|
"Challenges are created by various contributors, not necessarily 42 students."
|
||||||
msgstr "課題は42の学生だけではなく、様々な協力者によって作られます。"
|
msgstr "課題は42の学生だけではなく、様々な協力者によって作られます。"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:26
|
#: src/resources/templates/resources/about.html:30
|
||||||
msgid ""
|
msgid ""
|
||||||
"Anyone is welcome to submit their own challenges, either on the permanent "
|
"Anyone is welcome to submit their own challenges, either on the permanent "
|
||||||
"CTF or for a specific event."
|
"CTF or for a specific event."
|
||||||
|
@ -101,20 +101,87 @@ msgstr ""
|
||||||
"常設のCTFでも、特定のイベントでも、誰でも自身が作成した課題を提出することがで"
|
"常設のCTFでも、特定のイベントでも、誰でも自身が作成した課題を提出することがで"
|
||||||
"きます。"
|
"きます。"
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:7
|
#: src/resources/templates/resources/becomeMember.html:8
|
||||||
|
msgid "Become a 42CTF member"
|
||||||
|
msgstr "42CTFのメンバーになる"
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:13
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Become a 42CTF member"
|
||||||
|
msgid "Why should I become a 42CTF member ?"
|
||||||
|
msgstr "42CTFのメンバーになる"
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:18
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" 42CTF is a non-profit organization with a legal status under "
|
||||||
|
"the french law (Association loi 1901).<br>\n"
|
||||||
|
" Running a CTF platform costs money, and we are not currently "
|
||||||
|
"funded by anyone except you.<br>\n"
|
||||||
|
" You can become a 42CTF member if you want to support our "
|
||||||
|
"activity :)\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:27
|
||||||
|
msgid "I want to be a member !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:30
|
||||||
|
msgid ""
|
||||||
|
"You're welcome ! To become a member, all you need to do is to donate us 15 "
|
||||||
|
"euros and your membership will last for a year."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:36
|
||||||
|
msgid "If you want to use another payment method, please contact us !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:43
|
||||||
|
msgid "What do I get ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:45
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" - A <span class='is-member'>different color</span> for your "
|
||||||
|
"pseudo in the scoreboard, to let everyone know you're a member.<br>\n"
|
||||||
|
" - The possibility to play past CTF, with challenges no longer "
|
||||||
|
"available, in the form of private events with the people of your choice."
|
||||||
|
"<br>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:51
|
||||||
|
msgid "More advantages may come later, and you can submit us your ideas."
|
||||||
|
msgstr ""
|
||||||
|
"もっと多くの利点があるかもしれませんし、あなたのアイデアを私たちに提供してい"
|
||||||
|
"ただくことも可能です。"
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:56
|
||||||
|
msgid "How do I claim it ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:59
|
||||||
|
msgid ""
|
||||||
|
"Once you've donated the 15 euros, you just need to contact us on discord or "
|
||||||
|
"by mail:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/create_challenge.html:7
|
||||||
msgid "Create new challenges"
|
msgid "Create new challenges"
|
||||||
msgstr "新しい課題を作成する"
|
msgstr "新しい課題を作成する"
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:10
|
#: src/resources/templates/resources/create_challenge.html:10
|
||||||
msgid "If you want to create new challenges for 42CTF, send us a message on "
|
msgid "If you want to create new challenges for 42CTF, send us a message on "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"42CTFの新しい課題を作成したい方は、こちらでメッセージを送ってください:"
|
"42CTFの新しい課題を作成したい方は、こちらでメッセージを送ってください:"
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:11
|
#: src/resources/templates/resources/create_challenge.html:11
|
||||||
msgid "If your challenge is offline, then you don't have to ask us in advance."
|
msgid "If your challenge is offline, then you don't have to ask us in advance."
|
||||||
msgstr "オフラインでの課題であれば、事前にご相談いただく必要はありません。"
|
msgstr "オフラインでの課題であれば、事前にご相談いただく必要はありません。"
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:12
|
#: src/resources/templates/resources/create_challenge.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"If your challenge is online (for example web or pwn), then you should give "
|
"If your challenge is online (for example web or pwn), then you should give "
|
||||||
"us a short description of what you want to do."
|
"us a short description of what you want to do."
|
||||||
|
@ -122,104 +189,22 @@ msgstr ""
|
||||||
"課題がオンラインの場合(例:webやpwn)、何をしたいのかを簡単に説明してくださ"
|
"課題がオンラインの場合(例:webやpwn)、何をしたいのかを簡単に説明してくださ"
|
||||||
"い。"
|
"い。"
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:13
|
#: src/resources/templates/resources/create_challenge.html:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"We may be able to help you or to give you resources such as dockerfiles."
|
"We may be able to help you or to give you resources such as dockerfiles."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"私たちがお手伝いをさせていただいたり、dockerfileなどのリソースを提供させてい"
|
"私たちがお手伝いをさせていただいたり、dockerfileなどのリソースを提供させてい"
|
||||||
"ただく場合があります。"
|
"ただく場合があります。"
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:14
|
#: src/resources/templates/resources/create_challenge.html:14
|
||||||
msgid "We plan to make those resources publicly available in a near future."
|
msgid "We plan to make those resources publicly available in a near future."
|
||||||
msgstr "近日、これらのリソースを公開する予定です。"
|
msgstr "近日、これらのリソースを公開する予定です。"
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:7
|
#: src/resources/templates/resources/donate.html:7
|
||||||
msgid "Donate"
|
msgid "Donate"
|
||||||
msgstr "寄付"
|
msgstr "寄付"
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:10
|
#: src/resources/templates/resources/donate.html:14
|
||||||
msgid "Become a 42CTF member"
|
|
||||||
msgstr "42CTFのメンバーになる"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:11
|
|
||||||
msgid ""
|
|
||||||
"42CTF is a non-profit organization with a legal status under the french law "
|
|
||||||
"(Association loi 1901)."
|
|
||||||
msgstr ""
|
|
||||||
"42CTFは、フランスの法律(Association loi 1901)に基づく法的地位を有する非営利"
|
|
||||||
"団体です。"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:12
|
|
||||||
msgid "You can support us by becoming a member and paying a fee of 15 euros."
|
|
||||||
msgstr ""
|
|
||||||
"メンバーになって、15ユーロの会費を払うことで、私たちをサポートすることができ"
|
|
||||||
"ます。"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:13
|
|
||||||
msgid "Membership is then granted for 1 year."
|
|
||||||
msgstr "その後、1年間のメンバーシップが付与されます。"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:15
|
|
||||||
msgid "When you become a member, you gain the following advantages:"
|
|
||||||
msgstr "会員になると、以下のようなメリットがあります:"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:16
|
|
||||||
msgid ""
|
|
||||||
"A different color for your pseudo in the scoreboard, to let everyone know "
|
|
||||||
"you're a member."
|
|
||||||
msgstr ""
|
|
||||||
"スコアボードに表示されるアカウント名の色が変わり、メンバーであることが誰にで"
|
|
||||||
"もわかるように。"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:17
|
|
||||||
msgid ""
|
|
||||||
"The possibility to play again past CTF, with challenges no longer available, "
|
|
||||||
"in the form of private events with the people of your choice."
|
|
||||||
msgstr ""
|
|
||||||
"チャレンジができなくなった過去のCTFを、好きな人とプライベートイベントの形で再"
|
|
||||||
"びチャレンジできる可能性。"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:18
|
|
||||||
msgid ""
|
|
||||||
"Ex: you played Welcome CTF 2021, and want to play it again with your friends "
|
|
||||||
"during one weekend."
|
|
||||||
msgstr ""
|
|
||||||
"例:Welcome CTF 2021 に一度チャレンジして、週末に友達ともう一度チャレンジした"
|
|
||||||
"いと思っている方。"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:19
|
|
||||||
msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
|
|
||||||
msgstr ""
|
|
||||||
"または、Welcome CTF 2021 への参加資格がなかったため、チャレンジできなかった"
|
|
||||||
"方。"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:22
|
|
||||||
msgid "More advantages may come later, and you can submit us your ideas."
|
|
||||||
msgstr ""
|
|
||||||
"もっと多くの利点があるかもしれませんし、あなたのアイデアを私たちに提供してい"
|
|
||||||
"ただくことも可能です。"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:23
|
|
||||||
msgid ""
|
|
||||||
"However, we will not organize limited time CTF for members only, as this "
|
|
||||||
"will be equivalent to organize paid events, and we want 42CTF to remain FREE "
|
|
||||||
"for all."
|
|
||||||
msgstr ""
|
|
||||||
"しかし、メンバーのみ参加できる期間限定CTFを開催することはありません。これは、"
|
|
||||||
"有料のイベントを開催することと同義であり、私たちは42CTFがすべての人にとって無"
|
|
||||||
"料であることを望んでいます。"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:26
|
|
||||||
msgid "Donate to 42CTF"
|
|
||||||
msgstr "42CTFに寄付する"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:27
|
|
||||||
msgid ""
|
|
||||||
"You can donate to 42CTF or pay your membership with the following means:"
|
|
||||||
msgstr ""
|
|
||||||
"42CTFへのご寄付やメンバーシップのお支払いは、以下の手段で行うことができます:"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:44
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you would like us to add another payment method or if you want to pay in "
|
"If you would like us to add another payment method or if you want to pay in "
|
||||||
"cash, send us a message !"
|
"cash, send us a message !"
|
||||||
|
@ -227,42 +212,31 @@ msgstr ""
|
||||||
"他のお支払い方法や現金でのお支払いをご希望の場合は、メッセージをお送りくださ"
|
"他のお支払い方法や現金でのお支払いをご希望の場合は、メッセージをお送りくださ"
|
||||||
"い。"
|
"い。"
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:46
|
#: src/resources/templates/resources/donate.html:18
|
||||||
msgid ""
|
|
||||||
"If you're paying for your membership, don't forget to send us your first and "
|
|
||||||
"last name, as well as your 42CTF pseudo."
|
|
||||||
msgstr ""
|
|
||||||
"メンバーシップをお支払いになる場合は、氏名と42CTFのアカウント名を忘れずにお送"
|
|
||||||
"りください。"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:47
|
|
||||||
msgid ""
|
|
||||||
"We will only use thoe data to keep track of our members and grant you "
|
|
||||||
"advantages, and we will never communicate them to any third party."
|
|
||||||
msgstr ""
|
|
||||||
"これらのデータは、メンバーの管理と特典の付与のためにのみ使用し、第三者に提供"
|
|
||||||
"することはありません。"
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:50
|
|
||||||
msgid "What will we do with your money ?"
|
msgid "What will we do with your money ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:51
|
#: src/resources/templates/resources/donate.html:21
|
||||||
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Hosting a website - and especially a CTF platform - costs money:\n"
|
"Hosting a website - and especially a CTF platform - costs money: more "
|
||||||
" more precisely, it costs us <b>50 euros per month</b>.<br>\n"
|
"precisely, it costs us <b>50 euros per month</b>.\n"
|
||||||
" If we had <b>40 members</b> each year, it would be enough to "
|
" <br><br>\n"
|
||||||
"cover the hosting of 42CTF.<br>\n"
|
" If we had <b>40 members</b> each year, it would be "
|
||||||
" With the additional money, we could for example offer prizes "
|
"enough to cover the hosting of 42CTF.\n"
|
||||||
"for limited-time events, but we will update this page as soon as we reach "
|
" <br>\n"
|
||||||
"this threshold :)"
|
" We currently have %(nb_members)s members.\n"
|
||||||
|
" <br><br>\n"
|
||||||
|
" With the additional money, we could for example offer "
|
||||||
|
"prizes for limited-time events, but we will update this page as soon as we "
|
||||||
|
"reach this threshold :)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/edit.html:7
|
#: src/resources/templates/resources/edit.html:7
|
||||||
msgid "Edit this page"
|
msgid "Edit this page"
|
||||||
msgstr "このページの編集"
|
msgstr "このページの編集"
|
||||||
|
|
||||||
#: resources/templates/resources/edit.html:12
|
#: src/resources/templates/resources/edit.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"More information coming soon, but as you can guess it involves making a pull "
|
"More information coming soon, but as you can guess it involves making a pull "
|
||||||
"request to your favorite"
|
"request to your favorite"
|
||||||
|
@ -270,31 +244,31 @@ msgstr ""
|
||||||
"詳細は近日中にお知らせしますが、お察しの通り、以下にプルリクエストをすること"
|
"詳細は近日中にお知らせしますが、お察しの通り、以下にプルリクエストをすること"
|
||||||
"になります:"
|
"になります:"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:7
|
#: src/resources/templates/resources/tools.html:7
|
||||||
msgid "Recommended Tools"
|
msgid "Recommended Tools"
|
||||||
msgstr "おすすめのツール"
|
msgstr "おすすめのツール"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:10
|
#: src/resources/templates/resources/tools.html:10
|
||||||
msgid "To get you started, we built a VM that you can simply import in"
|
msgid "To get you started, we built a VM that you can simply import in"
|
||||||
msgstr "手始めに、Virtual BoxでインストールするだけのVMを構築しました:"
|
msgstr "手始めに、Virtual BoxでインストールするだけのVMを構築しました:"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:10
|
#: src/resources/templates/resources/tools.html:10
|
||||||
msgid "with a bunch of useful tools."
|
msgid "with a bunch of useful tools."
|
||||||
msgstr "便利なツールを使用しました。"
|
msgstr "便利なツールを使用しました。"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:11
|
#: src/resources/templates/resources/tools.html:11
|
||||||
msgid "You can dowload this OVA"
|
msgid "You can dowload this OVA"
|
||||||
msgstr "このOVAはこちらからダウンロードできます:"
|
msgstr "このOVAはこちらからダウンロードできます:"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:11
|
#: src/resources/templates/resources/tools.html:11
|
||||||
msgid "here"
|
msgid "here"
|
||||||
msgstr "こちら"
|
msgstr "こちら"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:13
|
#: src/resources/templates/resources/tools.html:13
|
||||||
msgid "Here are the tools installed on the VM:"
|
msgid "Here are the tools installed on the VM:"
|
||||||
msgstr "以下に、VMにインストールされたツールを紹介します:"
|
msgstr "以下に、VMにインストールされたツールを紹介します:"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:22
|
#: src/resources/templates/resources/tools.html:22
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you want to solve the challenges on your own machine, we recommend you to "
|
"If you want to solve the challenges on your own machine, we recommend you to "
|
||||||
"use a Linux operating system."
|
"use a Linux operating system."
|
||||||
|
@ -302,25 +276,25 @@ msgstr ""
|
||||||
"自分のマシンで課題にチャレンジしたい場合は、Linux OSを使用することをお勧めし"
|
"自分のマシンで課題にチャレンジしたい場合は、Linux OSを使用することをお勧めし"
|
||||||
"ます。"
|
"ます。"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:23
|
#: src/resources/templates/resources/tools.html:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
|
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
|
||||||
"Windows."
|
"Windows."
|
||||||
msgstr "ReversingのほとんどはELFバイナリで、Mac OSやWindowsでは動作しません。"
|
msgstr "ReversingのほとんどはELFバイナリで、Mac OSやWindowsでは動作しません。"
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:25
|
#: src/resources/templates/resources/tools.html:25
|
||||||
msgid "Additionnaly, you will need the following languages interpreters:"
|
msgid "Additionnaly, you will need the following languages interpreters:"
|
||||||
msgstr "さらに、以下の言語のインタプリタが必要です。"
|
msgstr "さらに、以下の言語のインタプリタが必要です。"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:7
|
#: src/resources/templates/resources/translate.html:7
|
||||||
msgid "Translate 42CTF"
|
msgid "Translate 42CTF"
|
||||||
msgstr "42CTFを翻訳"
|
msgstr "42CTFを翻訳"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:10
|
#: src/resources/templates/resources/translate.html:10
|
||||||
msgid "42CTF source code is publicly available on this"
|
msgid "42CTF source code is publicly available on this"
|
||||||
msgstr "42CTFのソースコードはこのサイトで公開されています。:"
|
msgstr "42CTFのソースコードはこのサイトで公開されています。:"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:11
|
#: src/resources/templates/resources/translate.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Translation does not require any programming skill and is a good way to "
|
"Translation does not require any programming skill and is a good way to "
|
||||||
"contribute if you want to help us, by making the platform always more "
|
"contribute if you want to help us, by making the platform always more "
|
||||||
|
@ -329,26 +303,18 @@ msgstr ""
|
||||||
"翻訳にはプログラミングのスキルは必要ありません。プラットフォームをより使いや"
|
"翻訳にはプログラミングのスキルは必要ありません。プラットフォームをより使いや"
|
||||||
"すくすることで、私たちに貢献したいとお考えの方には良い方法です。"
|
"すくすることで、私たちに貢献したいとお考えの方には良い方法です。"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:12
|
#: src/resources/templates/resources/translate.html:14
|
||||||
msgid "We have a"
|
msgid "We have a"
|
||||||
msgstr "こちらがあります。:"
|
msgstr "こちらがあります。:"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:12
|
#: src/resources/templates/resources/translate.html:14
|
||||||
msgid ""
|
msgid ""
|
||||||
"describing how to translate pages with the Django internalization module."
|
"describing how to translate pages with the Django internalization module."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"djangoのinternalizationモジュールを使ってページを翻訳する方法を説明したもので"
|
"djangoのinternalizationモジュールを使ってページを翻訳する方法を説明したもので"
|
||||||
"す。"
|
"す。"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:13
|
#: src/resources/templates/resources/translate.html:16
|
||||||
msgid ""
|
|
||||||
"We invite you to read it to know all the details, but it merely requires you "
|
|
||||||
"to edit text files, so you see, no programming skills required ;)"
|
|
||||||
msgstr ""
|
|
||||||
"詳細はぜひ読んでいただきたいのですが、単にテキストファイルを編集するだけなの"
|
|
||||||
"で、プログラミングのスキルは必要ありません ;)"
|
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:14
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will need to fork the git repository, make your changes, push them, and "
|
"You will need to fork the git repository, make your changes, push them, and "
|
||||||
"then open a pull request so that we can merge your contributions into our "
|
"then open a pull request so that we can merge your contributions into our "
|
||||||
|
@ -358,6 +324,90 @@ msgstr ""
|
||||||
"作成していただくことで、皆さんの貢献を私たちのリポジトリにマージすることがで"
|
"作成していただくことで、皆さんの貢献を私たちのリポジトリにマージすることがで"
|
||||||
"きます。"
|
"きます。"
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:15
|
#: src/resources/templates/resources/translate.html:17
|
||||||
msgid "Don't hesitate to reach for help on"
|
msgid "Don't hesitate to reach for help on"
|
||||||
msgstr "躊躇せずに、こちらで助けを求めてください。:"
|
msgstr "躊躇せずに、こちらで助けを求めてください。:"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "42CTF is a non-profit organization with a legal status under the french "
|
||||||
|
#~ "law (Association loi 1901)."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "42CTFは、フランスの法律(Association loi 1901)に基づく法的地位を有する非"
|
||||||
|
#~ "営利団体です。"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "You can support us by becoming a member and paying a fee of 15 euros."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "メンバーになって、15ユーロの会費を払うことで、私たちをサポートすることがで"
|
||||||
|
#~ "きます。"
|
||||||
|
|
||||||
|
#~ msgid "Membership is then granted for 1 year."
|
||||||
|
#~ msgstr "その後、1年間のメンバーシップが付与されます。"
|
||||||
|
|
||||||
|
#~ msgid "When you become a member, you gain the following advantages:"
|
||||||
|
#~ msgstr "会員になると、以下のようなメリットがあります:"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "A different color for your pseudo in the scoreboard, to let everyone know "
|
||||||
|
#~ "you're a member."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "スコアボードに表示されるアカウント名の色が変わり、メンバーであることが誰に"
|
||||||
|
#~ "でもわかるように。"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The possibility to play again past CTF, with challenges no longer "
|
||||||
|
#~ "available, in the form of private events with the people of your choice."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "チャレンジができなくなった過去のCTFを、好きな人とプライベートイベントの形"
|
||||||
|
#~ "で再びチャレンジできる可能性。"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Ex: you played Welcome CTF 2021, and want to play it again with your "
|
||||||
|
#~ "friends during one weekend."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "例:Welcome CTF 2021 に一度チャレンジして、週末に友達ともう一度チャレンジ"
|
||||||
|
#~ "したいと思っている方。"
|
||||||
|
|
||||||
|
#~ msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "または、Welcome CTF 2021 への参加資格がなかったため、チャレンジできなかっ"
|
||||||
|
#~ "た方。"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "However, we will not organize limited time CTF for members only, as this "
|
||||||
|
#~ "will be equivalent to organize paid events, and we want 42CTF to remain "
|
||||||
|
#~ "FREE for all."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "しかし、メンバーのみ参加できる期間限定CTFを開催することはありません。これ"
|
||||||
|
#~ "は、有料のイベントを開催することと同義であり、私たちは42CTFがすべての人に"
|
||||||
|
#~ "とって無料であることを望んでいます。"
|
||||||
|
|
||||||
|
#~ msgid "Donate to 42CTF"
|
||||||
|
#~ msgstr "42CTFに寄付する"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "You can donate to 42CTF or pay your membership with the following means:"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "42CTFへのご寄付やメンバーシップのお支払いは、以下の手段で行うことができま"
|
||||||
|
#~ "す:"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "If you're paying for your membership, don't forget to send us your first "
|
||||||
|
#~ "and last name, as well as your 42CTF pseudo."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "メンバーシップをお支払いになる場合は、氏名と42CTFのアカウント名を忘れずに"
|
||||||
|
#~ "お送りください。"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "We will only use thoe data to keep track of our members and grant you "
|
||||||
|
#~ "advantages, and we will never communicate them to any third party."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "これらのデータは、メンバーの管理と特典の付与のためにのみ使用し、第三者に提"
|
||||||
|
#~ "供することはありません。"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "We invite you to read it to know all the details, but it merely requires "
|
||||||
|
#~ "you to edit text files, so you see, no programming skills required ;)"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "詳細はぜひ読んでいただきたいのですが、単にテキストファイルを編集するだけな"
|
||||||
|
#~ "ので、プログラミングのスキルは必要ありません ;)"
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
|
"POT-Creation-Date: 2022-08-16 19:28+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -20,295 +20,281 @@ msgstr ""
|
||||||
"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
|
"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
|
||||||
"%100>=11 && n%100<=14)? 2 : 3);\n"
|
"%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:7
|
#: src/resources/templates/resources/about.html:11
|
||||||
msgid "What is 42CTF ?"
|
msgid "What is 42CTF ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:10
|
#: src/resources/templates/resources/about.html:14
|
||||||
msgid "A short introduction to CTF"
|
msgid "A short introduction to CTF"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:11
|
#: src/resources/templates/resources/about.html:15
|
||||||
msgid ""
|
msgid ""
|
||||||
"CTF stands for Capture The Flag. It is a cybersecurity competition, where "
|
"CTF stands for Capture The Flag. It is a cybersecurity competition, where "
|
||||||
"participants have to solve challenges of various categories to gain points "
|
"participants have to solve challenges of various categories to gain points "
|
||||||
"and progress on the scoreboard."
|
"and progress on the scoreboard."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:12
|
#: src/resources/templates/resources/about.html:16
|
||||||
msgid ""
|
msgid ""
|
||||||
"The challenges require participants to find sort of passwords called \"flags"
|
"The challenges require participants to find sort of passwords called \"flags"
|
||||||
"\" and to submit them on the platform."
|
"\" and to submit them on the platform."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:15
|
#: src/resources/templates/resources/about.html:19
|
||||||
msgid "Functionment of 42CTF"
|
msgid "Functionment of 42CTF"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:16
|
#: src/resources/templates/resources/about.html:20
|
||||||
msgid "42CTF is what we call a permanent CTF."
|
msgid "42CTF is what we call a permanent CTF."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "Except from the"
|
msgid "Except from the"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "events"
|
msgid "events"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:17
|
#: src/resources/templates/resources/about.html:21
|
||||||
msgid "challenges are available on the platform without time limitations."
|
msgid "challenges are available on the platform without time limitations."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:18
|
#: src/resources/templates/resources/about.html:22
|
||||||
msgid "The registration on 42CTF is open to everyone, 42 students or not."
|
msgid "The registration on 42CTF is open to everyone, 42 students or not."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:19
|
#: src/resources/templates/resources/about.html:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Events may or may not be open. If you would like to organize an event on "
|
"Events may or may not be open. If you would like to organize an event on "
|
||||||
"42CTF, feel free to contact us."
|
"42CTF, feel free to contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:22
|
#: src/resources/templates/resources/about.html:26
|
||||||
msgid "42CTF Team"
|
msgid "42CTF Team"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:23
|
#: src/resources/templates/resources/about.html:27
|
||||||
msgid "42CTF is managed by 42 students."
|
msgid "42CTF is managed by 42 students."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:24
|
#: src/resources/templates/resources/about.html:28
|
||||||
msgid "You can meet the team on"
|
msgid "You can meet the team on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:25
|
#: src/resources/templates/resources/about.html:29
|
||||||
msgid ""
|
msgid ""
|
||||||
"Challenges are created by various contributors, not necessarily 42 students."
|
"Challenges are created by various contributors, not necessarily 42 students."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/42ctf.html:26
|
#: src/resources/templates/resources/about.html:30
|
||||||
msgid ""
|
msgid ""
|
||||||
"Anyone is welcome to submit their own challenges, either on the permanent "
|
"Anyone is welcome to submit their own challenges, either on the permanent "
|
||||||
"CTF or for a specific event."
|
"CTF or for a specific event."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:7
|
#: src/resources/templates/resources/becomeMember.html:8
|
||||||
|
msgid "Become a 42CTF member"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:13
|
||||||
|
msgid "Why should I become a 42CTF member ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:18
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" 42CTF is a non-profit organization with a legal status under "
|
||||||
|
"the french law (Association loi 1901).<br>\n"
|
||||||
|
" Running a CTF platform costs money, and we are not currently "
|
||||||
|
"funded by anyone except you.<br>\n"
|
||||||
|
" You can become a 42CTF member if you want to support our "
|
||||||
|
"activity :)\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:27
|
||||||
|
msgid "I want to be a member !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:30
|
||||||
|
msgid ""
|
||||||
|
"You're welcome ! To become a member, all you need to do is to donate us 15 "
|
||||||
|
"euros and your membership will last for a year."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:36
|
||||||
|
msgid "If you want to use another payment method, please contact us !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:43
|
||||||
|
msgid "What do I get ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:45
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" - A <span class='is-member'>different color</span> for your "
|
||||||
|
"pseudo in the scoreboard, to let everyone know you're a member.<br>\n"
|
||||||
|
" - The possibility to play past CTF, with challenges no longer "
|
||||||
|
"available, in the form of private events with the people of your choice."
|
||||||
|
"<br>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:51
|
||||||
|
msgid "More advantages may come later, and you can submit us your ideas."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:56
|
||||||
|
msgid "How do I claim it ?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/becomeMember.html:59
|
||||||
|
msgid ""
|
||||||
|
"Once you've donated the 15 euros, you just need to contact us on discord or "
|
||||||
|
"by mail:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/resources/templates/resources/create_challenge.html:7
|
||||||
msgid "Create new challenges"
|
msgid "Create new challenges"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:10
|
#: src/resources/templates/resources/create_challenge.html:10
|
||||||
msgid "If you want to create new challenges for 42CTF, send us a message on "
|
msgid "If you want to create new challenges for 42CTF, send us a message on "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:11
|
#: src/resources/templates/resources/create_challenge.html:11
|
||||||
msgid "If your challenge is offline, then you don't have to ask us in advance."
|
msgid "If your challenge is offline, then you don't have to ask us in advance."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:12
|
#: src/resources/templates/resources/create_challenge.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"If your challenge is online (for example web or pwn), then you should give "
|
"If your challenge is online (for example web or pwn), then you should give "
|
||||||
"us a short description of what you want to do."
|
"us a short description of what you want to do."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:13
|
#: src/resources/templates/resources/create_challenge.html:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"We may be able to help you or to give you resources such as dockerfiles."
|
"We may be able to help you or to give you resources such as dockerfiles."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/create_challenge.html:14
|
#: src/resources/templates/resources/create_challenge.html:14
|
||||||
msgid "We plan to make those resources publicly available in a near future."
|
msgid "We plan to make those resources publicly available in a near future."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:7
|
#: src/resources/templates/resources/donate.html:7
|
||||||
msgid "Donate"
|
msgid "Donate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:10
|
#: src/resources/templates/resources/donate.html:14
|
||||||
msgid "Become a 42CTF member"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:11
|
|
||||||
msgid ""
|
|
||||||
"42CTF is a non-profit organization with a legal status under the french law "
|
|
||||||
"(Association loi 1901)."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:12
|
|
||||||
msgid "You can support us by becoming a member and paying a fee of 15 euros."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:13
|
|
||||||
msgid "Membership is then granted for 1 year."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:15
|
|
||||||
msgid "When you become a member, you gain the following advantages:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:16
|
|
||||||
msgid ""
|
|
||||||
"A different color for your pseudo in the scoreboard, to let everyone know "
|
|
||||||
"you're a member."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:17
|
|
||||||
msgid ""
|
|
||||||
"The possibility to play again past CTF, with challenges no longer available, "
|
|
||||||
"in the form of private events with the people of your choice."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:18
|
|
||||||
msgid ""
|
|
||||||
"Ex: you played Welcome CTF 2021, and want to play it again with your friends "
|
|
||||||
"during one weekend."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:19
|
|
||||||
msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:22
|
|
||||||
msgid "More advantages may come later, and you can submit us your ideas."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:23
|
|
||||||
msgid ""
|
|
||||||
"However, we will not organize limited time CTF for members only, as this "
|
|
||||||
"will be equivalent to organize paid events, and we want 42CTF to remain FREE "
|
|
||||||
"for all."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:26
|
|
||||||
msgid "Donate to 42CTF"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:27
|
|
||||||
msgid ""
|
|
||||||
"You can donate to 42CTF or pay your membership with the following means:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:44
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you would like us to add another payment method or if you want to pay in "
|
"If you would like us to add another payment method or if you want to pay in "
|
||||||
"cash, send us a message !"
|
"cash, send us a message !"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:46
|
#: src/resources/templates/resources/donate.html:18
|
||||||
msgid ""
|
|
||||||
"If you're paying for your membership, don't forget to send us your first and "
|
|
||||||
"last name, as well as your 42CTF pseudo."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:47
|
|
||||||
msgid ""
|
|
||||||
"We will only use thoe data to keep track of our members and grant you "
|
|
||||||
"advantages, and we will never communicate them to any third party."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:50
|
|
||||||
msgid "What will we do with your money ?"
|
msgid "What will we do with your money ?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/donate.html:51
|
#: src/resources/templates/resources/donate.html:21
|
||||||
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Hosting a website - and especially a CTF platform - costs money:\n"
|
"Hosting a website - and especially a CTF platform - costs money: more "
|
||||||
" more precisely, it costs us <b>50 euros per month</b>.<br>\n"
|
"precisely, it costs us <b>50 euros per month</b>.\n"
|
||||||
" If we had <b>40 members</b> each year, it would be enough to "
|
" <br><br>\n"
|
||||||
"cover the hosting of 42CTF.<br>\n"
|
" If we had <b>40 members</b> each year, it would be "
|
||||||
" With the additional money, we could for example offer prizes "
|
"enough to cover the hosting of 42CTF.\n"
|
||||||
"for limited-time events, but we will update this page as soon as we reach "
|
" <br>\n"
|
||||||
"this threshold :)"
|
" We currently have %(nb_members)s members.\n"
|
||||||
|
" <br><br>\n"
|
||||||
|
" With the additional money, we could for example offer "
|
||||||
|
"prizes for limited-time events, but we will update this page as soon as we "
|
||||||
|
"reach this threshold :)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/edit.html:7
|
#: src/resources/templates/resources/edit.html:7
|
||||||
msgid "Edit this page"
|
msgid "Edit this page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/edit.html:12
|
#: src/resources/templates/resources/edit.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"More information coming soon, but as you can guess it involves making a pull "
|
"More information coming soon, but as you can guess it involves making a pull "
|
||||||
"request to your favorite"
|
"request to your favorite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:7
|
#: src/resources/templates/resources/tools.html:7
|
||||||
msgid "Recommended Tools"
|
msgid "Recommended Tools"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:10
|
#: src/resources/templates/resources/tools.html:10
|
||||||
msgid "To get you started, we built a VM that you can simply import in"
|
msgid "To get you started, we built a VM that you can simply import in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:10
|
#: src/resources/templates/resources/tools.html:10
|
||||||
msgid "with a bunch of useful tools."
|
msgid "with a bunch of useful tools."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:11
|
#: src/resources/templates/resources/tools.html:11
|
||||||
msgid "You can dowload this OVA"
|
msgid "You can dowload this OVA"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:11
|
#: src/resources/templates/resources/tools.html:11
|
||||||
msgid "here"
|
msgid "here"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:13
|
#: src/resources/templates/resources/tools.html:13
|
||||||
msgid "Here are the tools installed on the VM:"
|
msgid "Here are the tools installed on the VM:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:22
|
#: src/resources/templates/resources/tools.html:22
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you want to solve the challenges on your own machine, we recommend you to "
|
"If you want to solve the challenges on your own machine, we recommend you to "
|
||||||
"use a Linux operating system."
|
"use a Linux operating system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:23
|
#: src/resources/templates/resources/tools.html:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
|
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
|
||||||
"Windows."
|
"Windows."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/tools.html:25
|
#: src/resources/templates/resources/tools.html:25
|
||||||
msgid "Additionnaly, you will need the following languages interpreters:"
|
msgid "Additionnaly, you will need the following languages interpreters:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:7
|
#: src/resources/templates/resources/translate.html:7
|
||||||
msgid "Translate 42CTF"
|
msgid "Translate 42CTF"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:10
|
#: src/resources/templates/resources/translate.html:10
|
||||||
msgid "42CTF source code is publicly available on this"
|
msgid "42CTF source code is publicly available on this"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:11
|
#: src/resources/templates/resources/translate.html:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Translation does not require any programming skill and is a good way to "
|
"Translation does not require any programming skill and is a good way to "
|
||||||
"contribute if you want to help us, by making the platform always more "
|
"contribute if you want to help us, by making the platform always more "
|
||||||
"accessible."
|
"accessible."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:12
|
#: src/resources/templates/resources/translate.html:14
|
||||||
msgid "We have a"
|
msgid "We have a"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:12
|
#: src/resources/templates/resources/translate.html:14
|
||||||
msgid ""
|
msgid ""
|
||||||
"describing how to translate pages with the Django internalization module."
|
"describing how to translate pages with the Django internalization module."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:13
|
#: src/resources/templates/resources/translate.html:16
|
||||||
msgid ""
|
|
||||||
"We invite you to read it to know all the details, but it merely requires you "
|
|
||||||
"to edit text files, so you see, no programming skills required ;)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:14
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will need to fork the git repository, make your changes, push them, and "
|
"You will need to fork the git repository, make your changes, push them, and "
|
||||||
"then open a pull request so that we can merge your contributions into our "
|
"then open a pull request so that we can merge your contributions into our "
|
||||||
"repository."
|
"repository."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: resources/templates/resources/translate.html:15
|
#: src/resources/templates/resources/translate.html:17
|
||||||
msgid "Don't hesitate to reach for help on"
|
msgid "Don't hesitate to reach for help on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
from django.contrib import sitemaps
|
||||||
|
from django.urls import reverse
|
||||||
|
|
||||||
|
class StaticViewSitemap(sitemaps.Sitemap):
|
||||||
|
priority = 0.5
|
||||||
|
changefreq = 'monthly'
|
||||||
|
i18n = True
|
||||||
|
def items(self):
|
||||||
|
return ['resources:about', 'resources:howToStart', 'resources:contribute', 'resources:becomeMember']
|
||||||
|
|
||||||
|
def location(self, item):
|
||||||
|
return reverse(item)
|
|
@ -1,10 +1,15 @@
|
||||||
|
{% extends 'base.html' %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% get_current_language as lang %}
|
{% get_current_language as lang %}
|
||||||
<div class="col-sm-12 col-md-6">
|
<div class="row">
|
||||||
|
<div class="col-12 ctf-head">
|
||||||
|
<h1>{% trans "About 42ctf" %}</h1>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12">
|
||||||
<div class="ctf-block">
|
<div class="ctf-block">
|
||||||
<div class="ctf-head">
|
<div class="ctf-head text-center">
|
||||||
<center><h3>{% trans "What is 42CTF ?" %}</h3></center>
|
<h1>{% trans "What is 42CTF ?" %}</h1>
|
||||||
</div>
|
</div>
|
||||||
<div class="ctf-body">
|
<div class="ctf-body">
|
||||||
<h4>{% trans "A short introduction to CTF" %}</h4>
|
<h4>{% trans "A short introduction to CTF" %}</h4>
|
||||||
|
@ -27,5 +32,5 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -0,0 +1,73 @@
|
||||||
|
{% extends 'base.html' %}
|
||||||
|
{% load static %}
|
||||||
|
{% block content %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% get_current_language as lang %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 ctf-head">
|
||||||
|
<h1>{% trans "Become a 42CTF member" %}</h1>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<div class="ctf-block text-center">
|
||||||
|
<div class="ctf-head text-center">
|
||||||
|
<h4>{% trans "Why should I become a 42CTF member ?" %}</h4>
|
||||||
|
</div>
|
||||||
|
<div class="ctf-body">
|
||||||
|
<img src="{% static "img/42ctf_logo_big_no_bg_full_white.svg" %}" width="200px" alt="42ctf logo"/>
|
||||||
|
<br><br>
|
||||||
|
{% blocktranslate %}
|
||||||
|
42CTF is a non-profit organization with a legal status under the french law (Association loi 1901).<br>
|
||||||
|
Running a CTF platform costs money, and we are not currently funded by anyone except you.<br>
|
||||||
|
You can become a 42CTF member if you want to support our activity :)
|
||||||
|
{% endblocktranslate %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ctf-block text-center">
|
||||||
|
<div class="ctf-head text-center">
|
||||||
|
<h4>{% trans "I want to be a member !" %}</h4>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<br/>
|
||||||
|
{% trans "You're welcome ! To become a member, all you need to do is to donate us 15 euros and your membership will last for a year." %}
|
||||||
|
<br>
|
||||||
|
<a href="https://www.paypal.com/donate/?hosted_button_id=M6YBYZ63MQGAY" target="_blank">
|
||||||
|
<img src="/static/img/paypal.png" width="200">
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
{% trans "If you want to use another payment method, please contact us !" %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<div class="ctf-block">
|
||||||
|
<div class="ctf-head text-center">
|
||||||
|
<h4>{% trans "What do I get ?" %}</h4>
|
||||||
|
</div>
|
||||||
|
<br><br>
|
||||||
|
{% blocktranslate %}
|
||||||
|
- A <span class='is-member'>different color</span> for your pseudo in the scoreboard, to let everyone know you're a member.<br>
|
||||||
|
- The possibility to play past CTF, with challenges no longer available, in the form of private events with the people of your choice.<br>
|
||||||
|
{% endblocktranslate %}
|
||||||
|
<br>
|
||||||
|
<p class="text-center">
|
||||||
|
{% trans "More advantages may come later, and you can submit us your ideas." %}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="ctf-block text-center">
|
||||||
|
<div class="ctf-head text-center">
|
||||||
|
<h4>{% trans "How do I claim it ?" %}</h4>
|
||||||
|
</div>
|
||||||
|
<div class="ctf-body">
|
||||||
|
{% trans "Once you've donated the 15 euros, you just need to contact us on discord or by mail:" %}
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<a href="https://discord.gg/DwZqPpA">
|
||||||
|
<img width="250px" src="https://discordapp.com/api/guilds/606162827274616845/widget.png?style=banner2" style="margin-bottom:5px" alt="42ctf discord server banner">
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
42ctf@protonmail.com
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
|
@ -3,11 +3,11 @@
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% get_current_language as lang %}
|
{% get_current_language as lang %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{% block 42ctf %}
|
<div class="col-12 ctf-head">
|
||||||
{% include "./42ctf.html" %}
|
<h1>{% trans "Contribute to 42ctf" %}</h1>
|
||||||
{% endblock %}
|
</div>
|
||||||
{% block tools %}
|
{% block donate %}
|
||||||
{% include "./tools.html" %}
|
{% include "./donate.html" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block translate %}
|
{% block translate %}
|
||||||
{% include "./translate.html" %}
|
{% include "./translate.html" %}
|
||||||
|
@ -15,11 +15,5 @@
|
||||||
{% block create_challenge %}
|
{% block create_challenge %}
|
||||||
{% include "./create_challenge.html" %}
|
{% include "./create_challenge.html" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block edit %}
|
|
||||||
{% include "./edit.html" %}
|
|
||||||
{% endblock %}
|
|
||||||
{% block donate %}
|
|
||||||
{% include "./donate.html" %}
|
|
||||||
{% endblock %}
|
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -3,14 +3,14 @@
|
||||||
{% get_current_language as lang %}
|
{% get_current_language as lang %}
|
||||||
<div class="col-sm-12 col-md-6">
|
<div class="col-sm-12 col-md-6">
|
||||||
<div class="ctf-block">
|
<div class="ctf-block">
|
||||||
<div class="ctf-head">
|
<div class="ctf-head text-center">
|
||||||
<center><h3>{% trans "Create new challenges" %}</h3></center>
|
<h3>{% trans "Create new challenges" %}</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="ctf-body">
|
<div class="ctf-body">
|
||||||
{% trans "If you want to create new challenges for 42CTF, send us a message on " %}<a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a> !<br><br>
|
{% trans "If you want to create new challenges for 42CTF, send us a message on " %}<a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a> !<br><br>
|
||||||
{% trans "If your challenge is offline, then you don't have to ask us in advance." %}<br>
|
{% trans "If your challenge is offline, then you don't have to ask us in advance." %}<br>
|
||||||
{% trans "If your challenge is online (for example web or pwn), then you should give us a short description of what you want to do." %}
|
{% trans "If your challenge is online (for example web or pwn), then you should give us a short description of what you want to do." %}<br>
|
||||||
{% trans "We may be able to help you or to give you resources such as dockerfiles." %}
|
{% trans "We may be able to help you or to give you resources such as dockerfiles." %}<br><br>
|
||||||
{% trans "We plan to make those resources publicly available in a near future." %}
|
{% trans "We plan to make those resources publicly available in a near future." %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,57 +2,29 @@
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% get_current_language as lang %}
|
{% get_current_language as lang %}
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<div class="ctf-block">
|
<div class="ctf-block text-center">
|
||||||
<div class="ctf-head">
|
<div class="ctf-head">
|
||||||
<center><h3>{% trans "Donate" %}</h3></center>
|
<h3>{% trans "Donate" %}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="ctf-body">
|
||||||
|
<a href="https://www.paypal.com/donate/?hosted_button_id=M6YBYZ63MQGAY" target="_blank">
|
||||||
|
<img src="/static/img/paypal.png" width="200" style="margin-top:-30px;">
|
||||||
|
</a><br>
|
||||||
|
<p class="small">
|
||||||
|
{% trans "If you would like us to add another payment method or if you want to pay in cash, send us a message !" %}<br><br>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="ctf-head">
|
||||||
|
<h3>{% trans "What will we do with your money ?" %}</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="ctf-body">
|
<div class="ctf-body">
|
||||||
<h4>{% trans "Become a 42CTF member" %}</h4>
|
{% blocktranslate %}Hosting a website - and especially a CTF platform - costs money: more precisely, it costs us <b>50 euros per month</b>.
|
||||||
{% trans "42CTF is a non-profit organization with a legal status under the french law (Association loi 1901)." %}<br>
|
<br><br>
|
||||||
{% trans "You can support us by becoming a member and paying a fee of 15 euros." %}<br>
|
If we had <b>40 members</b> each year, it would be enough to cover the hosting of 42CTF.
|
||||||
{% trans "Membership is then granted for 1 year." %}<br><br>
|
<br>
|
||||||
|
We currently have {{nb_members}} members.
|
||||||
{% trans "When you become a member, you gain the following advantages:" %}<br>
|
<br><br>
|
||||||
- {% trans "A different color for your pseudo in the scoreboard, to let everyone know you're a member." %}<br>
|
With the additional money, we could for example offer prizes for limited-time events, but we will update this page as soon as we reach this threshold :){% endblocktranslate %}
|
||||||
- {% trans "The possibility to play again past CTF, with challenges no longer available, in the form of private events with the people of your choice." %}<br>
|
|
||||||
{% trans "Ex: you played Welcome CTF 2021, and want to play it again with your friends during one weekend." %}
|
|
||||||
{% trans "Or you didn't play Welcome CTF 2021 because you were not eligible." %}
|
|
||||||
<br><br>
|
|
||||||
|
|
||||||
{% trans "More advantages may come later, and you can submit us your ideas." %}<br>
|
|
||||||
{% trans "However, we will not organize limited time CTF for members only, as this will be equivalent to organize paid events, and we want 42CTF to remain FREE for all." %}<br>
|
|
||||||
<br><br>
|
|
||||||
|
|
||||||
<center><h4>{% trans "Donate to 42CTF" %}</h4>
|
|
||||||
{% trans "You can donate to 42CTF or pay your membership with the following means:" %}<br>
|
|
||||||
<!-- <a href="https://www.patreon.com/42ctf" target="_blank" class="patreon li-patreon">
|
|
||||||
<span class="svg-box">
|
|
||||||
<svg viewBox="0 0 569 546" xmlns="http://www.w3.org/2000/svg"><g><circle cx="362.589996" cy="204.589996" data-fill="1" id="Oval" r="204.589996"></circle><rect data-fill="2" height="545.799988" id="Rectangle" width="100" x="0" y="0"></rect></g></svg>
|
|
||||||
</span>
|
|
||||||
<span class="patreon-text">
|
|
||||||
Patreon
|
|
||||||
</span>
|
|
||||||
</a> -->
|
|
||||||
<a href="https://www.paypal.com/donate/?hosted_button_id=M6YBYZ63MQGAY" target="_blank">
|
|
||||||
<img src="/static/img/paypal.png" width="200" style="margin-top: -10px;">
|
|
||||||
</a>
|
|
||||||
<!-- <a href="https://www.helloasso.com/associations/42ctf/adhesions/adhesion" target="_blank">
|
|
||||||
<img src="/static/img/hello_asso.png" width="180" style="margin-top: -10px;">
|
|
||||||
</a> -->
|
|
||||||
</center>
|
|
||||||
<br>
|
|
||||||
{% trans "If you would like us to add another payment method or if you want to pay in cash, send us a message !" %}<br><br>
|
|
||||||
|
|
||||||
{% trans "If you're paying for your membership, don't forget to send us your first and last name, as well as your 42CTF pseudo." %}
|
|
||||||
{% trans "We will only use thoe data to keep track of our members and grant you advantages, and we will never communicate them to any third party." %}
|
|
||||||
<br><br>
|
|
||||||
|
|
||||||
<h4>{% trans "What will we do with your money ?" %}</h4>
|
|
||||||
{% blocktranslate %}Hosting a website - and especially a CTF platform - costs money:
|
|
||||||
more precisely, it costs us <b>50 euros per month</b>.<br>
|
|
||||||
If we had <b>40 members</b> each year, it would be enough to cover the hosting of 42CTF.<br>
|
|
||||||
We currently have {{nb_members}} members. <br>
|
|
||||||
With the additional money, we could for example offer prizes for limited-time events, but we will update this page as soon as we reach this threshold :){% endblocktranslate %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% get_current_language as lang %}
|
{% get_current_language as lang %}
|
||||||
<div class="col-sm-12 col-md-6">
|
<div class="col-sm-12">
|
||||||
<div class="ctf-block">
|
<div class="ctf-block">
|
||||||
<div class="ctf-head">
|
<div class="ctf-head text-center">
|
||||||
<center><h3>{% trans "Edit this page" %}</h3></center>
|
<h3>{% trans "Edit this page" %}</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="ctf-body">
|
<div class="ctf-body">
|
||||||
<br>
|
<br>
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
{% extends 'base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% get_current_language as lang %}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 ctf-head">
|
||||||
|
<h1>{% trans "Beginner guide" %}</h1>
|
||||||
|
</div>
|
||||||
|
{% block tools %}
|
||||||
|
{% include "./tools.html" %}
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
|
@ -1,10 +1,10 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% get_current_language as lang %}
|
{% get_current_language as lang %}
|
||||||
<div class="col-sm-12 col-md-6">
|
<div class="col-12">
|
||||||
<div class="ctf-block">
|
<div class="ctf-block">
|
||||||
<div class="ctf-head">
|
<div class="ctf-head">
|
||||||
<center><h3>{% trans "Recommended Tools" %}</h3></center>
|
<h3>{% trans "Recommended Tools" %}</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="ctf-body">
|
<div class="ctf-body">
|
||||||
{% trans "To get you started, we built a VM that you can simply import in" %} <a href="https://www.virtualbox.org/wiki/Downloads">Virtual Box</a> {% trans "with a bunch of useful tools." %}<br>
|
{% trans "To get you started, we built a VM that you can simply import in" %} <a href="https://www.virtualbox.org/wiki/Downloads">Virtual Box</a> {% trans "with a bunch of useful tools." %}<br>
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
- <a href="https://cutter.re">cutter</a></br>
|
- <a href="https://cutter.re">cutter</a></br>
|
||||||
- <a href="https://github.com/ReFirmLabs/binwalk">binwalk</a></br>
|
- <a href="https://github.com/ReFirmLabs/binwalk">binwalk</a></br>
|
||||||
- <a href="https://rada.re">r2</a></br>
|
- <a href="https://rada.re">r2</a></br>
|
||||||
- <a href="https://gef.readthedocs.io/en/master/">gdb/gef</a></br>
|
- <a href="https://hugsy.github.io/gef/">gdb/gef</a></br>
|
||||||
- qemu-user</br>
|
- qemu-user</br>
|
||||||
<br>
|
<br>
|
||||||
{% trans "If you want to solve the challenges on your own machine, we recommend you to use a Linux operating system."%}
|
{% trans "If you want to solve the challenges on your own machine, we recommend you to use a Linux operating system."%}
|
||||||
|
@ -31,4 +31,4 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -1,17 +1,19 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% get_current_language as lang %}
|
{% get_current_language as lang %}
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12 col-md-6">
|
||||||
<div class="ctf-block">
|
<div class="ctf-block">
|
||||||
<div class="ctf-head">
|
<div class="ctf-head">
|
||||||
<center><h3>{% trans "Translate 42CTF" %}</h3></center>
|
<center><h3>{% trans "Translate 42CTF" %}</h3></center>
|
||||||
</div>
|
</div>
|
||||||
<div class="ctf-body">
|
<div class="ctf-body">
|
||||||
{% trans "42CTF source code is publicly available on this"%} <a href="https://gitea.42ctf.org/42CTF/website">git</a>.<br>
|
{% trans "42CTF source code is publicly available on this"%} <a href="https://gitea.42ctf.org/42CTF/website">git</a>.
|
||||||
{% trans "Translation does not require any programming skill and is a good way to contribute if you want to help us, by making the platform always more accessible." %}<br><br>
|
<br>
|
||||||
{% trans "We have a" %} <a href="https://gitea.42ctf.org/42CTF/website/wiki/Internationalization">wiki</a> {% trans "describing how to translate pages with the Django internalization module." %}<br>
|
{% trans "Translation does not require any programming skill and is a good way to contribute if you want to help us, by making the platform always more accessible." %}
|
||||||
{% trans "We invite you to read it to know all the details, but it merely requires you to edit text files, so you see, no programming skills required ;)" %}
|
<br><br>
|
||||||
{% trans "You will need to fork the git repository, make your changes, push them, and then open a pull request so that we can merge your contributions into our repository." %}<br><br>
|
{% trans "We have a" %} <a href="https://gitea.42ctf.org/42CTF/website/wiki/Internationalization">wiki</a> {% trans "describing how to translate pages with the Django internalization module." %}
|
||||||
|
<br><br>
|
||||||
|
<!-- {% trans "You will need to fork the git repository, make your changes, push them, and then open a pull request so that we can merge your contributions into our repository." %}<br><br> -->
|
||||||
{% trans "Don't hesitate to reach for help on" %} <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a>
|
{% trans "Don't hesitate to reach for help on" %} <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,8 +1,16 @@
|
||||||
|
from django.contrib.sitemaps.views import sitemap
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
from . import views
|
from . import views
|
||||||
|
from .sitemaps import StaticViewSitemap
|
||||||
|
|
||||||
app_name = "resources"
|
app_name = "resources"
|
||||||
|
sitemaps = {
|
||||||
|
'static': StaticViewSitemap(),
|
||||||
|
}
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', views.resources, name='resources'),
|
path('about', views.about, name='about'),
|
||||||
|
path('how-to-start', views.howToStart, name='howToStart'),
|
||||||
|
path('contribute', views.contribute, name='contribute'),
|
||||||
|
path('become-member', views.becomeMember, name='becomeMember'),
|
||||||
|
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
|
||||||
]
|
]
|
||||||
|
|
|
@ -4,6 +4,15 @@ from django.contrib.auth.models import timezone
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
def resources(request):
|
def contribute(request):
|
||||||
nb_members = UserProfileInfo.objects.filter(member=True, member_until__gt=timezone.now()).count()
|
nb_members = UserProfileInfo.objects.filter(member=True, member_until__gt=timezone.now()).count()
|
||||||
return render(request, 'resources/resources.html', {'nb_members':nb_members})
|
return render(request, 'resources/contribute.html', {'nb_members':nb_members})
|
||||||
|
|
||||||
|
def about(request):
|
||||||
|
return render(request, 'resources/about.html')
|
||||||
|
|
||||||
|
def howToStart(request):
|
||||||
|
return render(request, 'resources/howToStart.html')
|
||||||
|
|
||||||
|
def becomeMember(request):
|
||||||
|
return render(request, 'resources/becomeMember.html')
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
{% extends 'base.html' %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% block content %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 ctf-head">
|
||||||
|
<h1>{% trans "42Network Scoreboard" %}</h1>
|
||||||
|
</div>
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="row justify-content-md-center justify-content-sm-center">
|
||||||
|
<div class="col-4 col-sm-3 col-md-2 podium podium-two text-center">
|
||||||
|
<img src="{{ top3.1.0.logo }}" alt="{{ top3.1.0 }}"/>
|
||||||
|
<h3>#2 :</h3>
|
||||||
|
<p>
|
||||||
|
Score : {{ top3.1.1 }}
|
||||||
|
<br>
|
||||||
|
<a href="{% url 'scoreboard:campus' campus=top3.1.0 %}">{{ top3.1.0 }}</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-4 col-sm-3 col-md-2 podium podium-one text-center">
|
||||||
|
<img src="{{ top3.0.0.logo }}" alt="{{ top3.0.0 }}"/>
|
||||||
|
<h3>#1 : </h3>
|
||||||
|
<p>
|
||||||
|
Score : {{ top3.0.1 }}
|
||||||
|
<br>
|
||||||
|
<a href="{% url 'scoreboard:campus' campus=top3.0.0 %}">{{ top3.0.0 }}</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-4 col-sm-3 col-md-2 podium podium-three text-center">
|
||||||
|
<img src="{{ top3.2.0.logo }}" alt="{{ top3.2.0 }}"/>
|
||||||
|
<h3>#3 : </h3>
|
||||||
|
<p>
|
||||||
|
Score : {{ top3.2.1 }}
|
||||||
|
<br>
|
||||||
|
<a href="{% url 'scoreboard:campus' campus=top3.2.0 %}">{{ top3.2.0 }}</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12">
|
||||||
|
<table class="table table-dark">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">{% trans "Rank" %}</th>
|
||||||
|
<th scope="col">{% trans "Campus" %}</th>
|
||||||
|
<th scope="col">{% trans "Score" %}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for name, score in scores.items %}
|
||||||
|
{% if forloop.counter0 > 2 %}
|
||||||
|
<tr>
|
||||||
|
<th scope="row"># {{ forloop.counter0|add:1 }}</th>
|
||||||
|
<th><a href="{% url 'scoreboard:campus' campus=name %}"> {{ name }}</a></th>
|
||||||
|
<td>{{ score}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
|
@ -3,53 +3,63 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% load is_member %}
|
{% load is_member %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
<div class="col-12 ctf-head">
|
||||||
|
<h1>{% trans "Global Scoreboard" %}</h1>
|
||||||
|
</div>
|
||||||
|
<table class="table table-dark">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">{% trans "Rank" %}</th>
|
||||||
|
<th scope="col">{% trans "Username" %}</th>
|
||||||
|
<th scope="col">{% trans "Website" %}</th>
|
||||||
|
<th scope="col">{% trans "Campus" %}</th>
|
||||||
|
<th scope="col">{% trans "Score" %}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for s in scores %}
|
||||||
|
{% ismember s.user.userprofileinfo as is_member %}
|
||||||
|
<tr>
|
||||||
|
<th scope="row"># {{ forloop.counter0|add:scores.start_index }}</th>
|
||||||
|
<th><a class="profile_link {{is_member}}" href="{% url 'accounts:profile' user_name=s.user.username %}"> {{ s.user.username }}</a></th>
|
||||||
|
<td>
|
||||||
|
{% if s.user.userprofileinfo.portfolio_site %}
|
||||||
|
<a href="{{ s.user.userprofileinfo.portfolio_site }}" target="_blank">{{ s.user.userprofileinfo.portfolio_site }}</a>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{% if s.user.userprofileinfo.campus %}
|
||||||
|
<a href="{% url 'scoreboard:campus' campus=s.user.userprofileinfo.campus %}">
|
||||||
|
{{ s.user.userprofileinfo.campus }}
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
<td>{{ s.user.userprofileinfo.score }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<div>
|
<div>
|
||||||
<h4>Scoreboard</h4>
|
|
||||||
<table class="table table-dark">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th scope="col">{% trans "Rank" %}</th>
|
|
||||||
<th scope="col">{% trans "Username" %}</th>
|
|
||||||
<th scope="col">{% trans "Website" %}</th>
|
|
||||||
<th scope="col">{% trans "Score" %}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for s in scores %}
|
|
||||||
{% ismember s.user.userprofileinfo as is_member %}
|
|
||||||
<tr>
|
|
||||||
<th scope="row"># {{ forloop.counter0|add:scores.start_index }}</th>
|
|
||||||
<th><a class="profile_link {{is_member}}" href="{% url 'accounts:profile' user_name=s.user.username %}"> {{ s.user.username }}</a></th>
|
|
||||||
<td>
|
|
||||||
{% if s.user.userprofileinfo.portfolio_site %}
|
|
||||||
<a href="{{ s.user.userprofileinfo.portfolio_site }}" target="_blank">{{ s.user.userprofileinfo.portfolio_site }}</a>
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
<td>{{ s.user.userprofileinfo.score }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<div class="pagination">
|
<div class="pagination">
|
||||||
<span class="step-links">
|
<span class="step-links">
|
||||||
{% if scores.has_previous %}
|
{% if scores.has_previous %}
|
||||||
<a href="?page=1">« {% trans "First" %}</a>
|
<a href="?page=1">« {% trans "First" %}</a>
|
||||||
<a href="?page={{ scores.previous_page_number }}">{% trans "Previous" %}</a>
|
<a href="?page={{ scores.previous_page_number }}">{% trans "Previous" %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<span class="current">
|
<span class="current">
|
||||||
{% trans "Page "%} {{ scores.number }} / {{ scores.paginator.num_pages }}.
|
{% trans "Page "%} {{ scores.number }} / {{ scores.paginator.num_pages }}.
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
{% if scores.has_next %}
|
{% if scores.has_next %}
|
||||||
<a href="?page={{ scores.next_page_number }}">{% trans "Next" %}</a>
|
<a href="?page={{ scores.next_page_number }}">{% trans "Next" %}</a>
|
||||||
<a href="?page={{ scores.paginator.num_pages }}">{% trans "Last" %}»</a>
|
<a href="?page={{ scores.paginator.num_pages }}">{% trans "Last" %}»</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -4,5 +4,7 @@ from . import views
|
||||||
app_name = "scoreboard"
|
app_name = "scoreboard"
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', views.scoreboard, name='scoreboard')
|
path('', views.scoreboard, name='main'),
|
||||||
|
path('campus/<str:campus>', views.campus, name='campus'),
|
||||||
|
path('network/', views.network, name='network')
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.core.paginator import Paginator
|
from django.core.paginator import Paginator
|
||||||
from accounts.models import UserProfileInfo
|
from accounts.models import UserProfileInfo, Campus
|
||||||
|
import itertools
|
||||||
|
|
||||||
def scoreboard(request):
|
def scoreboard(request):
|
||||||
scores = UserProfileInfo.objects.filter(score__gt=0).select_related().order_by('-score', 'last_submission_date', 'user__username')
|
scores = UserProfileInfo.objects.filter(score__gt=0).select_related().order_by('-score', 'last_submission_date', 'user__username')
|
||||||
|
@ -8,5 +9,23 @@ def scoreboard(request):
|
||||||
page = request.GET.get('page')
|
page = request.GET.get('page')
|
||||||
scores_p = paginator.get_page(page)
|
scores_p = paginator.get_page(page)
|
||||||
return render(request, 'scoreboard/scoreboard.html', {'scores':scores_p})
|
return render(request, 'scoreboard/scoreboard.html', {'scores':scores_p})
|
||||||
|
|
||||||
|
def campus(request, campus):
|
||||||
|
scores = UserProfileInfo.objects.filter(score__gt=0, campus__name__exact=campus).select_related().order_by('-score', 'last_submission_date', 'user__username')
|
||||||
|
paginator = Paginator(scores, 20)
|
||||||
|
page = request.GET.get('page')
|
||||||
|
scores_p = paginator.get_page(page)
|
||||||
|
return render(request, 'scoreboard/scoreboard.html', {'scores':scores_p})
|
||||||
|
|
||||||
|
def network(request):
|
||||||
|
campuses = Campus.objects.all()
|
||||||
|
scores = {}
|
||||||
|
for campus in campuses:
|
||||||
|
users = UserProfileInfo.objects.filter(score__gt=0, campus__name__exact=campus).select_related().order_by('-score', 'last_submission_date', 'user__username')[:10]
|
||||||
|
scores[campus] = sum([u.score for u in users])
|
||||||
|
|
||||||
|
sorted_scores = {k: v for k, v in sorted(scores.items(), key=lambda item: item[1], reverse=True)}
|
||||||
|
top3 = list(itertools.islice(sorted_scores.items(), 3))
|
||||||
|
return render(request, 'scoreboard/network.html', {'scores':sorted_scores, 'top3': top3})
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
|
@ -4,6 +4,7 @@ body {
|
||||||
}
|
}
|
||||||
.card-body {
|
.card-body {
|
||||||
background-color: #1d1d1d;
|
background-color: #1d1d1d;
|
||||||
|
padding:30px;
|
||||||
}
|
}
|
||||||
a {
|
a {
|
||||||
color: #4375aa;
|
color: #4375aa;
|
||||||
|
@ -13,10 +14,10 @@ a:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
.main-div {
|
.main-div {
|
||||||
margin-top: 40px;
|
margin-top: 30px;
|
||||||
}
|
}
|
||||||
.news-card {
|
.news-card {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 30px;
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
.news-card .card-header {
|
.news-card .card-header {
|
||||||
|
@ -68,6 +69,12 @@ pre {
|
||||||
padding-right: 15px;
|
padding-right: 15px;
|
||||||
padding-left: 15px;
|
padding-left: 15px;
|
||||||
}
|
}
|
||||||
|
.nav-distinguish{
|
||||||
|
border: 1.8px solid #333;
|
||||||
|
border-radius: 1.5px;
|
||||||
|
color: #fff;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
.flag_img {
|
.flag_img {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
width: 28px;
|
width: 28px;
|
||||||
|
@ -81,17 +88,22 @@ pre {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ctf-head h1 {
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
.ctf-block {
|
.ctf-block {
|
||||||
background-color: #1d1d1d;
|
background-color: #1d1d1d;
|
||||||
min-height: 235px;
|
min-height: 35vh;
|
||||||
padding: 15px;
|
padding: 30px;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 30px;
|
||||||
}
|
}
|
||||||
.ctf-body {
|
.ctf-body {
|
||||||
margin-top: 50px;
|
margin-top: 30px;
|
||||||
}
|
}
|
||||||
.bloc-body {
|
.bloc-body {
|
||||||
margin-top: 25px;
|
margin-top: 30px;
|
||||||
}
|
}
|
||||||
.ctf-footer {
|
.ctf-footer {
|
||||||
margin-top: 15px;
|
margin-top: 15px;
|
||||||
|
@ -103,8 +115,8 @@ pre {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
.event-body {
|
.event-body {
|
||||||
padding: 15px;
|
padding: 30px;
|
||||||
margin-top: 50px;
|
margin-top: 30px;
|
||||||
}
|
}
|
||||||
.event-footer {
|
.event-footer {
|
||||||
margin-top: 15px;
|
margin-top: 15px;
|
||||||
|
@ -271,91 +283,7 @@ footer {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
.patreon {
|
|
||||||
width: 250px;
|
|
||||||
height: 59px;
|
|
||||||
background-color: #ff6363;
|
|
||||||
font-family: America, "GT America", Lato, "Helvetica Neue", Helvetica, Arial,
|
|
||||||
sans-serif;
|
|
||||||
text-rendering: optimizeLegibility;
|
|
||||||
-moz-box-align: center;
|
|
||||||
backface-visibility: hidden;
|
|
||||||
box-sizing: border-box;
|
|
||||||
cursor: pointer;
|
|
||||||
display: inline-flex;
|
|
||||||
font-size: 0.875rem !important;
|
|
||||||
font-weight: 500;
|
|
||||||
-moz-box-pack: center;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 0.46875rem 1rem;
|
|
||||||
position: relative;
|
|
||||||
pointer-events: unset;
|
|
||||||
text-align: center;
|
|
||||||
text-decoration: none;
|
|
||||||
text-transform: none;
|
|
||||||
transition: all 0.3s cubic-bezier(0.19, 1, 0.22, 1) 0s;
|
|
||||||
user-select: none;
|
|
||||||
white-space: unset;
|
|
||||||
align-items: center;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
.li-patreon {
|
|
||||||
width: 120px;
|
|
||||||
height: 37px;
|
|
||||||
background-color: #ff6363;
|
|
||||||
font-family: America, "GT America", Lato, "Helvetica Neue", Helvetica, Arial,
|
|
||||||
sans-serif;
|
|
||||||
text-rendering: optimizeLegibility;
|
|
||||||
-moz-box-align: center;
|
|
||||||
backface-visibility: hidden;
|
|
||||||
box-sizing: border-box;
|
|
||||||
cursor: pointer;
|
|
||||||
font-size: 0.875rem !important;
|
|
||||||
font-weight: 500;
|
|
||||||
-moz-box-pack: center;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 0.46875rem 1rem;
|
|
||||||
text-align: center;
|
|
||||||
text-decoration: none;
|
|
||||||
text-transform: none;
|
|
||||||
transition: all 0.3s cubic-bezier(0.19, 1, 0.22, 1) 0s;
|
|
||||||
user-select: none;
|
|
||||||
align-items: center;
|
|
||||||
color: #fff;
|
|
||||||
margin-top: 4px;
|
|
||||||
margin-right: 13px;
|
|
||||||
}
|
|
||||||
.patreon:hover {
|
|
||||||
background-color: #ff4a4a;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
.patreon-text {
|
|
||||||
padding-left: 1em;
|
|
||||||
}
|
|
||||||
.patreon svg {
|
|
||||||
height: 1.3rem;
|
|
||||||
width: 1.3rem;
|
|
||||||
fill: #fff;
|
|
||||||
}
|
|
||||||
.patreon-content {
|
|
||||||
-moz-box-align: center;
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
-moz-box-pack: center;
|
|
||||||
justify-content: center;
|
|
||||||
visibility: visible;
|
|
||||||
}
|
|
||||||
.svg-box {
|
|
||||||
align-self: center;
|
|
||||||
-moz-box-align: center;
|
|
||||||
align-items: center;
|
|
||||||
display: inline-flex;
|
|
||||||
filter: none;
|
|
||||||
vertical-align: unset;
|
|
||||||
height: unset;
|
|
||||||
width: unset;
|
|
||||||
cursor: unset;
|
|
||||||
}
|
|
||||||
.is-member {
|
.is-member {
|
||||||
color: #26fcef;
|
color: #26fcef;
|
||||||
}
|
}
|
||||||
|
@ -385,3 +313,20 @@ footer {
|
||||||
color: #a9a9a9;
|
color: #a9a9a9;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.podium{
|
||||||
|
margin-top:80px;
|
||||||
|
margin-bottom:30px;
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
.podium h3 {margin-top:-5%;}
|
||||||
|
.podium img{position:relative;top: -55px; max-height: 50px; max-width: 100%;}
|
||||||
|
.podium-one{
|
||||||
|
background-color: #313131;
|
||||||
|
height: 25vh;}
|
||||||
|
.podium-two{
|
||||||
|
background-color: #252525;
|
||||||
|
height: 20vh;margin-top:auto;}
|
||||||
|
.podium-three{
|
||||||
|
background-color: #1a1a1a;
|
||||||
|
height: 15vh;margin-top:auto;}
|
Binary file not shown.
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1,130 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="4487.6143mm"
|
||||||
|
height="1053.2188mm"
|
||||||
|
viewBox="0 0 4487.6143 1053.2188"
|
||||||
|
version="1.1"
|
||||||
|
id="svg887"
|
||||||
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
|
||||||
|
sodipodi:docname="42ctf_logo_big_no_bg_full_white.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview889"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:pageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.092365554"
|
||||||
|
inkscape:cx="3155.9384"
|
||||||
|
inkscape:cy="1169.2671"
|
||||||
|
inkscape:window-width="1856"
|
||||||
|
inkscape:window-height="993"
|
||||||
|
inkscape:window-x="29"
|
||||||
|
inkscape:window-y="52"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="text14333" />
|
||||||
|
<defs
|
||||||
|
id="defs884" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(1823.5311,156.47152)">
|
||||||
|
<g
|
||||||
|
id="g28009"
|
||||||
|
transform="matrix(1.0000013,0,0,0.99999497,-1790.2968,3673.4424)">
|
||||||
|
<g
|
||||||
|
id="g1328"
|
||||||
|
transform="matrix(1.8079585,0,0,1.8079585,-6120.2987,-4183.4979)">
|
||||||
|
<path
|
||||||
|
id="path892"
|
||||||
|
style="color:#000000;fill:#ffffff;stroke-linejoin:round;-inkscape-stroke:none;fill-opacity:1"
|
||||||
|
d="m 3429.7852,260.05664 a 10.001,10.001 0 0 0 -2.584,0.24609 10.001,10.001 0 0 0 -7.543,11.88868 l 50.8516,231.84961 c -8.0433,50.54175 -18.4962,83.38434 -10.0821,113.95703 4.2599,15.47831 13.8073,29.4333 29.5254,42.57031 15.4175,12.88578 36.9112,25.45154 66.6641,39.83008 29.3397,32.4749 71.8944,54.602 116.3652,60.33984 44.2125,5.70449 90.6965,-5.23805 125.961,-39.25 41.0031,-6.77869 71.1344,-17.1823 93.0586,-31.875 22.4915,-15.07297 36.0189,-34.95663 42.6464,-57.71289 12.1554,-41.73612 3.4108,-92.32777 -4.375,-152.31445 l -18.1738,16.0625 c 6.9573,54.19372 12.7038,98.52852 3.3457,130.66015 -5.5196,18.95192 -15.6037,33.97353 -34.5781,46.68946 -18.9744,12.71594 -47.2581,22.79932 -88.1738,29.28515 a 10.001,10.001 0 0 0 -5.5372,2.83789 c -30.7955,31.08045 -71.388,40.97154 -111.6152,35.78125 -40.2272,-5.1903 -79.5879,-25.92311 -105.4492,-55.30468 a 10.001,10.001 0 0 0 -3.1758,-2.40625 c -29.9263,-14.37694 -50.5867,-26.64378 -64.1367,-37.96875 -13.55,-11.32497 -19.9624,-21.24579 -23.0684,-32.53125 -6.2119,-22.57092 2.6054,-54.52185 10.8672,-107.32032 a 10.001,10.001 0 0 0 -0.1113,-3.68945 l -46.1914,-210.61328 103.2598,64.25391 a 10.001,10.001 0 0 0 6.8535,1.38476 c 101.0075,-16.0581 198.5231,-2.99499 300.5293,9.73633 a 10.001,10.001 0 0 0 5.0722,-0.68555 l 126.4903,-52.49414 -71.0039,134.95117 17.6933,9.32227 83.9043,-159.46875 a 10.001,10.001 0 0 0 -12.6816,-13.89258 l -149.6406,62.10156 c -99.7291,-12.46388 -197.3928,-25.43702 -299.7364,-9.85546 l -120.3047,-74.86329 a 10.001,10.001 0 0 0 -4.9257,-1.50195 z"
|
||||||
|
transform="translate(0,4.5838445)" />
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 3527.9156,562.18166 42.6109,16.8649 c 16.7292,46.1214 40.4484,45.6318 63.9976,46.2755 l 11.9704,32.0331 c 0,0 62.9831,-86.6735 -118.5789,-95.1735 z"
|
||||||
|
id="path894"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 3880.1258,592.94106 -45.0518,8.3934 c -25.2514,42.0644 -48.4379,37.0419 -71.6746,33.1644 l -17.8828,29.1481 c 0,0 -45.2207,-97.1302 134.6092,-70.7059 z"
|
||||||
|
id="path896"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 3692.9385,715.37226 c -15.7925,-3.6732 -22.0278,-10.7121 -29.2363,4.1074 5.902,0.5487 12.1205,0.6112 15.9283,4.3774 0.059,24.1798 24.3616,28.1471 22.7779,2.4787 4.0032,-3.2853 8.4983,-5.6589 15.9731,-2.5092 -2.1673,-17.5646 -10.8503,-10.4507 -25.443,-8.4543 z"
|
||||||
|
id="path898"
|
||||||
|
sodipodi:nodetypes="cccccc" />
|
||||||
|
<path
|
||||||
|
style="color:#000000;fill:#ffffff;-inkscape-stroke:none;fill-opacity:1"
|
||||||
|
d="m 3433.1099,271.25146 -7.3652,6.7636 c 0,0 29.0621,31.6444 58.998,69.2617 14.968,18.8087 30.1434,39.1065 41.9473,57.5645 l 32.125,32.41153 c -2.0573,-13.6978 -11.5933,-18.86803 -23.6992,-37.79833 -12.1059,-18.9302 -27.4498,-39.4309 -42.5488,-58.4042 -30.1981,-37.9467 -59.4571,-69.7988 -59.4571,-69.7988 z"
|
||||||
|
id="path900"
|
||||||
|
sodipodi:nodetypes="ccsccssc" />
|
||||||
|
<path
|
||||||
|
style="color:#000000;fill:#ffffff;-inkscape-stroke:none;fill-opacity:1"
|
||||||
|
d="m 4008.225,297.99676 5.5749,8.3015 c 0,0 -35.6691,23.9517 -73.5876,53.5052 -18.9593,14.7768 -38.4692,30.9525 -54.2703,46.1299 l -41.0812,35.6821 c 5.2103,-12.8341 17.9471,-27.3278 34.1525,-42.8935 16.2054,-15.5657 35.9267,-31.8992 55.0519,-46.8054 38.2506,-29.8122 74.1598,-53.9198 74.1598,-53.9198 z"
|
||||||
|
id="path902"
|
||||||
|
sodipodi:nodetypes="ccsccssc" />
|
||||||
|
<g
|
||||||
|
id="g914"
|
||||||
|
transform="matrix(1.0763584,0.09091724,-0.09091724,1.0763584,2884.4125,-924.2937)">
|
||||||
|
<g
|
||||||
|
id="g908"
|
||||||
|
transform="matrix(1.288481,0,0,1.1087193,-1703.4773,538.66999)">
|
||||||
|
<path
|
||||||
|
id="path904"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 1971.0918,398.34375 -78.7422,24.52344 -39.3359,157.64648 c 67.4756,63.35272 201.1134,73.65398 285.1543,0 l -39.336,-157.64648 -78.7422,-24.52344 -24.5,21.14453 z"
|
||||||
|
sodipodi:nodetypes="cccccccc" />
|
||||||
|
<path
|
||||||
|
id="path906"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 1827.0195,592.78063 -62.414,12.2207 c 137.3398,147.76478 333.9643,135.43034 451.7968,0 l -54.71,-12.2207 c -110.1435,81.05461 -235.0036,76.56686 -334.6728,0 z"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 638.772,1205.6514 59.86027,-25.3526"
|
||||||
|
id="path910"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 1088.7943,1202.8548 -59.8603,-25.3526"
|
||||||
|
id="path912"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
aria-label="42CTF"
|
||||||
|
transform="matrix(23.766838,0,0,23.766838,-32926.98,-18251.25)"
|
||||||
|
id="text14333"
|
||||||
|
style="font-size:50.8px;line-height:1.25;font-family:Lovelo;-inkscape-font-specification:Lovelo;white-space:pre;fill:#ffffff;stroke-width:1.66987">
|
||||||
|
<path
|
||||||
|
d="m 1460.5686,646.43126 v -9.0932 h 3.9624 v -7.2644 h -3.9624 v -11.0236 l -7.2644,4.8768 v 6.1468 h -4.6228 l 7.4168,-19.9136 h -7.62 l -10.3124,27.178 h 15.1384 v 9.0932 z"
|
||||||
|
id="path837" />
|
||||||
|
<path
|
||||||
|
d="m 1479.6695,624.94286 -13.5636,21.5392 h 23.9776 v -7.366 h -10.7696 l 7.1628,-11.0744 c 6.096,-8.4836 2.54,-17.8308 -8.128,-18.3896 -3.556,-0.1524 -7.9756,1.27 -10.7696,3.302 l 1.778,7.0104 c 1.1684,-1.016 5.1816,-3.0988 8.382,-2.8956 2.1336,0.1016 3.7592,1.6256 3.7592,3.6576 0,0 0.1016,1.4732 -1.8288,4.2164 z"
|
||||||
|
id="path839" />
|
||||||
|
<path
|
||||||
|
d="m 1519.4459,618.59286 0.8636,-7.4676 c -2.1844,-0.9652 -4.6228,-1.4224 -7.1628,-1.4224 -24.5872,0 -24.638,36.8808 0,36.8808 2.54,0 5.7404,-0.6096 7.9756,-1.524 l -0.9652,-7.5184 c -1.3716,0.7112 -3.8608,1.6256 -7.0104,1.6256 -14.3764,0 -14.3764,-22.1488 0,-22.1488 3.1496,0 4.9276,0.8636 6.2992,1.5748 z"
|
||||||
|
id="path841" />
|
||||||
|
<path
|
||||||
|
d="m 1540.1722,646.48206 v -29.0576 h 9.0424 v -7.2136 h -25.3492 v 7.2136 h 9.0424 v 29.0576 z"
|
||||||
|
id="path843" />
|
||||||
|
<path
|
||||||
|
d="m 1572.8367,617.42446 v -7.2644 h -18.1356 v 36.322 h 7.2644 v -14.5288 h 9.2456 v -7.2644 h -9.2456 v -7.2644 z"
|
||||||
|
id="path845" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 8.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 229 KiB |
|
@ -1,156 +1,173 @@
|
||||||
{% load static %}
|
{% load static %}
|
||||||
|
{% load is_member %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
<!-- Bootstrap CSS -->
|
<link rel="shortcut icon" type="image/x-icon" href="{% static 'img/favicon.ico' %}"/>
|
||||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
|
<!-- Bootstrap CSS -->
|
||||||
<link rel="stylesheet" href="{% static "css/style.css" %}">
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
|
||||||
<!-- Primary Meta Tags -->
|
<link rel="stylesheet" href="{% static "css/style.css" %}">
|
||||||
<title>42CTF</title>
|
<!-- Primary Meta Tags -->
|
||||||
<meta name="title" content="42CTF">
|
<title>42CTF</title>
|
||||||
<meta name="description" content="42CTF is a cybersecurity challenges platform created by School 42 students.">
|
<meta name="title" content="42CTF">
|
||||||
|
<meta name="description" content="42CTF is a cybersecurity challenges platform created by School 42 students.">
|
||||||
<!-- Open Graph / Facebook -->
|
|
||||||
<meta property="og:type" content="website">
|
<!-- Open Graph / Facebook -->
|
||||||
<meta property="og:url" content="https://www.42ctf.org/">
|
<meta property="og:type" content="website">
|
||||||
<meta property="og:title" content="42CTF">
|
<meta property="og:url" content="https://www.42ctf.org/">
|
||||||
<meta property="og:description" content="42CTF is a cybersecurity challenges platform created by School 42 students.">
|
<meta property="og:title" content="42CTF">
|
||||||
<meta property="og:image" content="{% static "img/42ctf_logo.png" %}">
|
<meta property="og:description" content="42CTF is a cybersecurity challenges platform created by School 42 students.">
|
||||||
|
<meta property="og:image" content="{% static "img/42ctf_logo.png" %}">
|
||||||
<!-- Twitter -->
|
|
||||||
<meta property="twitter:card" content="summary_large_image">
|
<!-- Twitter -->
|
||||||
<meta property="twitter:url" content="https://www.42ctf.org/">
|
<meta property="twitter:card" content="summary_large_image">
|
||||||
<meta property="twitter:title" content="42CTF">
|
<meta property="twitter:url" content="https://www.42ctf.org/">
|
||||||
<meta property="twitter:description" content="42CTF is a cybersecurity challenges platform created by School 42 students.">
|
<meta property="twitter:title" content="42CTF">
|
||||||
<meta property="twitter:image" content="{% static "img/42ctf_logo.png" %}">
|
<meta property="twitter:description" content="42CTF is a cybersecurity challenges platform created by School 42 students.">
|
||||||
|
<meta property="twitter:image" content="{% static "img/42ctf_logo.png" %}">
|
||||||
<meta name="Description" content="42CTF is a cybersecurity challenges platform created by School 42 students.">
|
|
||||||
<meta name="keywords" content="42, cybersécurité, cybersecurity, hack, hacking, challenge, solution, exercice, hacking challenge, hack challenge, exercice hack, exercice hacking, capture the flag, CTF, security, sécurité, Documentation,Applicatif,Cryptologie,Challenges,Outils,Réseaux,CrackinWebW Client,Programmation,Cryptanaly,Application,Présentation,Réseau,Stéganographie,Web Serveur,Cracking,Classement,Challenges, Informatique,Capture The Flag,Forensic,Web," />
|
<link rel="canonical" href="https://www.42ctf.org/{{ request.path }}">
|
||||||
|
|
||||||
|
<meta name="Description" content="42CTF is a cybersecurity challenges platform created by School 42 students.">
|
||||||
|
<meta name="keywords" content="42, cybersécurité, cybersecurity, hack, hacking, challenge, solution, exercice, hacking challenge, hack challenge, exercice hack, exercice hacking, capture the flag, CTF, security, sécurité, Documentation,Applicatif,Cryptologie,Challenges,Outils,Réseaux,CrackinWebW Client,Programmation,Cryptanaly,Application,Présentation,Réseau,Stéganographie,Web Serveur,Cracking,Classement,Challenges, Informatique,Capture The Flag,Forensic,Web," />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
<!-- As a link -->
|
<!-- As a link -->
|
||||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||||
<a class="navbar-brand" href="{% url "home" %}"><img src="{% static "img/cover.png" %}" width="110px"/></a>
|
<a class="navbar-brand" href="{% url "home" %}"><img src="{% static "img/42ctf_logo_big_no_bg_full_white.svg" %}" width="150px" alt="42ctf logo"/></a>
|
||||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||||
<ul class="navbar-nav mr-auto">
|
<ul class="navbar-nav mr-auto">
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
CTFs
|
CTFs
|
||||||
</a>
|
</a>
|
||||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||||
{% if cats %}
|
{% if cats %}
|
||||||
{% for c in cats %}
|
{% for c in cats %}
|
||||||
<a class="dropdown-item" href="{% url 'category' cat_slug=c.slug %}">{{ c.name }}</a>
|
<a class="dropdown-item" href="{% url 'category' cat_slug=c.slug %}">{{ c.name }}</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="dropdown-item">{% translate "No category available." %}</a>
|
<a class="dropdown-item">{% translate "No category available." %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="{% url 'scoreboard:scoreboard' %}">{% translate "Scoreboard" %}</a>
|
<li class="nav-item dropdown">
|
||||||
<li class="nav-item">
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<a class="nav-link" href="{% url 'events:events' %}">{% translate "Events" %}</a>
|
{% trans "Scoreboard" %}
|
||||||
</li>
|
</a>
|
||||||
<li class="nav-item">
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||||
<a class="nav-link" href="{% url 'resources:resources' %}">{% translate "Resources" %}</a>
|
<a class="dropdown-item" href="{% url 'scoreboard:main' %}">{% trans "Global" %}</a>
|
||||||
</li>
|
<a class="dropdown-item" href="{% url 'scoreboard:network' %}">{% trans "42 Network" %}</a>
|
||||||
</ul>
|
</div>
|
||||||
<ul class="navbar-nav ">
|
</li>
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item">
|
||||||
{% get_current_language as LANGUAGE_CODE %}
|
<a class="nav-link" href="{% url 'events:events' %}">{% translate "Events" %}</a>
|
||||||
<a class="nav-link" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
</li>
|
||||||
<img class="flag_img" src="{% static "img/"|add:LANGUAGE_CODE|add:".svg" %}" alt="flag {{ LANGUAGE_CODE }}" style="margin-top: -5px;"/>
|
<li class="nav-item dropdown">
|
||||||
</a>
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
{% trans "Resources" %}
|
||||||
{% get_available_languages as languages %}
|
</a>
|
||||||
{% for lang_code, lang_name in languages %}
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||||
|
<a class="dropdown-item" href="{% url 'resources:about' %}">{% trans "About"%}</a>
|
||||||
<a class="dropdown-item" href="{% url 'set_language' lang_code %}?next={{request.path|slice:"3:"}}">
|
<a class="dropdown-item" href="{% url 'resources:howToStart' %}">{% trans "How To Start" %}</a>
|
||||||
<img class="flag_img" src="{% static "img/"|add:lang_code|add:".svg" %}" alt="flag {{ lang_name }}"/>
|
<a class="dropdown-item" href="{% url 'resources:contribute' %}">{% trans "Contribute" %}</a>
|
||||||
</a>
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
{% endfor %}
|
<ul class="navbar-nav ">
|
||||||
</div>
|
{% if request.user.is_authenticated %}
|
||||||
</li>
|
{% ismember request.user.userprofileinfo as is_member %}
|
||||||
{% if request.user.is_authenticated %}
|
{% if not is_member %}
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item">
|
||||||
<a href="{% url 'accounts:edit' %}" class="nav-link">{{ request.user.username }}</a>
|
<a class="nav-link nav-distinguish text-center" href="{% url 'resources:becomeMember' %}">{% translate "Become a member" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item dropdown">
|
{% endif %}
|
||||||
<span class="nav-link">{{ request.user.userprofileinfo.score }}</span>
|
<li class="nav-item dropdown">
|
||||||
</li>
|
<a href="{% url 'accounts:edit' %}" class="nav-link">{{ request.user.username }}</a>
|
||||||
<li class="nav-item dropdown">
|
</li>
|
||||||
<a class="nav-link" href="{% url 'accounts:out' %}">{% translate "Logout" %}</a>
|
<li class="nav-item dropdown">
|
||||||
</li>
|
<a class="nav-link" href="{% url 'accounts:profile' user %}">{{ request.user.userprofileinfo.score }}</a>
|
||||||
{% else %}
|
</li>
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link" href="{% url 'accounts:signin' %}">{% translate "Login" %}</a>
|
<a class="nav-link" href="{% url 'accounts:out' %}">{% translate "Logout" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
{% else %}
|
||||||
<a class="nav-link" href="{% url 'accounts:signup' %}">{% translate "Sign Up" %}</a>
|
<li class="nav-item dropdown">
|
||||||
</li>
|
<a class="nav-link" href="{% url 'accounts:signin' %}">{% translate "Login" %}</a>
|
||||||
{% endif %}
|
</li>
|
||||||
</ul>
|
<li class="nav-item">
|
||||||
</div>
|
<a class="nav-link" href="{% url 'accounts:signup' %}">{% translate "Sign Up" %}</a>
|
||||||
</nav>
|
</li>
|
||||||
</header>
|
{% endif %}
|
||||||
<div class="container main-div">
|
<li class="nav-item dropdown">
|
||||||
{% block content %}
|
{% get_current_language as LANGUAGE_CODE %}
|
||||||
{% endblock %}
|
<a class="nav-link" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
</div>
|
<img class="flag_img" src="{% static "img/"|add:LANGUAGE_CODE|add:".svg" %}" alt="flag {{ LANGUAGE_CODE }}" style="margin-top: -5px;"/>
|
||||||
<footer class="container">
|
</a>
|
||||||
<div class="row">
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||||
<div class="col-lg-4 col-12">
|
{% get_available_languages as languages %}
|
||||||
<a href="https://discord.gg/DwZqPpA">
|
{% for lang_code, lang_name in languages %}
|
||||||
<img width="250px" src="https://discordapp.com/api/guilds/606162827274616845/widget.png?style=banner2" style="margin-bottom:5px">
|
|
||||||
</a>
|
<a class="dropdown-item" href="{% url 'set_language' lang_code %}?next={{request.path|slice:"3:"}}">
|
||||||
</div>
|
<img class="flag_img" src="{% static "img/"|add:lang_code|add:".svg" %}" alt="flag {{ lang_name }}"/>
|
||||||
<div class="col-lg-1 col-6">
|
</a>
|
||||||
<a href="https://twitter.com/42ctf">
|
|
||||||
<img width="50px" src="{% static "img/twitter.png" %}">
|
|
||||||
</a>
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-1 col-6 middle-md">
|
</li>
|
||||||
<a href="https://fr.linkedin.com/company/42ctf">
|
</ul>
|
||||||
<img width="50px" src="{% static "img/linkedin.png" %}" style="margin-bottom:5px">
|
</div>
|
||||||
</a>
|
</nav>
|
||||||
</div>
|
</header>
|
||||||
<div class="col-lg-4 col-12 bottom-md">
|
|
||||||
<!-- <a href="https://www.patreon.com/42ctf" target="_blank" class="patreon">
|
<div class="container main-div">
|
||||||
<div class="patreon-content">
|
{% block content %}
|
||||||
<span class="svg-box">
|
{% endblock %}
|
||||||
<svg viewBox="0 0 569 546" xmlns="http://www.w3.org/2000/svg"><g><circle cx="362.589996" cy="204.589996" data-fill="1" id="Oval" r="204.589996"></circle><rect data-fill="2" height="545.799988" id="Rectangle" width="100" x="0" y="0"></rect></g></svg>
|
</div>
|
||||||
</span>
|
|
||||||
<span class="patreon-text">
|
<footer class="container">
|
||||||
{% trans "Become a Patron!" %}
|
<div class="row">
|
||||||
</span>
|
<div class="col-lg-4 col-12">
|
||||||
</div>
|
<a href="https://discord.gg/DwZqPpA">
|
||||||
</a> -->
|
<img width="250px" src="https://discordapp.com/api/guilds/606162827274616845/widget.png?style=banner2" style="margin-bottom:5px" alt="42ctf discord server banner">
|
||||||
<a href="https://www.paypal.com/donate/?hosted_button_id=M6YBYZ63MQGAY" target="_blank">
|
</a>
|
||||||
<img src="/static/img/paypal.png" width="250" style="margin-top: -20px;">
|
</div>
|
||||||
</a>
|
<div class="col-lg-1 col-6">
|
||||||
</div>
|
<a href="https://twitter.com/42ctf">
|
||||||
<div class="col-lg-2 footer-text col-sm-12">
|
<img width="50px" src="{% static "img/twitter.png" %}" alt="Twitter logo">
|
||||||
<p>42ctf@protonmail.com <br>Made with <img src="{% static "img/smoke.png" %}" width="20px" style="margin-top:-5px"> by <a href="https://ix-56h.github.io/">ix-56h</a> - <a href="{% url "cgu" %}">CGU</a></p>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="col-lg-1 col-6 middle-md">
|
||||||
</footer>
|
<a href="https://fr.linkedin.com/company/42ctf">
|
||||||
<!-- Optional JavaScript -->
|
<img width="50px" src="{% static "img/linkedin.png" %}" style="margin-bottom:5px" alt="Linkedin logo">
|
||||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
</a>
|
||||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
</div>
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
|
<div class="col-lg-4 col-12 bottom-md">
|
||||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
|
<a href="https://www.paypal.com/donate/?hosted_button_id=M6YBYZ63MQGAY" target="_blank">
|
||||||
</body>
|
<img src="/static/img/paypal.png" width="250" style="margin-top: -20px;" alt="'Donate with Paypal' banner">
|
||||||
</html>
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-2 footer-text col-sm-12">
|
||||||
|
<p>42ctf@protonmail.com <br>Made with <img src="{% static "img/smoke.png" %}" width="20px" style="margin-top:-5px"> by <a href="https://ix-56h.github.io/">ix-56h</a> - <a href="{% url "cgu" %}">CGU</a></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
<!-- Optional JavaScript -->
|
||||||
|
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||||
|
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,31 +2,31 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 col-md-9">
|
<div class="col-sm-12 col-md-9">
|
||||||
<div class="ctf-block">
|
<div class="ctf-block">
|
||||||
<div class="ctf-head">
|
<div class="ctf-head">
|
||||||
<h3>Reset password</h3>
|
<h3>Reset password</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="ctf-body">
|
<div class="ctf-body">
|
||||||
<div class="col-sm-8 col-md-6 mx-auto">
|
<div class="col-sm-8 col-md-6 mx-auto">
|
||||||
<form method="post">
|
<form method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input class="form-control" type="email" name="email" autocomplete="email" maxlength="254" required="" placeholder="Email"><br>
|
<input class="form-control" type="email" name="email" autocomplete="email" maxlength="254" required="" placeholder="Email"><br>
|
||||||
<input class="form-control" type="submit" value="{% trans "Reset" %}">
|
<input class="form-control" type="submit" value='{% trans "Reset" %}'>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12 col-md-3 right-sidebar">
|
<div class="col-sm-12 col-md-3 right-sidebar">
|
||||||
<ul class="list-group">
|
<ul class="list-group">
|
||||||
<a href="/accounts/signin" class="list-group-item">{% trans "Login" %}</a>
|
<a href="/accounts/signin" class="list-group-item">{% trans "Login" %}</a>
|
||||||
<a href="/accounts/signup" class="list-group-item"{% trans "Sign up" %}</a>
|
<a href="/accounts/signup" class="list-group-item">{% trans "Sign up" %}</a>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue