Compare commits

...

54 Commits

Author SHA1 Message Date
Danhia 2f24fae611 Merge pull request 'merge translation into main' (#26) from translation into main
Reviewed-on: #26
2022-02-18 16:19:51 +01:00
Danhia 02385dcd08 Merge pull request 'Add Japanese message string for django.po' (#25) from ysaito/website:main into translation
Reviewed-on: #25
2022-02-18 16:17:47 +01:00
ysaito 7b2de06225 refactor(news/ja/): Corrected the translation of a word 2022-02-18 22:48:26 +09:00
ysaito ba1cb03dbf feat(*/django.po): Add Japanese message string 2022-02-18 22:45:09 +09:00
Danhia 11164bb84a replaced the bad request with a redirect to account edit 2022-02-18 11:32:08 +01:00
Danhia 67a4d180e0 corrected typo 2022-02-18 11:27:58 +01:00
Danhia 3b86441259 Merge branch 'main' into bot-api 2022-02-18 11:11:58 +01:00
Danhia 7b2552f0b5 added try except in case user cancels oauth 2022-02-18 11:11:34 +01:00
Danhia eac835bef5 removed merge artifact 2022-02-18 10:55:54 +01:00
Danhia 06593b26f9 fixed merge conflict 2022-02-17 23:59:21 +01:00
Danhia e8f5f33269 Merge branch 'challenges-description' into main 2022-02-17 23:50:28 +01:00
Danhia f0479f6577 Merge branch 'challenges-description' into main 2022-02-17 23:21:56 +01:00
Danhia 60a59b23e6 fixed error 500 when requesting german or russian translation 2022-02-17 23:21:41 +01:00
Danhia 8f32ef9a6e excluded the API from the i18n patterns 2022-02-17 13:09:11 +01:00
Danhia a0b76903a7 added endpoint API for bot 2022-02-17 12:40:40 +01:00
Danhia a7de7b8054 removed language code in redirect_uri 2022-02-17 12:21:17 +01:00
Danhia 0d734e98b1 removed language code in redirect_uri 2022-02-17 12:19:52 +01:00
Danhia 3d24fe9b3b tentative for fixing url redirect 2022-02-17 12:03:52 +01:00
Danhia ba0d75c250 restored discord OAuth, not working in local, let's test on preprod if the url problem is solved 2022-02-17 11:11:36 +01:00
Danhia 3ae80ca17f fixed end of sentence in french with quote badly escaped 2022-02-16 20:14:29 +01:00
Danhia a7e75b2a43 fixed quotes that where badly escaped in resources 2022-02-16 20:07:19 +01:00
Danhia 9ea67ae2a0 Merge branch 'main' into translation 2022-02-16 19:28:39 +01:00
Danhia 899a01e472 Merge branch 'main' into challenges-description 2022-02-16 15:41:52 +01:00
Danhia c40d49c326 Merge pull request 'Ressource page translation' (#22) from Starthur/website:main into translation
Reviewed-on: #22
2022-02-16 15:37:18 +01:00
Starthur d6b1380552 Last push before pull request 2022-02-16 15:23:15 +01:00
Arthur-TRT d0c93f98a1 Correct some mistake 2022-02-16 15:19:07 +01:00
Arthur-TRT 97e120e5fc First translation of Ressources in fr 2022-02-16 15:03:40 +01:00
Danhia 494377399c Merge pull request 'Update README' (#21) from update-readme into main
Reviewed-on: #21
2022-02-16 14:34:14 +01:00
Starthur 28d8874272 Update README
Better solution to create superuser admin
2022-02-16 14:33:21 +01:00
Starthur b9704d3cb3 Update README
Add information about migrate and admin right on local dev
2022-02-16 14:13:00 +01:00
Danhia 0ac395def8 Update 'requirements.txt' 2022-02-16 13:53:57 +01:00
Danhia 7ff556a986 Update 'README.md' 2022-02-16 13:50:19 +01:00
Danhia 5e02041f0c put challenges descriptions outside of the db 2022-02-15 18:13:43 +01:00
Danhia f75a034094 replaced jp with ja for news 2022-02-15 14:27:37 +01:00
Danhia 5f28bc5d2c Merge pull request '[translation] Added Japanese version' (#9) from ysaito/website:translation-jp into translation
Reviewed-on: #9
2022-02-15 13:20:02 +01:00
ysaito 904ce1b748 feat(welcome_ctf_2021.html): Added Japanese version 2022-02-15 18:11:00 +09:00
ysaito 5b15b9cd6f feat(sql_challenges.html): Added Japanese version 2022-02-15 18:07:48 +09:00
ysaito 5d46bd6df0 feat(speed_dating_ctf_2022.html): Added Japanese version 2022-02-15 18:06:46 +09:00
ysaito 67de669459 feat(dynamic_scoring.html): Added Japanese version 2022-02-15 18:05:43 +09:00
ysaito 26aeb6d7bd feat(42ctf_vm.html): Added Japanese version 2022-02-15 18:04:30 +09:00
Danhia 1b89fa88d8 updated all .po with makemessages 2022-02-14 19:38:16 +01:00
Danhia 0bb3a8b805 Merge pull request #8 from ClemaX/translation/de
German news translation and typos fix
2022-02-14 18:34:08 +00:00
Danhia 5eec76dd00 removed start challenge button when event is over 2022-02-14 19:18:00 +01:00
Clément Hamada 6b6f264fe0 news: locale: de: Initial translation 2022-02-13 21:47:03 +01:00
Clément Hamada c4fd6d05c3 locale: de: Fix some typos 2022-02-13 21:30:40 +01:00
Danhia 901c73a4f2 Merge branch 'main' of https://github.com/Danhia/42CTF into main 2022-02-13 13:14:24 +01:00
Danhia 01c0f28b16 hotfix for 500 when joining team 2022-02-13 13:13:54 +01:00
Danhia 7174cf9edb Update README.md 2022-02-12 20:35:41 +01:00
Danhia ef0fcc5fea Merge pull request #7 from Miliviu/main
Set Spanish to done in the readme todo list
2022-02-12 19:28:07 +00:00
Danhia aabba3ea53 dynamic scoring for events, i'm pretty sure everything is gonna break 2022-02-12 19:56:46 +01:00
Miliviu 1abeabebfe Set Spanish to done in the readme todo list 2022-02-11 19:55:50 +01:00
Danhia 9f2d78ac33 challenges not yet published 2022-02-09 14:14:41 +01:00
Danhia 27ed107501 Merge pull request #6 from Miliviu/main
Add translation of news to Spanish
2022-02-09 13:36:45 +01:00
Miliviu 0dea7fb619 Add translation of news to Spanish 2022-02-09 13:08:02 +01:00
60 changed files with 1378 additions and 950 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "src/ctfs/templates/challenges"]
path = src/ctfs/templates/challenges
url = https://gitea.42ctf.org/42CTF/challenges-descriptions.git

View File

@ -1,50 +1,34 @@
# 42ctf
CTF by 42 students
# 42CTF
[42CTF](https://www.42ctf.org) is a CTF platform created by School 42 students and open to anyone.
### Todo
- [x] Serveur SMTP & reset password
- [x] Clean le repo
- [x] Accès au chall après validation
- [x] Section "Intro"
- [x] Section Treasure Hunt
- [x] Edition de profil
- [x] Ajouter de la Doc
- [x] Infrastructure de pwn
- [x] Organiser une session découverte
- [x] Compteur de flags
- [x] Graphiques statistiques
- [x] Création d'un discord linkable
- [ ] Refonte du linkage discord -> 42ctf
- [x] Traduction du site
- [x] Anglais
- [x] Français
- [ ] Russe
- [ ] Espagnol
- [ ] Italien
- [ ] OAuth 42
- [ ] Feature proposer une solution à un challenge
- [ ] Système de badge/succès
- [ ] Génération d'une page résumant le profil d'un utilisateur (ex: show resume sur intra.42.fr)
TODO has been migrated to [issues](https://gitea.42ctf.org/42CTF/website/issues) !
And hopefully, it is not redirected anymore to `/dev/null`.
#### Event feature
### How to contribute ?
- [X] make relation between user and events
- [X] make scoreboard for events
- [X] make access mod for events :
- [X] Sub button for public events
- [X] Access by password
- [X] Begin date for display challenges
- [X] Ending date for stop flag submission
- [ ] Access by invite link
- [X] Admin rights
- [X] Admin can access to events pages without password
- [X] Admin can subscribe to event without password
- [X] process flag submission
- [X] increment user score in Scores model
- [X] add filters for admin dashboard
- [X] add search in fields in admin dashboard
- [X] display more information in admin dashboard
- [X] Smooth display of events listing
- [X] Event info page with background and noice display
- [ ] Create teams for events
First, you need to contact a 42CTF admin to get an account on the 42CTF gitea.
You can contact us on [discord](https://discord.gg/3KDvt6hbWW) or by [email](mailto:42ctf@protonmail.com).
You can also fill this [form](https://forms.42l.fr/apps/forms/bpmyGR37AR4yHGnC) and we'll contact you.
Then, once you have a gitea account, you can fork this repository, do some stuff, and open a pull request.
If you want to translate the platform, then have a look at the [wiki](https://gitea.42ctf.org/42CTF/website/wiki).
If you want to help with bot development, it has now its own [repository](https://gitea.42ctf.org/42CTF/bot)
### How to set up my dev environment ?
There is only one file missing on this repository for you to run the server: `local_settings.py`.
You should create one in the `src` directory, with the following content:
```
DEBUG = True
SECRET_KEY = 'what you want'
```
When you'll run `python manage.py migrate` then `python manage.py runserver`, an empty database will be automatically created.
The `local_settings.py` is in the `.gitignore` and should stay that way, so we don't accidentally overwrite the production file when we deploy.
To obtain administrator rights you can run `python manage.py createsuperuser`.

104
bot.py
View File

@ -1,104 +0,0 @@
import os
import discord
import discord.utils
import urllib.request, json
import asyncio
import json
import logging
TOKEN = os.getenv('DISCORD_TOKEN')
GUILD = '42ctf'
intents = discord.Intents.all()
client = discord.Client(intents=intents)
db_file = open('members.json', 'r')
users = json.load(db_file)
db_file.close()
logging.basicConfig(filename='bot.log', format='%(asctime)s %(message)s', level=logging.INFO)
guild = ''
roles = {}
def get_rank(token):
url = urllib.request.urlopen("https://www.42ctf.org/accounts/rank/" + token)
data = json.loads(url.read().decode())
rank = data['rank']
return rank
async def watch_roles():
global users
await client.wait_until_ready() # ensures cache is loaded
while not client.is_closed():
for member_id, token in users.items():
if (token == "0000"):
continue
member = discord.utils.get(guild.members, id=int(member_id))
rank = get_rank(token)
if rank == 1 and roles['top1'] not in member.roles:
await member.add_roles(roles['top1'])
await member.remove_roles(roles['top10'])
await member.remove_roles(roles['top50'])
elif rank > 1 and rank <= 10 and roles['top10'] not in member.roles:
await member.add_roles(roles['top10'])
await member.remove_roles(roles['top1'])
await member.remove_roles(roles['top50'])
elif rank > 10 and rank <= 50 and roles['top50'] not in member.roles:
await member.add_roles(roles['top50'])
await member.remove_roles(roles['top10'])
await member.remove_roles(roles['top1'])
elif rank > 50:
await member.remove_roles(roles['top1'])
await member.remove_roles(roles['top10'])
await member.remove_roles(roles['top50'])
await asyncio.sleep(60)
@client.event
async def on_ready():
global guild, roles
guild = discord.utils.get(client.guilds, name=GUILD)
roles['top10'] = discord.utils.get(guild.roles, id=801787467064672286)
roles['top1'] = discord.utils.get(guild.roles, id=798638767359524875)
roles['top50'] = discord.utils.get(guild.roles, id=803729539145924649)
logging.info('%s is connected to the following guild: %s(id: %d)', client.user, guild.name, guild.id)
client.loop.create_task(watch_roles())
@client.event
async def on_message(message):
global guild, roles
if message.author == client.user:
return
if '!connect' in message.content:
try:
user_token = message.content.split(' ')[1]
member = discord.utils.get(guild.members, name=message.author.name)
rank = get_rank(user_token)
users[str(member.id)] = user_token
logging.info("MESSAGE: from %s with token %s", message.author.name, user_token)
with open('members.json', 'w') as json_file:
json.dump(users, json_file)
if rank == 1:
await member.add_roles(roles['top1'])
response = "Congratulations, you're now Top 1. But for how long ?"
elif (rank <= 10):
await member.add_roles(roles['top10'])
response = "You've been granted the Top 10 role. Now, go away and flag !"
elif rank <= 50:
await member.add_roles(roles['top50'])
response = "You've been granted the Top 50 role. Now, go away and flag !"
else:
response = "No role for you now, but I'll keep watching you."
except IndexError:
response = 'usage: !connect 42ctf_token'
await message.author.create_dm()
await message.author.dm_channel.send(response)
client.run(TOKEN)

View File

@ -1,3 +1,3 @@
Django
requests
authlib
Django==3.2.11
requests==2.27.1
authlib==0.15.5

View File

@ -2,67 +2,89 @@
{% block content %}
{% load i18n %}
<div class="row">
<div class="col-sm-12 col-md-9">
<div class="ctf-block">
<div class="ctf-head">
<h3>Edit info</h3>
</div>
<div class="bloc-body">
<div class="col-sm-12 col-md-12 mx-auto">
{{ u_form.non_field_errors }}
{% if error is not None %}
<div class="col-sm-12 col-md-9">
<div class="ctf-block">
<div class="ctf-head">
<h3>Edit info</h3>
</div>
<div class="bloc-body">
<div class="col-sm-12 col-md-12 mx-auto">
{{ u_form.non_field_errors }}
{% if error is not None %}
<span class="message error-msg">{{ error }}</span>
{% elif success is not None %}
{% elif success is not None %}
<span class="message success-msg">{{ success }}</span>
{% endif %}
<form method='POST'>
<div class="edit-infos-grp">
{% endif %}
<form method='POST'>
<div class="edit-infos-grp">
{%csrf_token%}
<label for="{{ u_form.username.id_for_label }}">{% trans "Username" %} *</label>
{{ u_form.username.errors}}
{{u_form.username}}
</br>
<label for="{{ u_form.email.id_for_label }}">{% trans "Email" %} *</label>
{{ u_form.email.errors}}
{{u_form.email}}
</br>
</br>
<label for="{{ p_form.portfolio_site.id_for_label }}">{% trans "Website" %}</label>
{{p_form.portfolio_site}}
</br>
</br>Token
<input type='text' readonly value='{{token}}'>
</br>
<input class="form-control" type="submit" value="{% trans " Apply" %}">
</div>
</form>
</div>
</div>
</div>
<div class="ctf-block">
<div class="ctf-head">
<h3>{% trans "Connected accounts" %}</h3>
</div>
<div class="bloc-body">
<div class="d-flex">
{% if user.userprofileinfo.discord_id|length > 0 %}
<form action="{% url 'accounts:connections-disconnect-discord' %}" method='POST'
class="form-inline p-2">
{%csrf_token%}
<label for="{{ u_form.username.id_for_label }}">{% trans "Username" %} *</label>
{{ u_form.username.errors}}
{{u_form.username}}
</br>
<label for="{{ u_form.email.id_for_label }}">{% trans "Email" %} *</label>
{{ u_form.email.errors}}
{{u_form.email}}
</br>
</br>
<label for="{{ p_form.portfolio_site.id_for_label }}">{% trans "Website" %}</label>
{{p_form.portfolio_site}}
</br>
</br>Token
<input type='text' readonly value='{{token}}'>
</br>
<input class="form-control" type="submit" value="{% trans "Apply" %}">
</div>
</form>
<button class="btn btn-dark" type="submit">{% trans "Disconnect Discord" %}</button>
</form>
{% else %}
<form action="{% url 'accounts:connections-connect-discord' %}" method='POST'
class="form-inline p-2">
{%csrf_token%}
<button class="btn btn-dark" type="submit">{% trans "Connect Discord" %}</button>
</form>
{% endif %}
</div>
</div>
</div>
</div>
</div>
<div class="d-none d-md-block col-10 col-md-3 right-sidebar">
<ul class="list-group">
<div class="d-none d-md-block col-10 col-md-3 right-sidebar">
<ul class="list-group">
<li class="list-group-item">{{ user.username }}</li>
<li class="list-group-item">{% trans "Score" %} : {{ user.userprofileinfo.score }}</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>
<li class="list-group-item">
<a href="{{ user.userprofileinfo.portfolio_site }}" target="_blank">
{{ user.userprofileinfo.portfolio_site }}
</a>
</li>
{% endif %}
<li class="list-group-item">{% trans "Registered since" %} {{ user.date_joined|date:"Y-m-d" }}</li>
</ul>
<ul class="list-group">
<form method='GET' action="{% url 'accounts:delete_account' %}">
{%csrf_token%}
<li class="list-group-item">
<input class="form-control" type="submit" value="{% trans "Delete my account" %}">
</li>
{%csrf_token%}
<li class="list-group-item">
<input class="form-control" type="submit" value="{% trans " Delete my account" %}">
</li>
</form>
</ul>
</div>
</ul>
</div>
{% endblock %}
</div>
{% endblock %}

View File

@ -4,47 +4,52 @@ from django.views.decorators.http import require_POST
from django.views.defaults import bad_request
from django.urls import reverse
from django.shortcuts import redirect
from django.contrib.sites.models import Site
import os
oauth = OAuth()
oauth.register(
name='discord',
client_id=os.getenv('OAUTH2_DISCORD_CLIENT_ID'),
client_secret=os.getenv('OAUTH2_DISCORD_CLIENT_SECRET'),
access_token_url='https://discord.com/api/oauth2/token',
authorize_url='https://discord.com/api/oauth2/authorize',
client_kwargs={'scope': 'identify'},
api_base_url='https://discord.com/api/'
name='discord',
client_id=os.getenv('OAUTH2_DISCORD_CLIENT_ID'),
client_secret=os.getenv('OAUTH2_DISCORD_CLIENT_SECRET'),
access_token_url='https://discord.com/api/oauth2/token',
authorize_url='https://discord.com/api/oauth2/authorize',
client_kwargs={'scope': 'identify'},
api_base_url='https://discord.com/api/'
)
@login_required
@require_POST
def connect(request):
if request.user.userprofileinfo.discord_id:
return bad_request(request, "Already connected")
redirect_uri = reverse('accounts:connections-connect-discord-authorize')
redirect_uri = request.build_absolute_uri(redirect_uri)
print(redirect_uri)
return oauth.discord.authorize_redirect(request, redirect_uri)
if request.user.userprofileinfo.discord_id:
return bad_request(request, "Already connected")
site = Site.objects.get_current()
redirect_uri = reverse('accounts:connections-connect-discord-authorize')
redirect_uri = "https://" + site.domain + redirect_uri[3:] # remove language code
print(redirect_uri)
return oauth.discord.authorize_redirect(request, redirect_uri)
@login_required
def authorize(request):
if request.user.userprofileinfo.discord_id:
return bad_request(request, "Already connected")
token = oauth.discord.authorize_access_token(request)
response = oauth.discord.get('users/@me', token=token)
response = response.json()
discord_id = response['id']
request.user.userprofileinfo.discord_id = discord_id
request.user.userprofileinfo.save()
return redirect('accounts:edit')
if request.user.userprofileinfo.discord_id:
return bad_request(request, "Already connected")
try:
token = oauth.discord.authorize_access_token(request)
except:
return redirect('accounts:edit')
response = oauth.discord.get('users/@me', token=token)
response = response.json()
discord_id = response['id']
request.user.userprofileinfo.discord_id = discord_id
request.user.userprofileinfo.save()
return redirect('accounts:edit')
@login_required
@require_POST
def disconnect(request):
if not request.user.userprofileinfo.discord_id:
return bad_request(request, "Already disconnected")
request.user.userprofileinfo.discord_id = None
request.user.userprofileinfo.save()
return redirect('accounts:edit')
if not request.user.userprofileinfo.discord_id:
return bad_request(request, "Already disconnected")
request.user.userprofileinfo.discord_id = None
request.user.userprofileinfo.save()
return redirect('accounts:edit')

View File

@ -155,17 +155,6 @@ def profile(request, user_name):
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})
def rank(request, token):
all_users = UserProfileInfo.objects.filter(score__gt=0).select_related().order_by('-score', 'last_submission_date', 'user__username')
rank = 1
for elem in all_users:
if elem.token == token:
break
rank += 1
data = {"rank": rank}
return JsonResponse(data)
@login_required
def delete_account(request):
if request.method == 'POST':
@ -181,4 +170,15 @@ def delete_account(request):
return render(request, 'accounts/delete.html', {'deleted': False, 'bad_password': True})
else:
return render(request, 'accounts/delete.html', {'deleted': False, 'bad_password': False} )
return render(request, 'accounts/delete.html', {'deleted': False, 'bad_password': False} )
def rank(request, token):
all_users = UserProfileInfo.objects.filter(score__gt=0).select_related().order_by('-score', 'last_submission_date', 'user__username')
rank = 1
for elem in all_users:
if elem.token == token:
break
rank += 1
data = {"rank": rank}
return JsonResponse(data)

0
src/api/__init__.py Normal file
View File

3
src/api/admin.py Normal file
View File

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

6
src/api/apps.py Normal file
View File

@ -0,0 +1,6 @@
from django.apps import AppConfig
class ApiConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'api'

View File

3
src/api/models.py Normal file
View File

@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

3
src/api/tests.py Normal file
View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

6
src/api/urls.py Normal file
View File

@ -0,0 +1,6 @@
from django.urls import path
from . import views
urlpatterns = [
path('bot/discord', views.discord_bot, name='discord_bot'),
]

27
src/api/views.py Normal file
View File

@ -0,0 +1,27 @@
from django.shortcuts import render
from accounts.models import UserProfileInfo
from django.http import JsonResponse
import os
# Create your views here.
def discord_bot(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 = {}
rank = 1
for user in all_users:
if user.discord_id:
data[user.discord_id] = rank
rank += 1
return JsonResponse(data)

View File

@ -0,0 +1,26 @@
# Generated by Django 3.2.11 on 2022-02-15 16:13
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ctfs', '0007_ctf_disabled'),
]
operations = [
migrations.RemoveField(
model_name='ctf',
name='description_de',
),
migrations.RemoveField(
model_name='ctf',
name='description_ru',
),
migrations.AddField(
model_name='ctf',
name='port',
field=models.PositiveSmallIntegerField(blank=True, null=True),
),
]

View File

@ -15,10 +15,9 @@ class CTF(models.Model):
disabled = models.BooleanField(default=False)
description = models.TextField(blank=True)
description_en = models.TextField(blank=True)
description_ru = models.TextField(blank=True)
description_de = models.TextField(blank=True)
file = models.FileField(blank=True, upload_to='challenges')
ctf_url = models.URLField(blank=True)
port = models.PositiveSmallIntegerField(null=True, blank=True)
event = models.ForeignKey(Event, null=True, blank=True, on_delete=models.CASCADE)
points = models.PositiveSmallIntegerField()
slug = models.SlugField(max_length=55)

@ -0,0 +1 @@
Subproject commit 18fac3978d21dc824bcffa2bc960aa2bf6b4abd9

View File

@ -2,6 +2,8 @@
{% block content %}
{% load i18n %}
{% load is_member %}
{% load get_chall %}
{% get_current_language as lang %}
<div class="row">
<div class="col-sm-12 col-md-9">
<div class="ctf-block">
@ -15,11 +17,11 @@
</div>
{% else %}
<div class="ctf-body">
{% if description %}
{{ description|safe }}
{% else %}
{% trans "No translation available. Please try another language (English or French)." %}
{% endif %}
{% get_chall_by_lang ctf lang as content %}
{{ content | safe }}
<!-- {% if ctf.port %}
<b>nc challenges.42ctf.org {{ ctf.port }}</b>
{% endif %} -->
</div>
<div class="ctf-footer">
{% if request.user.is_authenticated %}

View File

View File

@ -0,0 +1,14 @@
from django import template
register = template.Library()
@register.simple_tag
def get_chall_by_lang(chall, lang):
print(chall.slug)
filepath = "ctfs/templates/challenges/"+ lang + "/" + chall.slug + ".html"
print(filepath)
try:
with open(filepath) as fp:
return fp.read()
except:
return chall.description_en

View File

@ -8,19 +8,6 @@ from django.utils.translation import get_language
from math import log
from accounts.models import UserProfileInfo
def get_description_by_lang(ctf):
lang = get_language()
ret = None
if lang == "fr":
ret = ctf.description
elif lang == "en":
ret = ctf.description_en
elif lang == "de":
ret = ctf.description_de
elif lang == "ru":
ret = ctf.description_ru
return ret
def actualize_points(ctf):
if ctf.category.name == "-Intro-":
return
@ -50,7 +37,6 @@ def ctf(request, cat_slug, ctf_slug):
ctf_info = get_object_or_404(CTF, slug=ctf_slug, event=None)
flagged = False
solved_list = CTF_flags.objects.filter(ctf=ctf_info).order_by('flag_date')
description = get_description_by_lang(ctf_info)
if request.user.is_authenticated:
if CTF_flags.objects.filter(user=request.user, ctf=ctf_info):
flagged = True
@ -66,12 +52,12 @@ def ctf(request, cat_slug, ctf_slug):
profil.score += ctf_info.points
profil.save()
actualize_points(ctf_info)
return render(request, 'ctfs/ctf_info.html', { 'ctf' : ctf_info, 'solved_list': solved_list, 'valitated': True, 'description': description, 'date': timezone.now()})
return render(request, 'ctfs/ctf_info.html', { 'ctf' : ctf_info, 'solved_list': solved_list, 'valitated': True, 'date': timezone.now()})
else:
return render(request, 'ctfs/ctf_info.html', { 'ctf' : ctf_info, 'solved_list': solved_list, 'failed': True, 'description': description, 'date': timezone.now()})
return render(request, 'ctfs/ctf_info.html', { 'ctf' : ctf_info, 'solved_list': solved_list, 'failed': True, 'date': timezone.now()})
else:
return render(request, 'ctfs/ctf_info.html', { 'ctf' : ctf_info, 'solved_list': solved_list, 'alvalitated': True, 'description': description, 'date': timezone.now()})
return render(request, 'ctfs/ctf_info.html', { 'ctf' : ctf_info, 'solved_list': solved_list, 'alvalitated': True, 'date': timezone.now()})
else:
return render(request, 'ctfs/ctf_info.html', { 'ctf' : ctf_info, 'solved_list': solved_list, 'description': description, 'date': timezone.now()})
return render(request, 'ctfs/ctf_info.html', { 'ctf' : ctf_info, 'solved_list': solved_list, 'date': timezone.now()})
else:
return render(request, 'ctfs/ctf_info.html', { 'ctf' : ctf_info, 'solved_list': solved_list, 'alvalitated': flagged, 'description': description, 'date': timezone.now()})
return render(request, 'ctfs/ctf_info.html', { 'ctf' : ctf_info, 'solved_list': solved_list, 'alvalitated': flagged, 'date': timezone.now()})

View File

@ -0,0 +1,18 @@
# Generated by Django 3.1.5 on 2022-02-12 18:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('events', '0007_event_auto_match'),
]
operations = [
migrations.AddField(
model_name='event',
name='dynamic',
field=models.BooleanField(default=False),
),
]

View File

@ -0,0 +1,23 @@
# Generated by Django 3.2.11 on 2022-02-15 16:06
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('events', '0008_event_dynamic'),
]
operations = [
migrations.AlterField(
model_name='eventplayer',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='team',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
]

View File

@ -16,6 +16,7 @@ class Event(models.Model):
slug = models.SlugField(max_length=55)
team_size = models.PositiveIntegerField(default=1)
auto_match = models.BooleanField(default=False)
dynamic = models.BooleanField(default=False)
def __str__(self):
return self.name

View File

@ -29,7 +29,7 @@
{% elif errorform == True %}
<p>{% trans "Error while processing your request. (Invalid Form)" %}</p>
{% elif notsub == True %}
<span class="message error-msg">{% trans "Error: you're not registered to this event, so you can't register scores, fucking logic." %}</span>
<span class="message error-msg">{% trans "You must register to the event before submitting flags." %}</span>
{% elif noteam == True %}
<span class="message error-msg">{% trans "This is a team event, please create or join a team before submitting flags." %}</span>
{% if ctf.ctf_url %}

View File

@ -7,6 +7,7 @@ from ctfs.models import CTF, CTF_flags, Category
from django.utils.translation import get_language
from django.contrib.auth.models import User
from django.utils.translation import gettext_lazy as _
from math import log
def get_description_by_lang(ctf):
lang = get_language()
@ -21,6 +22,24 @@ def get_description_by_lang(ctf):
ret = ctf.description_ru
return ret
def actualize_points(ctf):
solves = CTF_flags.objects.filter(ctf=ctf)
nb_solves = len(solves)
new_points = max(50 - int(log(nb_solves)*2.5)*5, 5)
if new_points != ctf.points:
diff = ctf.points - new_points
ctf.points = new_points
ctf.save()
for s in solves:
player = EventPlayer.objects.get(event=ctf.event, user=s.user)
player.score -= diff
player.save()
if player.team:
player.team.score -= diff
player.team.save()
# Create your views here.
def events(request):
list_events = Event.objects.filter().order_by('-end_date', 'start_date')
@ -46,7 +65,7 @@ def chall_event_info(request, event_slug, chall_slug):
return redirect('events:event_info', event_slug=event_slug)
elif not request.user.is_authenticated:
return redirect('accounts:signin')
if request.GET.get('EventIsOver'):
if request.GET.get('EventIsOver') or timezone.now() > event_info.end_date:
eventisover = True
if request.GET.get('AlreadyFlagged'):
alreadyflag = True
@ -103,7 +122,7 @@ def event(request, event_slug):
begun = False
if timezone.now() >= event_info.start_date:
begun = True
challenges = CTF.objects.filter(event=event_info).order_by('category', 'points')
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:
@ -115,6 +134,7 @@ def event(request, event_slug):
def submit_event_flag(request, event_slug, chall_slug):
ev = get_object_or_404(Event, slug=event_slug)
response = redirect('events:event_chall_info', event_slug=event_slug, chall_slug=chall_slug)
flagged = False
if timezone.now() >= ev.end_date:
response['Location'] += '?EventIsOver=1'
@ -126,8 +146,10 @@ def submit_event_flag(request, event_slug, chall_slug):
response['Location'] += '?ChallengeNotFound=1'
return response
flagged = False
player = EventPlayer.objects.get(user=request.user, event=ev)
try:
player = EventPlayer.objects.get(event=ev, user=request.user)
except:
player = None
if player:
if ev.team_size > 1 and player.team is None:
@ -160,6 +182,8 @@ def submit_event_flag(request, event_slug, chall_slug):
player.team.last_submission_date = timezone.now()
player.team.score += ctf_info.points
player.team.save()
if ev.dynamic:
actualize_points(ctf_info)
response['Location'] += '?Congrat=1'
return response
else:

View File

@ -46,6 +46,7 @@ def join_team(request, event_slug):
player = EventPlayer.objects.get(user=request.user, event=ev)
player.team = team
player.save()
return redirect('events:event_info', event_slug=event_slug)
else:
return render(request, 'events/join_team.html', {'event' : ev, 'logged': True, 'wrongpwd': False, 'registered' : True, 'notexist' : False})

View File

@ -0,0 +1,4 @@
Wie Sie es vielleicht schon wissen, braucht man um CTF Herausforderungen zu lösen viele Werkzeuge und es ist manchmal schwierig zu wissen welche benötigt werden.</br>
Wir haben eine VM erstellt, mit vorinstallierten Werkzeugen, damit Sie sich auf das wesentliche konzentrieren können: Flaggen!</br>
Alles was Sie tun müssen ist diese <b><a href="/media/xubuntu-42ctf.ova">OVA</a></b> herunterzuladen und auf <b><a href="https://www.virtualbox.org/wiki/Downloads">Virtual Box</a></b> zu importieren.<br>
Also, worauf warten Sie?

View File

@ -0,0 +1,7 @@
Haben Sie eine Änderung am Punktestand bemerkt?<br><br>
Keine Panik, alle Ihre Flaggen sind in Sicherheit. Wir haben bloß zu dynamischen Belohnungen gewächselt. Das heißt, dass die Punktzahl der Herausforderungen nicht mehr festgelegt ist: sie sinken nun jedes Mal, dass die Herausforderung gelöst wird.
Belohnungspunkte beginnen bei 200 und können nicht unter 5 fallen.<br><br>
Wir erhoffen, dass dadurch die echte Schwierigkeit der Herausforderungen besser gespiegelt werden kann. Zeitgebundene Ereignisse sind von dieser Änderung nicht beinträchtigt.

View File

@ -0,0 +1,9 @@
Suchen Sie Ihren Seelenverwandten, einen neuen Freund oder bloß einen dezenten CTF-Partner?<br><br>
Wir bei 42CTF haben was Sie brauchen: den <a href="/events/speed_dating_2022">Speed Dating CTF</a>!<br><br>
Kommen Sie alleine oder gut begleitet zu diesem sehr kurzen Wettbewerb, der nur 4 Studen dauern wird.<br>
Für dieses Team-CTF können Sie nur auf einen anderen Spieler zählen.<br>
Sie können entweder Ihren Partner aussuchen oder das Schicksal für sie entscheiden lassen.<br><br>
Viel Glück!

View File

@ -0,0 +1,8 @@
Schon immer lust gehabt etwas über SQL-Einbrüche zu lernen?<br>
<br>
Wir bieten Ihnen drei brandneue Herausvorderungen erstellt von <b><a class=profile_link href=https://www.42ctf.org/accounts/profile/aldubar>aldubar</a></b>:<br>
- <b><a href='https://www.42ctf.org/ctfs/web/simple_question_1'>Simple Question of Logic 1</a></b> (10 Punkte)<br>
- <b><a href='https://www.42ctf.org/ctfs/web/simple_question_2'>Simple Question of Logic 2</a></b> (30 Punkte)<br>
- <b><a href='https://www.42ctf.org/ctfs/web/simple_question_3'>Simple Question of Logic 3</a></b> (40 Punkte)<br>
<br>
Vergessen Sie nicht, dass Sie uns jederzeit auf <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a> erreichen können, um uns neue Herausforderungen vorzuschalgen!

View File

@ -0,0 +1,9 @@
Neues zeitgebundenes Ereignis: <b>Welcome CTF 2021</b>!<br><br>
Datum: vom 10.12.2021 20 Uhr biz zum 12.12.2021 20 Uhr (Pariser Zeit).<br>
Es ist ein CTF um die Studenten die neulich 42 beigetreten haben zu begrüßen.<br>
Es wird nur für die Personen die ihren Kursus <b>nach</b> dem 01.09.2021 begonnen haben zugänglich sein.<br><br>
Ansonsten können Sie trotzdem die auf der Webseite bereits verfügbaren Herausforderungen lösen und versuchen das Top 10 zu erreichen!<br><br>
Registrieren Sie sich <a href=https://forms.42l.fr/apps/forms/SooTbnT4PCs9na7C>hier</a>.

View File

@ -0,0 +1,4 @@
Como ya sabrás, resolver retos CTF requiere un montón de herramientas y puede ser dificil encontrar cuales tienes que instalar. </br>
Hemos hecho una máquina virtual con todo lo que necesitas para resolver para resolver retos de 42CTF, para que te puedas concentrar en lo importante: Flags! </br>
Todo lo que necesitas es descargar esto <b><a href="/media/xubuntu-42ctf.ova">OVA</a></b> e importarlo en <b><a href="https://www.virtualbox.org/wiki/Downloads">Virtual Box</a>.<br></b>
¿A qué estás esperando?

View File

@ -0,0 +1,7 @@
¿ Has notado un pequeño cambio en la Tabla de Puntos de 42CTF ?<br><br>
No entres en pánico, todas tus flags estan a salvo. Solo hemos cambiado a puntuación dinámica. Esto significa que los puntos de retos no son fijos: irán disminuyendo cada vez que son resueltos.<br>
Los puntos de retos empiezan en 200, y no pueden valer menos de 5 puntos. <br><br>
Esperamos que esto ayude a reflejar la dificultad del reto. Eventos de tiempo limitado nos e ven afectados por este cambio.

View File

@ -0,0 +1,9 @@
¿ Estás buscando tu alma gemela ? ¿ Un nuevo amigo ? ¿ O simplemente un buen compañero de CTF ?<br><br>
Aquí en 42CTF tenemos lo que necesitas: el <a href="/events/speed_dating_2022">Speed Dating CTF</a> !<br><br>
Ven solo o en compañía a esta competición cortita, que solo durará 4 horas.<br>
Podrás contar con un solo compañero para este CTF por equipos.<br>
Puedes o elegir un compañero o dejar a la fortuna que elija por ti.<br><br>
¡ Buena suerte !

View File

@ -0,0 +1,8 @@
¿ Siempre has querido aprender sobre SQL injection ? <br>
<br>
Te ofrecemos tres nuevos retos creados por <b><a class=profile_link href=https://www.42ctf.org/accounts/profile/aldubar>aldubar</a></b>:<br>
- <b><a href='https://www.42ctf.org/ctfs/web/simple_question_1'>Cuestión de lógica simple 1</a></b> (10 puntos)<br>
- <b><a href='https://www.42ctf.org/ctfs/web/simple_question_2'>Cuestión de lógica simple 2</a></b> (30 puntos)<br>
- <b><a href='https://www.42ctf.org/ctfs/web/simple_question_3'>Cuestión de lógica simple 3</a></b> (40 puntos)<br>
<br>
No te olvides que siempre puedes contactarnos en <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a> para proponer nuevos retos !

View File

@ -0,0 +1,9 @@
Nuevo evento de tiempo limitado: <b>Bienvenida a CTF 2021</b> !<br><br>
Fechas: desde 10/12/2021 8pm a 12/12/2021 8pm (Hora parís).<br>
Este CTF es una bienvenida para los nuevos estudiantes que se unan a 42.<br>
Solo estará disponible para las personas que empezaron su cursus <b>después</b> de 01/09/2021.<br><br>
Para otros, puedes resolver otros retos ya disponibles e intentar llegar al top 10! <br><br>
Registro: <a href=https://forms.42l.fr/apps/forms/SooTbnT4PCs9na7C>aquí</a>

View File

@ -0,0 +1,4 @@
すでにお気づきかもしれませんが、CTFの課題を解くには多くのツールが必要で、どれをインストールすれば良いのかがわかりにくいかもしれません。</br>
私たちは、あなたが本当に重要なことに集中できるように、42CTFの課題に必要な全てのツールを備えたVMを作成しました。重要なのはフラグです</br>
この<b><a href="/media/xubuntu-42ctf.ova">OVA</a></b>をダウンロードし、<b><a href="https://www.virtualbox.org/wiki/Downloads">Virtual Box</a></b>にインポートするだけです。<br>
さて、何をためらっているのですか?

View File

@ -0,0 +1,7 @@
42CTFのスコアボードにちょっとした変化があったことにお気づきですか<br><br>
慌てないでください、 あなたのフラグはすべて無事です。 動的スコアリングに切り替えただけです。 それはチャレンジポイントがもう固定ではないことを意味します。解決するたびに減少します。<br>
チャレンジポイントは200から始まり、5より低くなることはありません。<br><br>
これにより、課題の実際の難易度をより良く反映できるようになると期待しています。期間限定イベントは、この変更の影響は受けません。

View File

@ -0,0 +1,9 @@
ソウルメイト、新しい友達、またはちょうど良いCTFの仲間を探していますか<br><br>
私たち42CTFは、あなたが求めているものを持っています。それは<a href="/events/speed_dating_2022">Speed Dating CTF</a>です!<br><br>
4時間という短い時間ですが、お一人でも、お仲間とご一緒でも、ぜひご参加ください。<br>
このチーム戦CTFでは、自分以外の一人のプレーヤーのみ頼ることができます。<br>
相手を選ぶもよし、運命に身を任せるもよし。<br><br>
幸運を祈ります!

View File

@ -0,0 +1,8 @@
SQLインジェクションについて学びたいと思ったことはありませんか<br>
<br>
<b><a class=profile_link href=https://www.42ctf.org/accounts/profile/aldubar>aldubar</a></b>が作成した全く新しい3つの課題を提供します。<br>
- <b><a href='https://www.42ctf.org/ctfs/web/simple_question_1'>Simple Question of Logic 1</a></b> (10 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>
<br>
新しい課題を提案するために、<a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a>へいつでも連絡できることを忘れないでください!

View File

@ -0,0 +1,9 @@
期間限定の新イベント:<b>Welcome CTF 2021</b><br><br>
日程2021年12月10日20時2021年12月12日20時パリ時間<br>
42に入学する新入生を歓迎するためのCTFです。<br>
2021年9月1日<b>以降</b>にカーサスを開始した方のみアクセス可能です。<br><br>
それ以外の方は、ウェブサイト上で公開されている課題を解いて、トップ10入りを目指してください<br><br>
登録は<a href=https://forms.42l.fr/apps/forms/SooTbnT4PCs9na7C>こちら</a>

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-04 19:27+0100\n"
"PO-Revision-Date: 2022-02-04 05:56+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: 2022-02-10 19:50+0100\n"
"Last-Translator: Clément Hamada <clementhamada@pm.me>\n"
"Language-Team: \n"
"Language: de\n"
@ -16,7 +16,6 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.0\n"
#: accounts/templates/accounts/delete.html:8
msgid "Delete account"
@ -24,7 +23,7 @@ msgstr "Account löschen"
#: accounts/templates/accounts/delete.html:11
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
msgid "Deleted accounts cannot be recovered."
@ -49,8 +48,8 @@ msgstr "Passwort"
#: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:61 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:71
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:65
#: events/templates/events/event_info.html:64
#: scoreboard/templates/scoreboard/scoreboard.html:13
msgid "Username"
@ -61,8 +60,8 @@ msgid "Email"
msgstr "Email"
#: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:62
#: events/templates/events/ctf_info.html:72
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:66
#: events/templates/events/event_info.html:65
#: scoreboard/templates/scoreboard/scoreboard.html:14
msgid "Website"
@ -75,7 +74,7 @@ msgstr "Anwenden"
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/profile.html:46
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:13
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
#: events/templates/events/event_info.html:66
#: events/templates/events/event_info.html:89
#: events/templates/events/manage_team.html:40
@ -139,8 +138,8 @@ msgid "Points"
msgstr "Punkte"
#: accounts/templates/accounts/profile.html:24
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:73
#: ctfs/templates/ctfs/ctf_info.html:66
#: events/templates/events/ctf_info.html:67
#: events/templates/events/team.html:23
msgid "Date"
msgstr "Datum"
@ -220,67 +219,59 @@ msgstr "Nutzername bereits vergeben."
msgid "Updated."
msgstr "Aktualisiert."
#: ctfs/templates/ctfs/ctf_info.html:10
#: ctfs/templates/ctfs/ctf_info.html:12
#: events/templates/events/ctf_info.html:12
msgid "Published date"
msgstr "Veröffentlichungsdatum"
#: ctfs/templates/ctfs/ctf_info.html:14
#: ctfs/templates/ctfs/ctf_info.html:16
msgid "Challenge is not yet available."
msgstr "Herausforderung ist noch nicht verfügbar."
#: ctfs/templates/ctfs/ctf_info.html:21
#: events/templates/events/ctf_info.html:18 home/templates/home/home.html:46
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
"Keine Übersetzung verfügbar. Bitte versuchen Sie es auf einer anderen "
"Sprache noch einmal (Englisch oder Französisch)."
#: ctfs/templates/ctfs/ctf_info.html:27
#: events/templates/events/ctf_info.html:32
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr "Herzlichen Glückwunsch!"
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:34
#: ctfs/templates/ctfs/ctf_info.html:31
#: events/templates/events/ctf_info.html:26
msgid "Already flagged"
msgstr "Schon gelöst"
#: ctfs/templates/ctfs/ctf_info.html:31 ctfs/templates/ctfs/ctf_info.html:40
#: events/templates/events/ctf_info.html:42
#: events/templates/events/ctf_info.html:51
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:36
#: events/templates/events/ctf_info.html:45
msgid "Start the challenge"
msgstr "Herausforderung beginnen"
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:44
#: events/templates/events/ctf_info.html:53
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:47
msgid "Download"
msgstr "Herunterladen"
#: ctfs/templates/ctfs/ctf_info.html:37
#: events/templates/events/ctf_info.html:48
#: ctfs/templates/ctfs/ctf_info.html:39
#: events/templates/events/ctf_info.html:42
msgid "Wrong flag ! You can do it !"
msgstr "Falsche flagge! Sie können es schaffen!"
#: ctfs/templates/ctfs/ctf_info.html:56
#: events/templates/events/ctf_info.html:66
#: ctfs/templates/ctfs/ctf_info.html:58
#: events/templates/events/ctf_info.html:60
msgid "Solved by"
msgstr "Gelöst von"
#: ctfs/templates/ctfs/ctf_info.html:80
#: events/templates/events/ctf_info.html:96
#: ctfs/templates/ctfs/ctf_info.html:82
#: events/templates/events/ctf_info.html:90
msgid "Nobody has solved this challenge yet."
msgstr "Bisher hat noch niemand diese Herausforderung gelöst."
#: ctfs/templates/ctfs/ctf_info.html:87
#: events/templates/events/ctf_info.html:103
#: ctfs/templates/ctfs/ctf_info.html:89
#: events/templates/events/ctf_info.html:97
msgid "Author"
msgstr "Autor/-in"
#: ctfs/templates/ctfs/ctf_info.html:88
#: events/templates/events/ctf_info.html:104
#: ctfs/templates/ctfs/ctf_info.html:90
#: events/templates/events/ctf_info.html:98
msgid "Point reward"
msgstr "Belohnungspunkte"
@ -361,7 +352,7 @@ msgstr "Team beitreten"
#: events/templates/events/create_team.html:53
#: events/templates/events/join_team.html:58
msgid "Auto-matching"
msgstr ""
msgstr "Auto-Matching"
#: events/templates/events/create_team.html:57
#: events/templates/events/join_team.html:62
@ -372,33 +363,39 @@ msgstr "Finde mir einen Team!"
msgid "Event"
msgstr "Ereignis"
#: events/templates/events/ctf_info.html:25
#: events/templates/events/event_info.html:9
msgid "Subscriptions is over."
msgstr "Die Registrierung hat geendet."
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
"Keine Übersetzung verfügbar. Bitte versuchen Sie es auf einer anderen "
"Sprache noch einmal (Englisch oder Französisch)."
#: events/templates/events/ctf_info.html:28
#: events/templates/events/event_info.html:12
#: events/templates/events/event_pwd.html:18
msgid "You're already registered to this event."
msgstr "Sie haben sich schon für dieses Ereignis registriert."
#: events/templates/events/ctf_info.html:36
#: events/templates/events/event_info.html:18
msgid "This event is over."
msgstr "Dieses Ereignis hat bereits geendet."
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:30
msgid "Error while processing your request. (Invalid Form)"
msgstr "Fehler während der Verarbeitung ihrer Anfrage. (Ungültiges Formular)"
#: events/templates/events/ctf_info.html:40
msgid ""
"Error: you're not registered to this event, so you can't register scores, "
"fucking logic."
#: events/templates/events/ctf_info.html:32
msgid "You must register to the event before submitting flags."
msgstr ""
"Fehler: Sie nehmen an diesem Ereignis nicht teil, und können deshalb keinen "
"Punktestand registrieren."
#: events/templates/events/ctf_info.html:34
msgid ""
"This is a team event, please create or join a team before submitting flags."
msgstr ""
#: events/templates/events/event_info.html:9
msgid "Subscriptions is over."
msgstr "Die Registrierung hat geendet."
#: events/templates/events/event_info.html:12
#: events/templates/events/event_pwd.html:18
msgid "You're already registered to this event."
msgstr "Sie haben sich schon für dieses Ereignis registriert."
#: events/templates/events/event_info.html:20
#: events/templates/events/event_pwd.html:9
@ -471,43 +468,55 @@ msgstr "Teampasswort"
msgid "Members"
msgstr "Mitgliede"
#: events/templates/events/manage_team.html:51
#: events/templates/events/manage_team.html:52
msgid "Leave Team"
msgstr "Team verlassen"
#: events/templates/events/manage_team.html:59
#, fuzzy
#| msgid "Auto-matching"
msgid "Open to automatching"
msgstr "Auto-Matching"
#: events/templates/events/manage_team.html:66
#, fuzzy
#| msgid "Auto-matching"
msgid "Close to automatching"
msgstr "Auto-Matching"
#: events/templates/events/team.html:38
msgid "It seems that this team has not solved any challenge yet..."
msgstr "Dieses Team scheint noch keine Herausforderung gelöst zu haben..."
#: home/templates/home/home.html:20
#: home/templates/home/home.html:21
msgid "Weekly Top 5"
msgstr "Top 5 der Woche"
#: home/templates/home/home.html:56
#: home/templates/home/home.html:48
msgid "No article available."
msgstr "Kein Artikel verfügbar."
#: home/templates/home/home.html:61
#: home/templates/home/home.html:53
msgid "Latest challenges added"
msgstr "Letzte Herausforderung hinzugefügt"
msgstr "Neue Herausforderungen"
#: home/templates/home/home.html:66
#: home/templates/home/home.html:58
msgid "points"
msgstr "Punkte"
#: home/templates/home/home.html:70
#: home/templates/home/home.html:62
msgid "No ctf available."
msgstr "Kein CTF verfügbar."
#: home/templates/home/home.html:74
#: home/templates/home/home.html:66
msgid "Latest Flags"
msgstr "Letzte Flaggen"
#: home/templates/home/home.html:88
#: home/templates/home/home.html:80
msgid "Flags"
msgstr "Flaggen"
#: home/templates/home/home.html:94
#: home/templates/home/home.html:86
msgid "Users"
msgstr "Nutzer"
@ -527,6 +536,14 @@ msgstr "Französisch"
msgid "Russian"
msgstr "Russisch"
#: project/settings.py:119
msgid "Japanese"
msgstr ""
#: project/settings.py:120
msgid "Spanish"
msgstr ""
#: scoreboard/templates/scoreboard/scoreboard.html:38
msgid "First"
msgstr "Erste"
@ -607,6 +624,13 @@ msgstr ""
msgid "Reset"
msgstr "Zurücksetzen"
#~ msgid ""
#~ "Error: you're not registered to this event, so you can't register scores, "
#~ "fucking logic."
#~ msgstr ""
#~ "Fehler: Sie nehmen an diesem Ereignis nicht teil, und können deshalb "
#~ "keinen Punktestand registrieren."
#, fuzzy
#~| msgid "Manage my team"
#~ msgid "Manage team"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-04 19:27+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -49,8 +49,8 @@ msgstr ""
#: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:61 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:71
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:65
#: events/templates/events/event_info.html:64
#: scoreboard/templates/scoreboard/scoreboard.html:13
msgid "Username"
@ -61,8 +61,8 @@ msgid "Email"
msgstr ""
#: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:62
#: events/templates/events/ctf_info.html:72
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:66
#: events/templates/events/event_info.html:65
#: scoreboard/templates/scoreboard/scoreboard.html:14
msgid "Website"
@ -75,7 +75,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/profile.html:46
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:13
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
#: events/templates/events/event_info.html:66
#: events/templates/events/event_info.html:89
#: events/templates/events/manage_team.html:40
@ -139,8 +139,8 @@ msgid "Points"
msgstr ""
#: accounts/templates/accounts/profile.html:24
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:73
#: ctfs/templates/ctfs/ctf_info.html:66
#: events/templates/events/ctf_info.html:67
#: events/templates/events/team.html:23
msgid "Date"
msgstr ""
@ -218,65 +218,59 @@ msgstr ""
msgid "Updated."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:10
#: ctfs/templates/ctfs/ctf_info.html:12
#: events/templates/events/ctf_info.html:12
msgid "Published date"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:14
#: ctfs/templates/ctfs/ctf_info.html:16
msgid "Challenge is not yet available."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21
#: events/templates/events/ctf_info.html:18 home/templates/home/home.html:46
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:27
#: events/templates/events/ctf_info.html:32
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:34
#: ctfs/templates/ctfs/ctf_info.html:31
#: events/templates/events/ctf_info.html:26
msgid "Already flagged"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:31 ctfs/templates/ctfs/ctf_info.html:40
#: events/templates/events/ctf_info.html:42
#: events/templates/events/ctf_info.html:51
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:36
#: events/templates/events/ctf_info.html:45
msgid "Start the challenge"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:44
#: events/templates/events/ctf_info.html:53
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:47
msgid "Download"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:37
#: events/templates/events/ctf_info.html:48
#: ctfs/templates/ctfs/ctf_info.html:39
#: events/templates/events/ctf_info.html:42
msgid "Wrong flag ! You can do it !"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:56
#: events/templates/events/ctf_info.html:66
#: ctfs/templates/ctfs/ctf_info.html:58
#: events/templates/events/ctf_info.html:60
msgid "Solved by"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:80
#: events/templates/events/ctf_info.html:96
#: ctfs/templates/ctfs/ctf_info.html:82
#: events/templates/events/ctf_info.html:90
msgid "Nobody has solved this challenge yet."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:87
#: events/templates/events/ctf_info.html:103
#: ctfs/templates/ctfs/ctf_info.html:89
#: events/templates/events/ctf_info.html:97
msgid "Author"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:88
#: events/templates/events/ctf_info.html:104
#: ctfs/templates/ctfs/ctf_info.html:90
#: events/templates/events/ctf_info.html:98
msgid "Point reward"
msgstr ""
@ -368,30 +362,36 @@ msgstr ""
msgid "Event"
msgstr ""
#: events/templates/events/ctf_info.html:25
#: events/templates/events/event_info.html:9
msgid "Subscriptions is over."
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: events/templates/events/ctf_info.html:28
#: events/templates/events/event_info.html:12
#: events/templates/events/event_pwd.html:18
msgid "You're already registered to this event."
msgstr ""
#: events/templates/events/ctf_info.html:36
#: events/templates/events/event_info.html:18
msgid "This event is over."
msgstr ""
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:30
msgid "Error while processing your request. (Invalid Form)"
msgstr ""
#: events/templates/events/ctf_info.html:40
#: events/templates/events/ctf_info.html:32
msgid "You must register to the event before submitting flags."
msgstr ""
#: events/templates/events/ctf_info.html:34
msgid ""
"Error: you're not registered to this event, so you can't register scores, "
"fucking logic."
"This is a team event, please create or join a team before submitting flags."
msgstr ""
#: events/templates/events/event_info.html:9
msgid "Subscriptions is over."
msgstr ""
#: events/templates/events/event_info.html:12
#: events/templates/events/event_pwd.html:18
msgid "You're already registered to this event."
msgstr ""
#: events/templates/events/event_info.html:20
@ -465,43 +465,51 @@ msgstr ""
msgid "Members"
msgstr ""
#: events/templates/events/manage_team.html:51
#: events/templates/events/manage_team.html:52
msgid "Leave Team"
msgstr ""
#: events/templates/events/manage_team.html:59
msgid "Open to automatching"
msgstr ""
#: events/templates/events/manage_team.html:66
msgid "Close to automatching"
msgstr ""
#: events/templates/events/team.html:38
msgid "It seems that this team has not solved any challenge yet..."
msgstr ""
#: home/templates/home/home.html:20
#: home/templates/home/home.html:21
msgid "Weekly Top 5"
msgstr ""
#: home/templates/home/home.html:56
#: home/templates/home/home.html:48
msgid "No article available."
msgstr ""
#: home/templates/home/home.html:61
#: home/templates/home/home.html:53
msgid "Latest challenges added"
msgstr ""
#: home/templates/home/home.html:66
#: home/templates/home/home.html:58
msgid "points"
msgstr ""
#: home/templates/home/home.html:70
#: home/templates/home/home.html:62
msgid "No ctf available."
msgstr ""
#: home/templates/home/home.html:74
#: home/templates/home/home.html:66
msgid "Latest Flags"
msgstr ""
#: home/templates/home/home.html:88
#: home/templates/home/home.html:80
msgid "Flags"
msgstr ""
#: home/templates/home/home.html:94
#: home/templates/home/home.html:86
msgid "Users"
msgstr ""
@ -521,6 +529,14 @@ msgstr ""
msgid "Russian"
msgstr ""
#: project/settings.py:119
msgid "Japanese"
msgstr ""
#: project/settings.py:120
msgid "Spanish"
msgstr ""
#: scoreboard/templates/scoreboard/scoreboard.html:38
msgid "First"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-04 19:27+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: 2022-02-09 10:55+0100\n"
"Last-Translator: Javier Uhagón (uhagontorralvojavier@gmail.com)\n"
"Language-Team: \n"
@ -49,8 +49,8 @@ msgstr "Contraseña"
#: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:61 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:71
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:65
#: events/templates/events/event_info.html:64
#: scoreboard/templates/scoreboard/scoreboard.html:13
msgid "Username"
@ -61,8 +61,8 @@ msgid "Email"
msgstr "Email"
#: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:62
#: events/templates/events/ctf_info.html:72
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:66
#: events/templates/events/event_info.html:65
#: scoreboard/templates/scoreboard/scoreboard.html:14
msgid "Website"
@ -75,7 +75,7 @@ msgstr "Aplicar"
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/profile.html:46
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:13
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
#: events/templates/events/event_info.html:66
#: events/templates/events/event_info.html:89
#: events/templates/events/manage_team.html:40
@ -139,8 +139,8 @@ msgid "Points"
msgstr "Puntos"
#: accounts/templates/accounts/profile.html:24
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:73
#: ctfs/templates/ctfs/ctf_info.html:66
#: events/templates/events/ctf_info.html:67
#: events/templates/events/team.html:23
msgid "Date"
msgstr "Fecha"
@ -197,8 +197,8 @@ msgid ""
"The password must contain at least one letter and at least one digit or "
"punctuation character."
msgstr ""
"La contraseña debe contener al menos una letra y un dígito o "
"un signo de puntuación."
"La contraseña debe contener al menos una letra y un dígito o un signo de "
"puntuación."
#: accounts/views/views.py:54
msgid "A user with that email already exists."
@ -220,66 +220,59 @@ msgstr "Nombre de usuario ya usado."
msgid "Updated."
msgstr "Actualizado."
#: ctfs/templates/ctfs/ctf_info.html:10
#: ctfs/templates/ctfs/ctf_info.html:12
#: events/templates/events/ctf_info.html:12
msgid "Published date"
msgstr "Fecha de publicación"
#: ctfs/templates/ctfs/ctf_info.html:14
#: ctfs/templates/ctfs/ctf_info.html:16
msgid "Challenge is not yet available."
msgstr "El reto aún no está disponible."
#: ctfs/templates/ctfs/ctf_info.html:21
#: events/templates/events/ctf_info.html:18 home/templates/home/home.html:46
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
"Traducción no disponible. Por favor pruebe otro idioma (inglés o francés)."
#: ctfs/templates/ctfs/ctf_info.html:27
#: events/templates/events/ctf_info.html:32
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr "¡ Felicidades !"
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:34
#: ctfs/templates/ctfs/ctf_info.html:31
#: events/templates/events/ctf_info.html:26
msgid "Already flagged"
msgstr "Flag ya conseguida"
#: ctfs/templates/ctfs/ctf_info.html:31 ctfs/templates/ctfs/ctf_info.html:40
#: events/templates/events/ctf_info.html:42
#: events/templates/events/ctf_info.html:51
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:36
#: events/templates/events/ctf_info.html:45
msgid "Start the challenge"
msgstr "Comenzar el reto"
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:44
#: events/templates/events/ctf_info.html:53
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:47
msgid "Download"
msgstr "Descargar"
#: ctfs/templates/ctfs/ctf_info.html:37
#: events/templates/events/ctf_info.html:48
#: ctfs/templates/ctfs/ctf_info.html:39
#: events/templates/events/ctf_info.html:42
msgid "Wrong flag ! You can do it !"
msgstr "¡ Flag incorrecta ! ¡ Puedes hacerlo !"
#: ctfs/templates/ctfs/ctf_info.html:56
#: events/templates/events/ctf_info.html:66
#: ctfs/templates/ctfs/ctf_info.html:58
#: events/templates/events/ctf_info.html:60
msgid "Solved by"
msgstr "Resuelto por"
#: ctfs/templates/ctfs/ctf_info.html:80
#: events/templates/events/ctf_info.html:96
#: ctfs/templates/ctfs/ctf_info.html:82
#: events/templates/events/ctf_info.html:90
msgid "Nobody has solved this challenge yet."
msgstr "Nadie ha resuelto este reto aún."
#: ctfs/templates/ctfs/ctf_info.html:87
#: events/templates/events/ctf_info.html:103
#: ctfs/templates/ctfs/ctf_info.html:89
#: events/templates/events/ctf_info.html:97
msgid "Author"
msgstr "Autor"
#: ctfs/templates/ctfs/ctf_info.html:88
#: events/templates/events/ctf_info.html:104
#: ctfs/templates/ctfs/ctf_info.html:90
#: events/templates/events/ctf_info.html:98
msgid "Point reward"
msgstr "Recompensa de puntos"
@ -371,33 +364,38 @@ msgstr "¡ Encuentrame un equipo !"
msgid "Event"
msgstr "Evento"
#: events/templates/events/ctf_info.html:25
#: events/templates/events/event_info.html:9
msgid "Subscriptions is over."
msgstr "El periodo de suscripción ha acabado."
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
"Traducción no disponible. Por favor pruebe otro idioma (inglés o francés)."
#: events/templates/events/ctf_info.html:28
#: events/templates/events/event_info.html:12
#: events/templates/events/event_pwd.html:18
msgid "You're already registered to this event."
msgstr "Ya estás registrado a este evento."
#: events/templates/events/ctf_info.html:36
#: events/templates/events/event_info.html:18
msgid "This event is over."
msgstr "Este evento ya ha acabado."
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:30
msgid "Error while processing your request. (Invalid Form)"
msgstr "Error al procesar tu solicitud. (Formulario incorrecto)"
#: events/templates/events/ctf_info.html:40
msgid ""
"Error: you're not registered to this event, so you can't register scores, "
"fucking logic."
#: events/templates/events/ctf_info.html:32
msgid "You must register to the event before submitting flags."
msgstr ""
"Error: No estás registrado a este evento, por lo que no puedes ganar puntos, "
"Maldita lógica."
#: events/templates/events/ctf_info.html:34
msgid ""
"This is a team event, please create or join a team before submitting flags."
msgstr ""
#: events/templates/events/event_info.html:9
msgid "Subscriptions is over."
msgstr "El periodo de suscripción ha acabado."
#: events/templates/events/event_info.html:12
#: events/templates/events/event_pwd.html:18
msgid "You're already registered to this event."
msgstr "Ya estás registrado a este evento."
#: events/templates/events/event_info.html:20
#: events/templates/events/event_pwd.html:9
@ -470,43 +468,55 @@ msgstr "Contraseña del equipo"
msgid "Members"
msgstr "Miembros"
#: events/templates/events/manage_team.html:51
#: events/templates/events/manage_team.html:52
msgid "Leave Team"
msgstr "Salir del equipo"
#: events/templates/events/manage_team.html:59
#, fuzzy
#| msgid "Auto-matching"
msgid "Open to automatching"
msgstr "Auto-matching"
#: events/templates/events/manage_team.html:66
#, fuzzy
#| msgid "Auto-matching"
msgid "Close to automatching"
msgstr "Auto-matching"
#: events/templates/events/team.html:38
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..."
#: home/templates/home/home.html:20
#: home/templates/home/home.html:21
msgid "Weekly Top 5"
msgstr "Top 5 semanal"
#: home/templates/home/home.html:56
#: home/templates/home/home.html:48
msgid "No article available."
msgstr "Articulos no disponibles."
#: home/templates/home/home.html:61
#: home/templates/home/home.html:53
msgid "Latest challenges added"
msgstr "Ultimos retos añadidos"
#: home/templates/home/home.html:66
#: home/templates/home/home.html:58
msgid "points"
msgstr "puntos"
#: home/templates/home/home.html:70
#: home/templates/home/home.html:62
msgid "No ctf available."
msgstr "ctf no disponible."
#: home/templates/home/home.html:74
#: home/templates/home/home.html:66
msgid "Latest Flags"
msgstr "Ultimas Flags."
#: home/templates/home/home.html:88
#: home/templates/home/home.html:80
msgid "Flags"
msgstr "Flags"
#: home/templates/home/home.html:94
#: home/templates/home/home.html:86
msgid "Users"
msgstr "Usuarios"
@ -526,6 +536,14 @@ msgstr "Francés"
msgid "Russian"
msgstr "Ruso"
#: project/settings.py:119
msgid "Japanese"
msgstr ""
#: project/settings.py:120
msgid "Spanish"
msgstr ""
#: scoreboard/templates/scoreboard/scoreboard.html:38
msgid "First"
msgstr "Primero"
@ -572,7 +590,8 @@ msgstr "Contraseña cambiada correctamente."
#: templates/registration/password_reset_confirm.html:20
msgid "Your password cant be too similar to your other personal information."
msgstr "Tu contraseña no puede ser tan similar al resto de tu información personal."
msgstr ""
"Tu contraseña no puede ser tan similar al resto de tu información personal."
#: templates/registration/password_reset_confirm.html:21
msgid "Your password must contain at least 8 characters."
@ -599,9 +618,16 @@ msgid ""
"We've emailed you instructions for setting your password. You should receive "
"the email shortly!"
msgstr ""
"Te hemos enviado por email las instrucciones para cambiar tu contraseña. ¡Deberías recibir "
"el email pronto!"
"Te hemos enviado por email las instrucciones para cambiar tu contraseña. "
"¡Deberías recibir el email pronto!"
#: templates/registration/password_reset_form.html:16
msgid "Reset"
msgstr "Restablecer"
#~ msgid ""
#~ "Error: you're not registered to this event, so you can't register scores, "
#~ "fucking logic."
#~ msgstr ""
#~ "Error: No estás registrado a este evento, por lo que no puedes ganar "
#~ "puntos, Maldita lógica."

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-04 19:27+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -53,8 +53,8 @@ msgstr "Mot de passe"
#: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:61 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:71
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:65
#: events/templates/events/event_info.html:64
#: scoreboard/templates/scoreboard/scoreboard.html:13
msgid "Username"
@ -65,8 +65,8 @@ msgid "Email"
msgstr "Email"
#: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:62
#: events/templates/events/ctf_info.html:72
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:66
#: events/templates/events/event_info.html:65
#: scoreboard/templates/scoreboard/scoreboard.html:14
msgid "Website"
@ -79,7 +79,7 @@ msgstr "Appliquer"
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/profile.html:46
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:13
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
#: events/templates/events/event_info.html:66
#: events/templates/events/event_info.html:89
#: events/templates/events/manage_team.html:40
@ -145,8 +145,8 @@ msgid "Points"
msgstr "Points"
#: accounts/templates/accounts/profile.html:24
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:73
#: ctfs/templates/ctfs/ctf_info.html:66
#: events/templates/events/ctf_info.html:67
#: events/templates/events/team.html:23
msgid "Date"
msgstr "Date"
@ -228,67 +228,61 @@ msgstr "Le pseudo est déjà utilisé."
msgid "Updated."
msgstr "Mis à jour."
#: ctfs/templates/ctfs/ctf_info.html:10
#: ctfs/templates/ctfs/ctf_info.html:12
#: events/templates/events/ctf_info.html:12
msgid "Published date"
msgstr "Date de publication"
#: ctfs/templates/ctfs/ctf_info.html:14
#: ctfs/templates/ctfs/ctf_info.html:16
#, fuzzy
#| msgid "No category available."
msgid "Challenge is not yet available."
msgstr "Il n'y a pas de catégorie disponible."
#: ctfs/templates/ctfs/ctf_info.html:21
#: events/templates/events/ctf_info.html:18 home/templates/home/home.html:46
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:27
#: events/templates/events/ctf_info.html:32
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr "Félicitations !"
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:34
#: ctfs/templates/ctfs/ctf_info.html:31
#: events/templates/events/ctf_info.html:26
msgid "Already flagged"
msgstr "Déjà résolu"
#: ctfs/templates/ctfs/ctf_info.html:31 ctfs/templates/ctfs/ctf_info.html:40
#: events/templates/events/ctf_info.html:42
#: events/templates/events/ctf_info.html:51
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:36
#: events/templates/events/ctf_info.html:45
msgid "Start the challenge"
msgstr "Démarrer le challenge"
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:44
#: events/templates/events/ctf_info.html:53
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:47
msgid "Download"
msgstr "Télécharger"
#: ctfs/templates/ctfs/ctf_info.html:37
#: events/templates/events/ctf_info.html:48
#: ctfs/templates/ctfs/ctf_info.html:39
#: events/templates/events/ctf_info.html:42
msgid "Wrong flag ! You can do it !"
msgstr "Mauvais flag ! Vous pouvez le faire !"
#: ctfs/templates/ctfs/ctf_info.html:56
#: events/templates/events/ctf_info.html:66
#: ctfs/templates/ctfs/ctf_info.html:58
#: events/templates/events/ctf_info.html:60
msgid "Solved by"
msgstr "Résolu par"
#: ctfs/templates/ctfs/ctf_info.html:80
#: events/templates/events/ctf_info.html:96
#: ctfs/templates/ctfs/ctf_info.html:82
#: events/templates/events/ctf_info.html:90
msgid "Nobody has solved this challenge yet."
msgstr "Personne n'a résolu ce CTF."
#: ctfs/templates/ctfs/ctf_info.html:87
#: events/templates/events/ctf_info.html:103
#: ctfs/templates/ctfs/ctf_info.html:89
#: events/templates/events/ctf_info.html:97
msgid "Author"
msgstr "Auteur"
#: ctfs/templates/ctfs/ctf_info.html:88
#: events/templates/events/ctf_info.html:104
#: ctfs/templates/ctfs/ctf_info.html:90
#: events/templates/events/ctf_info.html:98
msgid "Point reward"
msgstr "Points"
@ -386,33 +380,37 @@ msgstr ""
msgid "Event"
msgstr "Événement"
#: events/templates/events/ctf_info.html:25
#: events/templates/events/event_info.html:9
msgid "Subscriptions is over."
msgstr "Les inscriptions sont terminées."
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: events/templates/events/ctf_info.html:28
#: events/templates/events/event_info.html:12
#: events/templates/events/event_pwd.html:18
msgid "You're already registered to this event."
msgstr "Vous êtes déjà inscrit à cet événement."
#: events/templates/events/ctf_info.html:36
#: events/templates/events/event_info.html:18
msgid "This event is over."
msgstr "Cet événement est terminé."
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:30
msgid "Error while processing your request. (Invalid Form)"
msgstr "Erreur lors du traitement de votre requête. (Formulaire non valide)"
#: events/templates/events/ctf_info.html:40
msgid ""
"Error: you're not registered to this event, so you can't register scores, "
"fucking logic."
#: events/templates/events/ctf_info.html:32
msgid "You must register to the event before submitting flags."
msgstr ""
"Erreur : vous n'êtes pas inscrit à cet événement, vous ne pouvez donc pas "
"enregistrer de scores,C'est putain de logique."
#: events/templates/events/ctf_info.html:34
msgid ""
"This is a team event, please create or join a team before submitting flags."
msgstr ""
#: events/templates/events/event_info.html:9
msgid "Subscriptions is over."
msgstr "Les inscriptions sont terminées."
#: events/templates/events/event_info.html:12
#: events/templates/events/event_pwd.html:18
msgid "You're already registered to this event."
msgstr "Vous êtes déjà inscrit à cet événement."
#: events/templates/events/event_info.html:20
#: events/templates/events/event_pwd.html:9
@ -491,45 +489,53 @@ msgstr "Mot de passe de l'équipe"
msgid "Members"
msgstr "Membres"
#: events/templates/events/manage_team.html:51
#: events/templates/events/manage_team.html:52
msgid "Leave Team"
msgstr "Quitte l'équipe"
#: events/templates/events/manage_team.html:59
msgid "Open to automatching"
msgstr ""
#: events/templates/events/manage_team.html:66
msgid "Close to automatching"
msgstr ""
#: events/templates/events/team.html:38
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..."
#: home/templates/home/home.html:20
#: home/templates/home/home.html:21
msgid "Weekly Top 5"
msgstr ""
#: home/templates/home/home.html:56
#: home/templates/home/home.html:48
msgid "No article available."
msgstr "Il n'y a pas d'article disponible."
#: home/templates/home/home.html:61
#: home/templates/home/home.html:53
msgid "Latest challenges added"
msgstr "Derniers challenges ajoutés"
#: home/templates/home/home.html:66
#: home/templates/home/home.html:58
#, fuzzy
#| msgid "Points"
msgid "points"
msgstr "Points"
#: home/templates/home/home.html:70
#: home/templates/home/home.html:62
msgid "No ctf available."
msgstr "Pas de challenge disponible"
#: home/templates/home/home.html:74
#: home/templates/home/home.html:66
msgid "Latest Flags"
msgstr ""
#: home/templates/home/home.html:88
#: home/templates/home/home.html:80
msgid "Flags"
msgstr ""
#: home/templates/home/home.html:94
#: home/templates/home/home.html:86
#, fuzzy
#| msgid "Username"
msgid "Users"
@ -551,6 +557,14 @@ msgstr "Français"
msgid "Russian"
msgstr "Russe"
#: project/settings.py:119
msgid "Japanese"
msgstr ""
#: project/settings.py:120
msgid "Spanish"
msgstr ""
#: scoreboard/templates/scoreboard/scoreboard.html:38
msgid "First"
msgstr "Début"
@ -631,6 +645,13 @@ msgstr ""
msgid "Reset"
msgstr "Réinitialiser"
#~ msgid ""
#~ "Error: you're not registered to this event, so you can't register scores, "
#~ "fucking logic."
#~ msgstr ""
#~ "Erreur : vous n'êtes pas inscrit à cet événement, vous ne pouvez donc pas "
#~ "enregistrer de scores,C'est putain de logique."
#, fuzzy
#~| msgid "Manage my team"
#~ msgid "Manage team"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-04 19:27+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -49,8 +49,8 @@ msgstr ""
#: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:61 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:71
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:65
#: events/templates/events/event_info.html:64
#: scoreboard/templates/scoreboard/scoreboard.html:13
msgid "Username"
@ -61,8 +61,8 @@ msgid "Email"
msgstr ""
#: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:62
#: events/templates/events/ctf_info.html:72
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:66
#: events/templates/events/event_info.html:65
#: scoreboard/templates/scoreboard/scoreboard.html:14
msgid "Website"
@ -75,7 +75,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/profile.html:46
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:13
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
#: events/templates/events/event_info.html:66
#: events/templates/events/event_info.html:89
#: events/templates/events/manage_team.html:40
@ -139,8 +139,8 @@ msgid "Points"
msgstr ""
#: accounts/templates/accounts/profile.html:24
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:73
#: ctfs/templates/ctfs/ctf_info.html:66
#: events/templates/events/ctf_info.html:67
#: events/templates/events/team.html:23
msgid "Date"
msgstr ""
@ -218,65 +218,59 @@ msgstr ""
msgid "Updated."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:10
#: ctfs/templates/ctfs/ctf_info.html:12
#: events/templates/events/ctf_info.html:12
msgid "Published date"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:14
#: ctfs/templates/ctfs/ctf_info.html:16
msgid "Challenge is not yet available."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21
#: events/templates/events/ctf_info.html:18 home/templates/home/home.html:46
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:27
#: events/templates/events/ctf_info.html:32
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:34
#: ctfs/templates/ctfs/ctf_info.html:31
#: events/templates/events/ctf_info.html:26
msgid "Already flagged"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:31 ctfs/templates/ctfs/ctf_info.html:40
#: events/templates/events/ctf_info.html:42
#: events/templates/events/ctf_info.html:51
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:36
#: events/templates/events/ctf_info.html:45
msgid "Start the challenge"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:44
#: events/templates/events/ctf_info.html:53
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:47
msgid "Download"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:37
#: events/templates/events/ctf_info.html:48
#: ctfs/templates/ctfs/ctf_info.html:39
#: events/templates/events/ctf_info.html:42
msgid "Wrong flag ! You can do it !"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:56
#: events/templates/events/ctf_info.html:66
#: ctfs/templates/ctfs/ctf_info.html:58
#: events/templates/events/ctf_info.html:60
msgid "Solved by"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:80
#: events/templates/events/ctf_info.html:96
#: ctfs/templates/ctfs/ctf_info.html:82
#: events/templates/events/ctf_info.html:90
msgid "Nobody has solved this challenge yet."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:87
#: events/templates/events/ctf_info.html:103
#: ctfs/templates/ctfs/ctf_info.html:89
#: events/templates/events/ctf_info.html:97
msgid "Author"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:88
#: events/templates/events/ctf_info.html:104
#: ctfs/templates/ctfs/ctf_info.html:90
#: events/templates/events/ctf_info.html:98
msgid "Point reward"
msgstr ""
@ -368,30 +362,36 @@ msgstr ""
msgid "Event"
msgstr ""
#: events/templates/events/ctf_info.html:25
#: events/templates/events/event_info.html:9
msgid "Subscriptions is over."
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: events/templates/events/ctf_info.html:28
#: events/templates/events/event_info.html:12
#: events/templates/events/event_pwd.html:18
msgid "You're already registered to this event."
msgstr ""
#: events/templates/events/ctf_info.html:36
#: events/templates/events/event_info.html:18
msgid "This event is over."
msgstr ""
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:30
msgid "Error while processing your request. (Invalid Form)"
msgstr ""
#: events/templates/events/ctf_info.html:40
#: events/templates/events/ctf_info.html:32
msgid "You must register to the event before submitting flags."
msgstr ""
#: events/templates/events/ctf_info.html:34
msgid ""
"Error: you're not registered to this event, so you can't register scores, "
"fucking logic."
"This is a team event, please create or join a team before submitting flags."
msgstr ""
#: events/templates/events/event_info.html:9
msgid "Subscriptions is over."
msgstr ""
#: events/templates/events/event_info.html:12
#: events/templates/events/event_pwd.html:18
msgid "You're already registered to this event."
msgstr ""
#: events/templates/events/event_info.html:20
@ -465,43 +465,51 @@ msgstr ""
msgid "Members"
msgstr ""
#: events/templates/events/manage_team.html:51
#: events/templates/events/manage_team.html:52
msgid "Leave Team"
msgstr ""
#: events/templates/events/manage_team.html:59
msgid "Open to automatching"
msgstr ""
#: events/templates/events/manage_team.html:66
msgid "Close to automatching"
msgstr ""
#: events/templates/events/team.html:38
msgid "It seems that this team has not solved any challenge yet..."
msgstr ""
#: home/templates/home/home.html:20
#: home/templates/home/home.html:21
msgid "Weekly Top 5"
msgstr ""
#: home/templates/home/home.html:56
#: home/templates/home/home.html:48
msgid "No article available."
msgstr ""
#: home/templates/home/home.html:61
#: home/templates/home/home.html:53
msgid "Latest challenges added"
msgstr ""
#: home/templates/home/home.html:66
#: home/templates/home/home.html:58
msgid "points"
msgstr ""
#: home/templates/home/home.html:70
#: home/templates/home/home.html:62
msgid "No ctf available."
msgstr ""
#: home/templates/home/home.html:74
#: home/templates/home/home.html:66
msgid "Latest Flags"
msgstr ""
#: home/templates/home/home.html:88
#: home/templates/home/home.html:80
msgid "Flags"
msgstr ""
#: home/templates/home/home.html:94
#: home/templates/home/home.html:86
msgid "Users"
msgstr ""
@ -521,6 +529,14 @@ msgstr ""
msgid "Russian"
msgstr ""
#: project/settings.py:119
msgid "Japanese"
msgstr ""
#: project/settings.py:120
msgid "Spanish"
msgstr ""
#: scoreboard/templates/scoreboard/scoreboard.html:38
msgid "First"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-06 23:31+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -20,23 +20,23 @@ msgstr ""
#: accounts/templates/accounts/delete.html:8
msgid "Delete account"
msgstr ""
msgstr "アカウント削除"
#: accounts/templates/accounts/delete.html:11
msgid "Please confirm your password to delete your account."
msgstr ""
msgstr "アカウントを削除するには、パスワードを入力してください。"
#: accounts/templates/accounts/delete.html:12
msgid "Deleted accounts cannot be recovered."
msgstr ""
msgstr "削除されたアカウントは復元できません。"
#: accounts/templates/accounts/delete.html:15
msgid "Password inccorect."
msgstr ""
msgstr "パスワードが正しくありません。"
#: accounts/templates/accounts/delete.html:17
msgid "Your account has been deleted."
msgstr ""
msgstr "あなたのアカウントは削除されました。"
#: accounts/templates/accounts/delete.html:22
#: accounts/templates/accounts/login.html:19
@ -44,62 +44,64 @@ msgstr ""
#: events/templates/events/create_team.html:27
#: events/templates/events/join_team.html:32
msgid "Password"
msgstr ""
msgstr "パスワード"
#: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:61 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:71
#: ctfs/templates/ctfs/ctf_info.html:63
#: ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:65
#: events/templates/events/event_info.html:64
#: scoreboard/templates/scoreboard/scoreboard.html:13
msgid "Username"
msgstr ""
msgstr "ユーザー名"
#: accounts/templates/accounts/edit.html:25
msgid "Email"
msgstr ""
msgstr "Eメール"
#: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:62
#: events/templates/events/ctf_info.html:72
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:66
#: events/templates/events/event_info.html:65
#: scoreboard/templates/scoreboard/scoreboard.html:14
msgid "Website"
msgstr ""
msgstr "ウェブサイト"
#: accounts/templates/accounts/edit.html:36
#: events/templates/events/manage_team.html:29
msgid "Apply"
msgstr ""
msgstr "適用する"
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/profile.html:46
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:13
#: ctfs/templates/ctfs/ctf_info.html:65
#: ctfs/templates/ctfs/ctfs_list.html:13
#: events/templates/events/event_info.html:66
#: events/templates/events/event_info.html:89
#: events/templates/events/manage_team.html:40
#: events/templates/events/team.html:45
#: scoreboard/templates/scoreboard/scoreboard.html:15
msgid "Score"
msgstr ""
msgstr "スコア"
#: accounts/templates/accounts/edit.html:55
#: accounts/templates/accounts/profile.html:60
msgid "Registered since"
msgstr ""
msgstr "登録日"
#: accounts/templates/accounts/edit.html:61
msgid "Delete my account"
msgstr ""
msgstr "アカウント削除"
#: accounts/templates/accounts/login.html:13
msgid "Please, verify your infos."
msgstr ""
msgstr "あなたの情報を確認してください。"
#: accounts/templates/accounts/login.html:22
msgid "Reset password"
msgstr ""
msgstr "パスワード再設定"
#: accounts/templates/accounts/login.html:31
#: accounts/templates/accounts/register.html:38 templates/base.html:97
@ -108,7 +110,7 @@ msgstr ""
#: templates/registration/password_reset_done.html:18
#: templates/registration/password_reset_form.html:26
msgid "Login"
msgstr ""
msgstr "ログイン"
#: accounts/templates/accounts/login.html:32
#: accounts/templates/accounts/register.html:37
@ -117,37 +119,37 @@ msgstr ""
#: templates/registration/password_reset_done.html:19
#: templates/registration/password_reset_form.html:27
msgid "Sign up"
msgstr ""
msgstr "サインアップ"
#: accounts/templates/accounts/profile.html:10
msgid "Challenges Solved by"
msgstr ""
msgstr "解いた課題"
#: accounts/templates/accounts/profile.html:21
#: events/templates/events/team.html:20
msgid "Challenge Name"
msgstr ""
msgstr "課題名"
#: accounts/templates/accounts/profile.html:22
#: events/templates/events/team.html:21
msgid "Category"
msgstr ""
msgstr "カテゴリー"
#: accounts/templates/accounts/profile.html:23
#: events/templates/events/team.html:22
msgid "Points"
msgstr ""
msgstr "ポイント"
#: accounts/templates/accounts/profile.html:24
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:73
#: ctfs/templates/ctfs/ctf_info.html:66
#: events/templates/events/ctf_info.html:67
#: events/templates/events/team.html:23
msgid "Date"
msgstr ""
msgstr "日付"
#: accounts/templates/accounts/profile.html:39
msgid "It seems that this user has not solved any challenge yet..."
msgstr ""
msgstr "まだ何も課題を解いていないようです..."
#: accounts/templates/accounts/profile.html:47
#: events/templates/events/event_info.html:63
@ -156,445 +158,471 @@ msgstr ""
#: events/templates/events/team.html:46
#: scoreboard/templates/scoreboard/scoreboard.html:12
msgid "Rank"
msgstr ""
msgstr "ラング"
#: accounts/templates/accounts/profile.html:56
msgid "Status: Member"
msgstr ""
msgstr "ステータス: メンバー"
#: accounts/templates/accounts/profile.html:58
msgid "Status: Visitor"
msgstr ""
msgstr "ステータス: 訪問者"
#: accounts/templates/accounts/profile.html:64
#: events/templates/events/team.html:57
msgid "Categories stats"
msgstr ""
msgstr "カテゴリー別の統計"
#: accounts/templates/accounts/register.html:13
msgid "Welcome !"
msgstr ""
msgstr "ようこそ!"
#: accounts/templates/accounts/register.html:14
msgid "Your account has been created."
msgstr ""
msgstr "アカウントが作成されました。"
#: accounts/templates/accounts/register.html:25
msgid "Personal website"
msgstr ""
msgstr "個人サイト"
#: accounts/templates/accounts/register.html:26
#: events/templates/events/event_info.html:119
msgid "Register"
msgstr ""
msgstr "登録"
#: accounts/views/views.py:33
msgid "Your account was inactive."
msgstr ""
msgstr "アカウントは無効です。"
#: accounts/views/views.py:52
msgid ""
"The password must contain at least one letter and at least one digit or "
"punctuation character."
msgstr ""
"パスワードには、少なくとも1つの文字と、1つの数字または記号を含める必要があり"
"ます。"
#: accounts/views/views.py:54
msgid "A user with that email already exists."
msgstr ""
msgstr "そのEメールを持つユーザーがすでに存在しています。"
#: accounts/views/views.py:67
msgid "A user with that username already exists."
msgstr ""
msgstr "そのユーザー名はすでに存在しています。"
#: accounts/views/views.py:95
msgid "Email already taken."
msgstr ""
msgstr "Eメールはすでに受信済みです。"
#: accounts/views/views.py:101
msgid "Username already taken."
msgstr ""
msgstr "ユーザー名はすでに使用されています。"
#: accounts/views/views.py:105 events/views/teams.py:124
msgid "Updated."
msgstr ""
msgstr "更新しました。"
#: ctfs/templates/ctfs/ctf_info.html:10
#: ctfs/templates/ctfs/ctf_info.html:12
#: events/templates/events/ctf_info.html:12
msgid "Published date"
msgstr ""
msgstr "掲載日"
#: ctfs/templates/ctfs/ctf_info.html:14
#: ctfs/templates/ctfs/ctf_info.html:16
msgid "Challenge is not yet available."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21
#: events/templates/events/ctf_info.html:18 home/templates/home/home.html:46
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:27
#: events/templates/events/ctf_info.html:32
msgid "Congratulation !"
msgstr ""
msgstr "課題はまだ利用できません。"
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:34
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr "おめでとうございます!"
#: ctfs/templates/ctfs/ctf_info.html:31
#: events/templates/events/ctf_info.html:26
msgid "Already flagged"
msgstr ""
msgstr "すでにフラグが立っています"
#: ctfs/templates/ctfs/ctf_info.html:31 ctfs/templates/ctfs/ctf_info.html:40
#: events/templates/events/ctf_info.html:42
#: events/templates/events/ctf_info.html:51
#: ctfs/templates/ctfs/ctf_info.html:33
#: ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:36
#: events/templates/events/ctf_info.html:45
msgid "Start the challenge"
msgstr ""
msgstr "チャレンジ開始"
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:44
#: events/templates/events/ctf_info.html:53
#: ctfs/templates/ctfs/ctf_info.html:35
#: ctfs/templates/ctfs/ctf_info.html:44
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:47
msgid "Download"
msgstr ""
msgstr "ダウンロード"
#: ctfs/templates/ctfs/ctf_info.html:37
#: events/templates/events/ctf_info.html:48
#: ctfs/templates/ctfs/ctf_info.html:39
#: events/templates/events/ctf_info.html:42
msgid "Wrong flag ! You can do it !"
msgstr ""
msgstr "フラグが違います!あなたならできる!"
#: ctfs/templates/ctfs/ctf_info.html:56
#: events/templates/events/ctf_info.html:66
#: ctfs/templates/ctfs/ctf_info.html:58
#: events/templates/events/ctf_info.html:60
msgid "Solved by"
msgstr ""
msgstr "解答者"
#: ctfs/templates/ctfs/ctf_info.html:80
#: events/templates/events/ctf_info.html:96
#: ctfs/templates/ctfs/ctf_info.html:82
#: events/templates/events/ctf_info.html:90
msgid "Nobody has solved this challenge yet."
msgstr ""
msgstr "まだ誰もこの課題を解いていません。"
#: ctfs/templates/ctfs/ctf_info.html:87
#: events/templates/events/ctf_info.html:103
#: ctfs/templates/ctfs/ctf_info.html:89
#: events/templates/events/ctf_info.html:97
msgid "Author"
msgstr ""
msgstr "作成者"
#: ctfs/templates/ctfs/ctf_info.html:88
#: events/templates/events/ctf_info.html:104
#: ctfs/templates/ctfs/ctf_info.html:90
#: events/templates/events/ctf_info.html:98
msgid "Point reward"
msgstr ""
msgstr "獲得ポイント"
#: ctfs/templates/ctfs/ctfs_list.html:14
msgid "Solved"
msgstr ""
msgstr "解決済み"
#: ctfs/templates/ctfs/ctfs_list.html:37
msgid "No ctf available for this category."
msgstr ""
msgstr "このカテゴリーにはCTFがありません。"
#: ctfs/templates/ctfs/ctfs_list.html:42
msgid "Categories"
msgstr ""
msgstr "カテゴリー"
#: ctfs/templates/ctfs/ctfs_list.html:48 templates/base.html:54
msgid "No category available."
msgstr ""
msgstr "該当するカテゴリーはありません。"
#: events/templates/events/create_team.html:10
#: events/templates/events/join_team.html:10
msgid "This event starts at"
msgstr ""
msgstr "このイベントは始まります。"
#: events/templates/events/create_team.html:17
#: events/templates/events/join_team.html:17
msgid "You need to be registered to the event."
msgstr ""
msgstr "このイベントに登録する必要があります。"
#: events/templates/events/create_team.html:20 events/views/teams.py:120
#: events/templates/events/create_team.html:20
#: events/views/teams.py:120
msgid "Name already taken."
msgstr ""
msgstr "名前はすでに使用されています。"
#: events/templates/events/create_team.html:26
#: events/templates/events/join_team.html:31
#: events/templates/events/manage_team.html:22
msgid "Team name"
msgstr ""
msgstr "チーム名"
#: events/templates/events/create_team.html:28
#: events/templates/events/create_team.html:49
#: events/templates/events/join_team.html:54
msgid "Create Team"
msgstr ""
msgstr "チーム作成"
#: events/templates/events/create_team.html:33
#: events/templates/events/event_pwd.html:28
#: events/templates/events/join_team.html:38
msgid "You need to be logged to access this event."
msgstr ""
msgstr "このイベントにアクセスするには、ログインする必要があります。"
#: events/templates/events/create_team.html:42
#: events/templates/events/event_info.html:113
#: events/templates/events/event_pwd.html:36
#: events/templates/events/join_team.html:47
msgid "Starts at"
msgstr ""
msgstr "開始日"
#: events/templates/events/create_team.html:43
#: events/templates/events/event_info.html:114
#: events/templates/events/event_pwd.html:37
#: events/templates/events/join_team.html:48
msgid "Ends at"
msgstr ""
msgstr "終了日"
#: events/templates/events/create_team.html:47
#: events/templates/events/event_info.html:129
#: events/templates/events/join_team.html:52
msgid "Manage my team"
msgstr ""
msgstr "自分のチームを管理する"
#: events/templates/events/create_team.html:48
#: events/templates/events/join_team.html:33
#: events/templates/events/join_team.html:53
msgid "Join Team"
msgstr ""
msgstr "チームに参加する"
#: events/templates/events/create_team.html:53
#: events/templates/events/join_team.html:58
msgid "Auto-matching"
msgstr ""
msgstr "自動マッチング"
#: events/templates/events/create_team.html:57
#: events/templates/events/join_team.html:62
msgid "Find me a team !"
msgstr ""
msgstr "チームを見つけよう!"
#: events/templates/events/ctf_info.html:10
msgid "Event"
msgstr ""
msgstr "イベント"
#: events/templates/events/ctf_info.html:25
#: events/templates/events/event_info.html:9
msgid "Subscriptions is over."
msgstr ""
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr "翻訳はありません。他の言語(英語またはフランス語)をお試しください。"
#: events/templates/events/ctf_info.html:28
#: events/templates/events/event_info.html:18
msgid "This event is over."
msgstr "このイベントは終了しました。"
#: events/templates/events/ctf_info.html:30
msgid "Error while processing your request. (Invalid Form)"
msgstr "リクエストの処理中にエラーが発生しました(無効なフォーム)"
#: events/templates/events/ctf_info.html:32
msgid "You must register to the event before submitting flags."
msgstr "フラグを送信する前に、イベントへの登録が必要です。"
#: events/templates/events/ctf_info.html:34
msgid ""
"This is a team event, please create or join a team before submitting flags."
msgstr ""
"これはチームイベントです。フラグを送信する前に、チームを作成または参加をして"
"ください。"
#: events/templates/events/event_info.html:9
msgid "Subscriptions is over."
msgstr "申し込みは終了しました。"
#: events/templates/events/event_info.html:12
#: events/templates/events/event_pwd.html:18
msgid "You're already registered to this event."
msgstr ""
#: events/templates/events/ctf_info.html:36
#: events/templates/events/event_info.html:18
msgid "This event is over."
msgstr ""
#: events/templates/events/ctf_info.html:38
msgid "Error while processing your request. (Invalid Form)"
msgstr ""
#: events/templates/events/ctf_info.html:40
msgid ""
"Error: you're not registered to this event, so you can't register scores, "
"fucking logic."
msgstr ""
msgstr "すでにこのイベントに登録しています。"
#: events/templates/events/event_info.html:20
#: events/templates/events/event_pwd.html:9
msgid "This event start at"
msgstr ""
msgstr "このイベントの開始時間"
#: events/templates/events/event_info.html:30
msgid "Challenges"
msgstr ""
msgstr "課題"
#: events/templates/events/event_info.html:47
msgid "No challenges available."
msgstr ""
msgstr "チャレンジできません。"
#: events/templates/events/event_info.html:51
msgid "The event has not started yet."
msgstr ""
msgstr "イベントはまだ始まっていません。"
#: events/templates/events/event_info.html:57
msgid "ScoreBoard"
msgstr ""
msgstr "スコアボード"
#: events/templates/events/event_info.html:88
msgid "Team"
msgstr ""
msgstr "チーム"
#: events/templates/events/event_info.html:106
msgid "No one have earn point yet, you gonna be the first ?"
msgstr ""
msgstr "まだ誰もポイントを獲得していませんが、あなたが最初に獲得しますか?"
#: events/templates/events/event_pwd.html:15
#: events/templates/events/join_team.html:22
msgid "Wrong password submited."
msgstr ""
msgstr "パスワードが違います。"
#: events/templates/events/event_pwd.html:20
msgid "This event is password protected"
msgstr ""
msgstr "このイベントはパスワードで保護されています。"
#: events/templates/events/event_pwd.html:21
msgid "You need to submit the event password to gain access to this event."
msgstr ""
"このイベントにアクセスするには、イベントのパスワードを送信する必要がありま"
"す。"
#: events/templates/events/events_list.html:6 templates/base.html:61
msgid "Events"
msgstr ""
msgstr "イベント"
#: events/templates/events/events_list.html:38
msgid "See more"
msgstr ""
msgstr "もっと見る"
#: events/templates/events/events_list.html:44
msgid "No events available."
msgstr ""
msgstr "該当するイベントはありません。"
#: events/templates/events/join_team.html:20
msgid "Team does not exist."
msgstr ""
msgstr "チームが存在しません。"
#: events/templates/events/join_team.html:24
msgid "Maximum size reached."
msgstr ""
msgstr "最大サイズに達しました。"
#: events/templates/events/manage_team.html:26
msgid "Team password"
msgstr ""
msgstr "チームのパスワード"
#: events/templates/events/manage_team.html:44
#: events/templates/events/team.html:49
msgid "Members"
msgstr ""
msgstr "メンバー"
#: events/templates/events/manage_team.html:51
#: events/templates/events/manage_team.html:52
msgid "Leave Team"
msgstr ""
msgstr "チームを離れる"
#: events/templates/events/manage_team.html:59
msgid "Open to automatching"
msgstr "自動マッチングにする"
#: events/templates/events/manage_team.html:66
msgid "Close to automatching"
msgstr "自動マッチングをやめる"
#: events/templates/events/team.html:38
msgid "It seems that this team has not solved any challenge yet..."
msgstr ""
msgstr "このチームは、まだ何も課題を解いていないようです..."
#: home/templates/home/home.html:20
#: home/templates/home/home.html:21
msgid "Weekly Top 5"
msgstr ""
msgstr "週間トップ5"
#: home/templates/home/home.html:56
#: home/templates/home/home.html:48
msgid "No article available."
msgstr ""
msgstr "記事はありません。"
#: home/templates/home/home.html:61
#: home/templates/home/home.html:53
msgid "Latest challenges added"
msgstr ""
msgstr "最新の追加課題"
#: home/templates/home/home.html:58
msgid "points"
msgstr "ポイント"
#: home/templates/home/home.html:62
msgid "No ctf available."
msgstr "取り組めるctfはありません。"
#: home/templates/home/home.html:66
msgid "points"
msgstr ""
#: home/templates/home/home.html:70
msgid "No ctf available."
msgstr ""
#: home/templates/home/home.html:74
msgid "Latest Flags"
msgstr ""
msgstr "最新のフラグ"
#: home/templates/home/home.html:88
#: home/templates/home/home.html:80
msgid "Flags"
msgstr ""
msgstr "フラグ"
#: home/templates/home/home.html:94
#: home/templates/home/home.html:86
msgid "Users"
msgstr ""
msgstr "ユーザー"
#: project/settings.py:115
msgid "English"
msgstr ""
msgstr "英語"
#: project/settings.py:116
msgid "German"
msgstr ""
msgstr "ドイツ語"
#: project/settings.py:117
msgid "French"
msgstr ""
msgstr "フランス語"
#: project/settings.py:118
msgid "Russian"
msgstr ""
msgstr "ロシア語"
#: project/settings.py:119
msgid "Japanese"
msgstr "日本語"
#: project/settings.py:120
msgid "Spanish"
msgstr "スペイン語"
#: scoreboard/templates/scoreboard/scoreboard.html:38
msgid "First"
msgstr ""
msgstr "最初"
#: scoreboard/templates/scoreboard/scoreboard.html:39
msgid "Previous"
msgstr ""
msgstr ""
#: scoreboard/templates/scoreboard/scoreboard.html:43
msgid "Page "
msgstr ""
msgstr "ページ"
#: scoreboard/templates/scoreboard/scoreboard.html:47
msgid "Next"
msgstr ""
msgstr ""
#: scoreboard/templates/scoreboard/scoreboard.html:48
msgid "Last"
msgstr ""
msgstr "最後"
#: templates/base.html:59
msgid "Scoreboard"
msgstr ""
msgstr "スコアボード"
#: templates/base.html:64
msgid "Resources"
msgstr ""
msgstr "リソース"
#: templates/base.html:93
msgid "Logout"
msgstr ""
msgstr "ログアウト"
#: templates/base.html:100
msgid "Sign Up"
msgstr ""
msgstr "サインアップ"
#: templates/base.html:135
msgid "Become a Patron!"
msgstr ""
msgstr "支援者になる!"
#: templates/registration/password_reset_complete.html:11
msgid "Your new password has been set."
msgstr ""
msgstr "新しいパスワードが設定されました。"
#: templates/registration/password_reset_confirm.html:20
msgid "Your password cant be too similar to your other personal information."
msgstr ""
msgstr "パスワードは、自身の個人情報と似すぎていてはいけません。"
#: templates/registration/password_reset_confirm.html:21
msgid "Your password must contain at least 8 characters."
msgstr ""
msgstr "パスワードには8文字以上が必要です。"
#: templates/registration/password_reset_confirm.html:22
msgid "Your password cant be a commonly used password."
msgstr ""
msgstr "パスワードは、一般的に使われているものを使用しないでください。"
#: templates/registration/password_reset_confirm.html:23
msgid "Your password cant be entirely numeric."
msgstr ""
msgstr "パスワードはすべて数字にはできません。"
#: templates/registration/password_reset_confirm.html:26
msgid "Confirm"
msgstr ""
msgstr "確認"
#: templates/registration/password_reset_confirm.html:28
msgid "Submit"
msgstr ""
msgstr "送信"
#: templates/registration/password_reset_done.html:11
msgid ""
"We've emailed you instructions for setting your password. You should receive "
"the email shortly!"
msgstr ""
"パスワードの設定方法をメールでお送りしました。まもなくメールが届くはずです!"
#: templates/registration/password_reset_form.html:16
msgid "Reset"
msgstr ""
msgstr "リセット"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-04 19:27+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -51,8 +51,8 @@ msgstr ""
#: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:61 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:71
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:65
#: events/templates/events/event_info.html:64
#: scoreboard/templates/scoreboard/scoreboard.html:13
msgid "Username"
@ -63,8 +63,8 @@ msgid "Email"
msgstr ""
#: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:62
#: events/templates/events/ctf_info.html:72
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:66
#: events/templates/events/event_info.html:65
#: scoreboard/templates/scoreboard/scoreboard.html:14
msgid "Website"
@ -77,7 +77,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/profile.html:46
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:13
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
#: events/templates/events/event_info.html:66
#: events/templates/events/event_info.html:89
#: events/templates/events/manage_team.html:40
@ -141,8 +141,8 @@ msgid "Points"
msgstr ""
#: accounts/templates/accounts/profile.html:24
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:73
#: ctfs/templates/ctfs/ctf_info.html:66
#: events/templates/events/ctf_info.html:67
#: events/templates/events/team.html:23
msgid "Date"
msgstr ""
@ -220,67 +220,61 @@ msgstr ""
msgid "Updated."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:10
#: ctfs/templates/ctfs/ctf_info.html:12
#: events/templates/events/ctf_info.html:12
msgid "Published date"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:14
#: ctfs/templates/ctfs/ctf_info.html:16
#, fuzzy
#| msgid "No article available."
msgid "Challenge is not yet available."
msgstr "Нет доступных статей."
#: ctfs/templates/ctfs/ctf_info.html:21
#: events/templates/events/ctf_info.html:18 home/templates/home/home.html:46
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:27
#: events/templates/events/ctf_info.html:32
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:34
#: ctfs/templates/ctfs/ctf_info.html:31
#: events/templates/events/ctf_info.html:26
msgid "Already flagged"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:31 ctfs/templates/ctfs/ctf_info.html:40
#: events/templates/events/ctf_info.html:42
#: events/templates/events/ctf_info.html:51
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:36
#: events/templates/events/ctf_info.html:45
msgid "Start the challenge"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:44
#: events/templates/events/ctf_info.html:53
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:47
msgid "Download"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:37
#: events/templates/events/ctf_info.html:48
#: ctfs/templates/ctfs/ctf_info.html:39
#: events/templates/events/ctf_info.html:42
msgid "Wrong flag ! You can do it !"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:56
#: events/templates/events/ctf_info.html:66
#: ctfs/templates/ctfs/ctf_info.html:58
#: events/templates/events/ctf_info.html:60
msgid "Solved by"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:80
#: events/templates/events/ctf_info.html:96
#: ctfs/templates/ctfs/ctf_info.html:82
#: events/templates/events/ctf_info.html:90
msgid "Nobody has solved this challenge yet."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:87
#: events/templates/events/ctf_info.html:103
#: ctfs/templates/ctfs/ctf_info.html:89
#: events/templates/events/ctf_info.html:97
msgid "Author"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:88
#: events/templates/events/ctf_info.html:104
#: ctfs/templates/ctfs/ctf_info.html:90
#: events/templates/events/ctf_info.html:98
msgid "Point reward"
msgstr ""
@ -372,30 +366,36 @@ msgstr ""
msgid "Event"
msgstr ""
#: events/templates/events/ctf_info.html:25
#: events/templates/events/event_info.html:9
msgid "Subscriptions is over."
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: events/templates/events/ctf_info.html:28
#: events/templates/events/event_info.html:12
#: events/templates/events/event_pwd.html:18
msgid "You're already registered to this event."
msgstr ""
#: events/templates/events/ctf_info.html:36
#: events/templates/events/event_info.html:18
msgid "This event is over."
msgstr ""
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:30
msgid "Error while processing your request. (Invalid Form)"
msgstr ""
#: events/templates/events/ctf_info.html:40
#: events/templates/events/ctf_info.html:32
msgid "You must register to the event before submitting flags."
msgstr ""
#: events/templates/events/ctf_info.html:34
msgid ""
"Error: you're not registered to this event, so you can't register scores, "
"fucking logic."
"This is a team event, please create or join a team before submitting flags."
msgstr ""
#: events/templates/events/event_info.html:9
msgid "Subscriptions is over."
msgstr ""
#: events/templates/events/event_info.html:12
#: events/templates/events/event_pwd.html:18
msgid "You're already registered to this event."
msgstr ""
#: events/templates/events/event_info.html:20
@ -475,43 +475,51 @@ msgstr ""
msgid "Members"
msgstr ""
#: events/templates/events/manage_team.html:51
#: events/templates/events/manage_team.html:52
msgid "Leave Team"
msgstr ""
#: events/templates/events/manage_team.html:59
msgid "Open to automatching"
msgstr ""
#: events/templates/events/manage_team.html:66
msgid "Close to automatching"
msgstr ""
#: events/templates/events/team.html:38
msgid "It seems that this team has not solved any challenge yet..."
msgstr ""
#: home/templates/home/home.html:20
#: home/templates/home/home.html:21
msgid "Weekly Top 5"
msgstr ""
#: home/templates/home/home.html:56
#: home/templates/home/home.html:48
msgid "No article available."
msgstr "Нет доступных статей."
#: home/templates/home/home.html:61
#: home/templates/home/home.html:53
msgid "Latest challenges added"
msgstr ""
#: home/templates/home/home.html:66
#: home/templates/home/home.html:58
msgid "points"
msgstr ""
#: home/templates/home/home.html:70
#: home/templates/home/home.html:62
msgid "No ctf available."
msgstr ""
#: home/templates/home/home.html:74
#: home/templates/home/home.html:66
msgid "Latest Flags"
msgstr ""
#: home/templates/home/home.html:88
#: home/templates/home/home.html:80
msgid "Flags"
msgstr ""
#: home/templates/home/home.html:94
#: home/templates/home/home.html:86
msgid "Users"
msgstr ""
@ -531,6 +539,14 @@ msgstr ""
msgid "Russian"
msgstr ""
#: project/settings.py:119
msgid "Japanese"
msgstr ""
#: project/settings.py:120
msgid "Spanish"
msgstr ""
#: scoreboard/templates/scoreboard/scoreboard.html:38
msgid "First"
msgstr ""

View File

@ -38,6 +38,7 @@ INSTALLED_APPS = [
'scoreboard.apps.ScoreboardConfig',
'resources.apps.ResourcesConfig',
'django.contrib.sites',
'api.apps.ApiConfig',
]
MIDDLEWARE = [

View File

@ -24,6 +24,7 @@ urlpatterns = [
path('', include('home.urls')),
path('set_lang/<str:lang_code>', home.views.set_language, name="set_language"),
path('dashboard/secret/admin', admin.site.urls),
path('api/', include('api.urls'))
]
urlpatterns += i18n_patterns(

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-04 19:27+0100\n"
"PO-Revision-Date: 2022-02-04 05:53+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: 2022-02-10 19:27+0100\n"
"Last-Translator: Clément Hamada <clementhamada@pm.me>\n"
"Language-Team: \n"
"Language: de\n"
@ -36,7 +36,9 @@ msgstr ""
"die meisten Punkte zu verdienen."
#: resources/templates/resources/42ctf.html:12
msgid "The challenges require participants to find sort of passwords called \\"
msgid ""
"The challenges require participants to find sort of passwords called \"flags"
"\" and to submit them on the platform."
msgstr ""
"Die Herausforderungen bestehen darin eine Art Passwort zu finden: sogenannte "
"\\"
@ -71,7 +73,7 @@ msgid ""
"Events may or may not be open. If you would like to organize an event on "
"42CTF, feel free to contact us."
msgstr ""
"Ereignisse können öffentlich oder privat sein. Wenn Sie ein Ereignisse bei "
"Ereignisse können öffentlich oder privat sein. Wenn Sie ein Ereignis bei "
"42CTF organisieren möchten, kontaktieren Sie uns."
#: resources/templates/resources/42ctf.html:22
@ -122,8 +124,8 @@ msgid ""
"If your challenge is online (for example web or pwn), then you should give "
"us a short description of what you want to do."
msgstr ""
"Falls Ihre Herausforderung online ist (z.B. web oder pwn), dann sollten sie "
"uns eine kurze Beschreibung von dessen was sie vorhaben geben."
"Falls Ihre Herausforderung online ist (z.B. web oder pwn), dann sollten Sie "
"uns eine kurze Beschreibung Ihres Vorhabens geben."
#: resources/templates/resources/create_challenge.html:13
msgid ""
@ -159,11 +161,11 @@ msgstr ""
#: resources/templates/resources/donate.html:13
msgid "Membership is then granted for 1 year."
msgstr "Die Mitgliedschaft wird dann für ein Jahr gewährt."
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:"
msgstr "Wenn Sie Mitglied werden, bekommen Sie folgende Vorteile:"
#: resources/templates/resources/donate.html:16
msgid ""
@ -193,7 +195,7 @@ msgstr ""
#: 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 "
"Oder Sie haben nicht am Welcome CTF 2021 teilgenommen weil Sie nicht dazu "
"berechtigt waren."
#: resources/templates/resources/donate.html:22
@ -220,7 +222,7 @@ 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 den Kauf einer "
"Folgende Zahlungsmethoden sind für eine Spende an 42CTF oder den Kauf einer "
"Mitgliedshaft verfügbar:"
#: resources/templates/resources/donate.html:46
@ -229,14 +231,14 @@ msgid ""
"cash, send us a message !"
msgstr ""
"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:48
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 "
"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:49
@ -245,7 +247,7 @@ msgid ""
"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 "
"Behalten und ihnen Vorteile zu bieten, und werden Sie niemals an einem "
"Dritten übermitteln."
#: resources/templates/resources/edit.html:7
@ -258,7 +260,7 @@ msgid ""
"request to your favorite"
msgstr ""
"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
msgid "Recommended Tools"
@ -266,12 +268,11 @@ msgstr "Empfohlene Werkzeuge"
#: resources/templates/resources/tools.html:10
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 importieren können"
msgstr "Zum beginnen haben wir eine VM erstellt die Sie einfach auf"
#: resources/templates/resources/tools.html:10
msgid "with a bunch of useful tools."
msgstr "mit vielen nützlichen Werkzeugen."
msgstr "importieren können, mit vielen nützlichen Werkzeugen."
#: resources/templates/resources/tools.html:11
msgid "You can dowload this OVA"
@ -290,7 +291,7 @@ msgid ""
"If you want to solve the challenges on your own machine, we recommend you to "
"use a Linux operating system."
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."
#: resources/templates/resources/tools.html:23
@ -303,7 +304,7 @@ msgstr ""
#: resources/templates/resources/tools.html:25
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
msgid "Translate 42CTF"
@ -311,7 +312,7 @@ msgstr "42CTF Übersetzen"
#: resources/templates/resources/translate.html:10
msgid "42CTF source code is publicly available on this"
msgstr "42CTF's Quellcode ist öffentlich zugänglich auf dieser"
msgstr "42CTF's Quellcode ist öffentlich zugänglich auf"
#: resources/templates/resources/translate.html:11
msgid ""
@ -320,7 +321,7 @@ msgid ""
"accessible."
msgstr ""
"Übersetzung benötigt keine Programmierkenntnisse und ist ein gute "
"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."
#: resources/templates/resources/translate.html:12

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-04 19:27+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -34,7 +34,9 @@ msgid ""
msgstr ""
#: resources/templates/resources/42ctf.html:12
msgid "The challenges require participants to find sort of passwords called \\"
msgid ""
"The challenges require participants to find sort of passwords called \"flags"
"\" and to submit them on the platform."
msgstr ""
#: resources/templates/resources/42ctf.html:15

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-04 19:27+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: 2022-02-09 10:55+0100\n"
"Last-Translator: Javier Uhagón (uhagontorralvojavier@gmail.com)\n"
"Language-Team: \n"
@ -32,13 +32,17 @@ msgid ""
"participants have to solve challenges of various categories to gain points "
"and progress on the scoreboard."
msgstr ""
"CTF significa Capture the Flag. Es una competición de ciberseguridad, en la que "
"los participantes tienen que resolver retos de diferentes categorías para ganar puntos "
"y progresar en la Tabla de puntos."
"CTF significa Capture the Flag. Es una competición de ciberseguridad, en la "
"que los participantes tienen que resolver retos de diferentes categorías "
"para ganar puntos y progresar en la Tabla de puntos."
#: resources/templates/resources/42ctf.html:12
msgid "The challenges require participants to find sort of passwords called \\"
msgstr "Los retos requieren que los participantes encuentren unas contraseñas llamadas \\"
msgid ""
"The challenges require participants to find sort of passwords called \"flags"
"\" and to submit them on the platform."
msgstr ""
"Los retos requieren que los participantes encuentren unas contraseñas "
"llamadas \\"
#: resources/templates/resources/42ctf.html:15
msgid "Functionment of 42CTF"
@ -62,7 +66,8 @@ msgstr "los retos están disponibles en la plataforma sin limites de tiempo."
#: resources/templates/resources/42ctf.html:18
msgid "The registration on 42CTF is open to everyone, 42 students or not."
msgstr "El registro a 42CTF está abierto a todo el mundo, estudiantes de 42 o no."
msgstr ""
"El registro a 42CTF está abierto a todo el mundo, estudiantes de 42 o no."
#: resources/templates/resources/42ctf.html:19
msgid ""
@ -88,15 +93,16 @@ msgstr "Puedes conocer al equipo en"
msgid ""
"Challenges are created by various contributors, not necessarily 42 students."
msgstr ""
"Los retos son creados por varios contribuidores, no necesariamente estudiantes de 42."
"Los retos son creados por varios contribuidores, no necesariamente "
"estudiantes de 42."
#: resources/templates/resources/42ctf.html:26
msgid ""
"Anyone is welcome to submit their own challenges, either on the permanent "
"CTF or for a specific event."
msgstr ""
"Todo el mundo está bienvenido a publicar sus propios retos, en el CTF permanente o en "
"un evento en específico."
"Todo el mundo está bienvenido a publicar sus propios retos, en el CTF "
"permanente o en un evento en específico."
#: resources/templates/resources/create_challenge.html:7
msgid "Create new challenges"
@ -115,14 +121,13 @@ msgid ""
"If your challenge is online (for example web or pwn), then you should give "
"us a short description of what you want to do."
msgstr ""
"Si tu evento es online (por ejemplo web o pwn), entonces deberias "
"mandarnos una corta descripción de lo que quieres hacer."
"Si tu evento es online (por ejemplo web o pwn), entonces deberias mandarnos "
"una corta descripción de lo que quieres hacer."
#: resources/templates/resources/create_challenge.html:13
msgid ""
"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
msgid "We plan to make those resources publicly available in a near future."
@ -141,12 +146,14 @@ 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)."
"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."
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."
@ -161,16 +168,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."
"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."
"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 ""
@ -195,8 +202,8 @@ msgid ""
"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."
"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"
@ -221,8 +228,8 @@ 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"
"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:49
msgid ""
@ -241,8 +248,8 @@ msgid ""
"More information coming soon, but as you can guess it involves making a pull "
"request to your favorite"
msgstr ""
"Más información llegará pronto, pero como puedes imaginar requiere hacer un pull request "
"a tu favorito"
"Más información llegará pronto, pero como puedes imaginar requiere hacer un "
"pull request a tu favorito"
#: resources/templates/resources/tools.html:7
msgid "Recommended Tools"
@ -250,7 +257,9 @@ msgstr "Herramientas Recomendadas"
#: resources/templates/resources/tools.html:10
msgid "To get you started, we built a VM that you can simply import in"
msgstr "Para empezar, hemos creado una Máquina Virtual que simplemente puedes importar."
msgstr ""
"Para empezar, hemos creado una Máquina Virtual que simplemente puedes "
"importar."
#: resources/templates/resources/tools.html:10
msgid "with a bunch of useful tools."
@ -314,15 +323,17 @@ msgstr "Tenemos un"
msgid ""
"describing how to translate pages with the Django internalization module."
msgstr ""
"Describiendo como traducir las páginas con el modulo de internacionalización Django."
"Describiendo como traducir las páginas con el modulo de internacionalización "
"Django."
#: resources/templates/resources/translate.html:13
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 ;)"
"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 ""
@ -330,9 +341,9 @@ msgid ""
"then open a pull request so that we can merge your contributions into our "
"repository."
msgstr ""
"Vas a necesitar hacer un Fork del repositorio de git, hacer tus cambios, hacer un push y "
"entonces abrir un Pull request para que podamos hacer merge de tus cambios a "
"nuestro repositorio."
"Vas a necesitar hacer un Fork del repositorio de git, hacer tus cambios, "
"hacer un push y entonces abrir un Pull request para que podamos hacer merge "
"de tus cambios a nuestro repositorio."
#: resources/templates/resources/translate.html:15
msgid "Don't hesitate to reach for help on"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-04 19:27+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -20,7 +20,7 @@ msgstr ""
#: resources/templates/resources/42ctf.html:7
msgid "What is 42CTF ?"
msgstr "Qu'est ce que 42CTF ?"
msgstr "Qu'est-ce que 42CTF ?"
#: resources/templates/resources/42ctf.html:10
msgid "A short introduction to CTF"
@ -32,90 +32,114 @@ msgid ""
"participants have to solve challenges of various categories to gain points "
"and progress on the scoreboard."
msgstr ""
"CTF veut dire Capture The Flag. C'est une compétition de cybersécurité où "
"les participants doivent résoudre des challenges dans différentes catégories "
"pour gagner des points et progresser dans le classement."
#: resources/templates/resources/42ctf.html:12
msgid "The challenges require participants to find sort of passwords called \\"
#: resources/templates/resources/42ctf.html:122
msgid ""
"The challenges require participants to find sort of passwords called \"flags"
"\" and to submit them on the platform."
msgstr ""
"Les challenges demandent aux participants de trouver des sortes de mots de "
"passe appelés \"flags\" et de les soumettre sur la plateforme."
#: resources/templates/resources/42ctf.html:15
msgid "Functionment of 42CTF"
msgstr ""
msgstr "Fonctionnement de 42CTF"
#: resources/templates/resources/42ctf.html:16
msgid "42CTF is what we call a permanent CTF."
msgstr ""
msgstr "42CTF est ce qu'on appelle un CTF permanent."
#: resources/templates/resources/42ctf.html:17
msgid "Except from the"
msgstr ""
msgstr "Sauf pour les"
#: resources/templates/resources/42ctf.html:17
msgid "events"
msgstr ""
msgstr "évènements"
#: resources/templates/resources/42ctf.html:17
msgid "challenges are available on the platform without time limitations."
msgstr ""
"les challenges sont disponnibles sur la plateforme sans limites de temps."
#: resources/templates/resources/42ctf.html:18
msgid "The registration on 42CTF is open to everyone, 42 students or not."
msgstr ""
msgstr "L'inscription à 42CTF est ouverte à tous, étudiant de 42 ou"
#: resources/templates/resources/42ctf.html:19
msgid ""
"Events may or may not be open. If you would like to organize an event on "
"42CTF, feel free to contact us."
msgstr ""
"Les évènements peuvent être publics ou non. Si vous souhaitez organiser un "
"évènement sur 42CTF, n'hésitez pas à nous contacter."
#: resources/templates/resources/42ctf.html:22
msgid "42CTF Team"
msgstr ""
msgstr "Équipe de 42CTF"
#: resources/templates/resources/42ctf.html:23
msgid "42CTF is managed by 42 students."
msgstr ""
msgstr "42CTF est géré par des étudiants de 42"
#: resources/templates/resources/42ctf.html:24
msgid "You can meet the team on"
msgstr ""
msgstr "Vous pouvez rencontrer l'équipe sur"
#: resources/templates/resources/42ctf.html:25
msgid ""
"Challenges are created by various contributors, not necessarily 42 students."
msgstr ""
"Les challenges sont créés par divers contributeurs, pas nécessairement des "
"étudiants de 42."
#: resources/templates/resources/42ctf.html:26
msgid ""
"Anyone is welcome to submit their own challenges, either on the permanent "
"CTF or for a specific event."
msgstr ""
"Tout le monde est invité à soumettre ses propres défis, que ce soit sur le "
"CTF permanent ou pour un évènement spécifique."
#: resources/templates/resources/create_challenge.html:7
msgid "Create new challenges"
msgstr ""
msgstr "Créer de nouveaux challenges"
#: resources/templates/resources/create_challenge.html:10
msgid "If you want to create new challenges for 42CTF, send us a message on "
msgstr ""
"Si vous souhaitez créer de nouveaux challenges pour 42CTF, envoyez-nous un "
"message sur "
#: resources/templates/resources/create_challenge.html:11
msgid "If your challenge is offline, then you don't have to ask us in advance."
msgstr ""
"Si votre défi est hors ligne, vous n'avez pas besoin de nous demander à "
"l'avance."
#: resources/templates/resources/create_challenge.html:12
msgid ""
"If your challenge is online (for example web or pwn), then you should give "
"us a short description of what you want to do."
msgstr ""
"Si votre challenge est en ligne (par exemple web or pwn), alors vous devrez "
"nous donner une courte description de ce que vous voulez faire."
#: resources/templates/resources/create_challenge.html:13
msgid ""
"We may be able to help you or to give you resources such as dockerfiles."
msgstr ""
"Nous pouvons être en mesure de vous aider ou de vous fournir des ressources "
"comme des dockerfiles."
#: resources/templates/resources/create_challenge.html:14
msgid "We plan to make those resources publicly available in a near future."
msgstr ""
"Nous prévoyons de rendre ces ressources accessibles au public dans un avenir "
"proche."
#: resources/templates/resources/donate.html:7
msgid "Donate"
@ -159,7 +183,7 @@ msgid ""
"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 "
"ne sont plus disponibles, sous la forme d'un évènement privé avec les "
"personnes de votre choix."
#: resources/templates/resources/donate.html:18
@ -187,7 +211,7 @@ msgid ""
"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, and "
"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
@ -206,14 +230,14 @@ msgid ""
"cash, send us a message !"
msgstr ""
"Si vous aimeriez qu'on ajoute un autre moyen de paiement, ou si vous voulez "
"payer en liquide, envoyez nous un message !"
"payer en liquide, envoyez-nous un message !"
#: resources/templates/resources/donate.html:48
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'adhesion, n'oubliez pas de nous envoyer vos noms et "
"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:49
@ -227,61 +251,69 @@ msgstr ""
#: resources/templates/resources/edit.html:7
msgid "Edit this page"
msgstr ""
msgstr "Modifier cette page"
#: resources/templates/resources/edit.html:12
msgid ""
"More information coming soon, but as you can guess it involves making a pull "
"request to your favorite"
msgstr ""
"De plus amples informations seront bientôt disponibles, mais comme vous "
"pouvez le deviner, vous pouvez faire une pull request sur votre bien aimé"
#: resources/templates/resources/tools.html:7
msgid "Recommended Tools"
msgstr ""
msgstr "Outils recommandés"
#: resources/templates/resources/tools.html:10
msgid "To get you started, we built a VM that you can simply import in"
msgstr ""
"Pour commencer, nous avons construit une VM que vous pouvez simplement "
"importer dans"
#: resources/templates/resources/tools.html:10
msgid "with a bunch of useful tools."
msgstr ""
msgstr "avec quelques outils utiles"
#: resources/templates/resources/tools.html:11
msgid "You can dowload this OVA"
msgstr ""
msgstr "Vous pouvez télécharger l'OVA"
#: resources/templates/resources/tools.html:11
msgid "here"
msgstr ""
msgstr "ici"
#: resources/templates/resources/tools.html:13
msgid "Here are the tools installed on the VM:"
msgstr ""
msgstr "Voici la liste des outils installés sur la VM:"
#: resources/templates/resources/tools.html:22
msgid ""
"If you want to solve the challenges on your own machine, we recommend you to "
"use a Linux operating system."
msgstr ""
"Si vous voulez résoudre les challenges sur votre propre machine, nous "
"recommandons l'utilisation de Linux."
#: resources/templates/resources/tools.html:23
msgid ""
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
"Windows."
msgstr ""
"La plupart des challenges de reverse sont des binaies ELF et ne "
"fonctionneront pas sur MacOS ou Windows."
#: resources/templates/resources/tools.html:25
msgid "Additionnaly, you will need the following languages interpreters:"
msgstr ""
msgstr "De plus, vous aurez besoin des interpréteurs de langage suivants :"
#: resources/templates/resources/translate.html:7
msgid "Translate 42CTF"
msgstr ""
msgstr "Traduire 42CTF"
#: resources/templates/resources/translate.html:10
msgid "42CTF source code is publicly available on this"
msgstr ""
msgstr "Le code source de 42CTF est publiquement disponible sur ce"
#: resources/templates/resources/translate.html:11
msgid ""
@ -289,21 +321,29 @@ msgid ""
"contribute if you want to help us, by making the platform always more "
"accessible."
msgstr ""
"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 "
"plateforme toujours plus accessible."
#: resources/templates/resources/translate.html:12
msgid "We have a"
msgstr ""
msgstr "Nous avons un"
#: resources/templates/resources/translate.html:12
msgid ""
"describing how to translate pages with the Django internalization module."
msgstr ""
"qui décrit comment traduire des pages avec le module d'internalisation de "
"Django."
#: resources/templates/resources/translate.html:13
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 ""
@ -311,7 +351,10 @@ msgid ""
"then open a pull request so that we can merge your contributions into our "
"repository."
msgstr ""
"Vous devrez forker le dépôt git, effectuer vos modifications, les push, puis "
"ouvrir une pull request afin que nous puissions merge vos contributions dans "
"notre repo."
#: resources/templates/resources/translate.html:15
msgid "Don't hesitate to reach for help on"
msgstr ""
msgstr "N'hésitez pas à demander de l'aide sur"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-04 19:27+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -34,7 +34,9 @@ msgid ""
msgstr ""
#: resources/templates/resources/42ctf.html:12
msgid "The challenges require participants to find sort of passwords called \\"
msgid ""
"The challenges require participants to find sort of passwords called \"flags"
"\" and to submit them on the platform."
msgstr ""
#: resources/templates/resources/42ctf.html:15

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-06 23:31+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,13 +17,14 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: resources/templates/resources/42ctf.html:7
msgid "What is 42CTF ?"
msgstr ""
msgstr "42CTFとは"
#: resources/templates/resources/42ctf.html:10
msgid "A short introduction to CTF"
msgstr ""
msgstr "CTFについての簡単な紹介"
#: resources/templates/resources/42ctf.html:11
msgid ""
@ -31,142 +32,172 @@ msgid ""
"participants have to solve challenges of various categories to gain points "
"and progress on the scoreboard."
msgstr ""
"42CTFとは、Capture The Flagの略です。サイバーセキュリティの競技会のことで、参"
"加者は様々なカテゴリーの課題を解決してポイントを獲得し、スコアボードでの順位"
"を上げていきます。"
#: resources/templates/resources/42ctf.html:12
msgid "The challenges require participants to find sort of passwords called \\"
msgid ""
"The challenges require participants to find sort of passwords called \"flags"
"\" and to submit them on the platform."
msgstr ""
"この課題では、参加者は\"フラグ\"と呼ばれるパスワードを見つけて、プラット"
"フォームに送信することになっています。"
#: resources/templates/resources/42ctf.html:15
msgid "Functionment of 42CTF"
msgstr ""
msgstr "42CTFの機能紹介"
#: resources/templates/resources/42ctf.html:16
msgid "42CTF is what we call a permanent CTF."
msgstr ""
msgstr "42CTFは、いわゆる永続的CTFです。"
#: resources/templates/resources/42ctf.html:17
msgid "Except from the"
msgstr ""
msgstr "こちらを除き"
#: resources/templates/resources/42ctf.html:17
msgid "events"
msgstr ""
msgstr "(イベント)"
#: resources/templates/resources/42ctf.html:17
msgid "challenges are available on the platform without time limitations."
msgstr ""
msgstr "時間制限なしにプラットフォーム上でチャレンジ可能です。"
#: resources/templates/resources/42ctf.html:18
msgid "The registration on 42CTF is open to everyone, 42 students or not."
msgstr ""
msgstr "42CTFへの登録は、42の学生であるかどうかに関わらず、誰でも可能です。"
#: resources/templates/resources/42ctf.html:19
msgid ""
"Events may or may not be open. If you would like to organize an event on "
"42CTF, feel free to contact us."
msgstr ""
"イベントは開催する場合としない場合があります。42CTFでのイベント開催をご希望の"
"方は、お気軽にお問い合わせください。"
#: resources/templates/resources/42ctf.html:22
msgid "42CTF Team"
msgstr ""
msgstr "42CTFチーム"
#: resources/templates/resources/42ctf.html:23
msgid "42CTF is managed by 42 students."
msgstr ""
msgstr "42CTFは42の学生によって運営されています。"
#: resources/templates/resources/42ctf.html:24
msgid "You can meet the team on"
msgstr ""
msgstr "こちらでチームに会えます:"
#: resources/templates/resources/42ctf.html:25
msgid ""
"Challenges are created by various contributors, not necessarily 42 students."
msgstr ""
msgstr "課題は42の学生だけではなく、様々な協力者によって作られます。"
#: resources/templates/resources/42ctf.html:26
msgid ""
"Anyone is welcome to submit their own challenges, either on the permanent "
"CTF or for a specific event."
msgstr ""
"常設のCTFでも、特定のイベントでも、誰でも自身が作成した課題を提出することがで"
"きます。"
#: resources/templates/resources/create_challenge.html:7
msgid "Create new challenges"
msgstr ""
msgstr "新しい課題を作成する"
#: resources/templates/resources/create_challenge.html:10
msgid "If you want to create new challenges for 42CTF, send us a message on "
msgstr ""
"42CTFの新しい課題を作成したい方は、こちらでメッセージを送ってください"
#: resources/templates/resources/create_challenge.html:11
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
msgid ""
"If your challenge is online (for example web or pwn), then you should give "
"us a short description of what you want to do."
msgstr ""
"課題がオンラインの場合webやpwn、何をしたいのかを簡単に説明してくださ"
"い。"
#: resources/templates/resources/create_challenge.html:13
msgid ""
"We may be able to help you or to give you resources such as dockerfiles."
msgstr ""
"私たちがお手伝いをさせていただいたり、dockerfileなどのリソースを提供させてい"
"ただく場合があります。"
#: resources/templates/resources/create_challenge.html:14
msgid "We plan to make those resources publicly available in a near future."
msgstr ""
msgstr "近日、これらのリソースを公開する予定です。"
#: resources/templates/resources/donate.html:7
msgid "Donate"
msgstr ""
msgstr "寄付"
#: resources/templates/resources/donate.html:10
msgid "Become a 42CTF member"
msgstr ""
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 ""
msgstr "その後、1年間のメンバーシップが付与されます。"
#: resources/templates/resources/donate.html:15
msgid "When you become a member, you gain the following advantages:"
msgstr ""
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 ""
@ -174,91 +205,105 @@ msgid ""
"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 ""
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:46
msgid ""
"If you would like us to add another payment method or if you want to pay in "
"cash, send us a message !"
msgstr ""
"他のお支払い方法や現金でのお支払いをご希望の場合は、メッセージをお送りくださ"
"い。"
#: resources/templates/resources/donate.html:48
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:49
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/edit.html:7
msgid "Edit this page"
msgstr ""
msgstr "このページの編集"
#: resources/templates/resources/edit.html:12
msgid ""
"More information coming soon, but as you can guess it involves making a pull "
"request to your favorite"
msgstr ""
"詳細は近日中にお知らせしますが、お察しの通り、以下にプルリクエストをすること"
"になります:"
#: resources/templates/resources/tools.html:7
msgid "Recommended Tools"
msgstr ""
msgstr "おすすめのツール"
#: resources/templates/resources/tools.html:10
msgid "To get you started, we built a VM that you can simply import in"
msgstr ""
msgstr "手始めに、Virtual BoxでインストールするだけのVMを構築しました"
#: resources/templates/resources/tools.html:10
msgid "with a bunch of useful tools."
msgstr ""
msgstr "便利なツールを使用しました。"
#: resources/templates/resources/tools.html:11
msgid "You can dowload this OVA"
msgstr ""
msgstr "このOVAはこちらからダウンロードできます"
#: resources/templates/resources/tools.html:11
msgid "here"
msgstr ""
msgstr "こちら"
#: resources/templates/resources/tools.html:13
msgid "Here are the tools installed on the VM:"
msgstr ""
msgstr "以下に、VMにインストールされたツールを紹介します"
#: resources/templates/resources/tools.html:22
msgid ""
"If you want to solve the challenges on your own machine, we recommend you to "
"use a Linux operating system."
msgstr ""
"自分のマシンで課題にチャレンジしたい場合は、Linux OSを使用することをお勧めし"
"ます。"
#: resources/templates/resources/tools.html:23
msgid ""
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
"Windows."
msgstr ""
msgstr "ReversingのほとんどはELFバイナリで、Mac OSやWindowsでは動作しません。"
#: resources/templates/resources/tools.html:25
msgid "Additionnaly, you will need the following languages interpreters:"
msgstr ""
msgstr "さらに、以下の言語のインタプリタが必要です。"
#: resources/templates/resources/translate.html:7
msgid "Translate 42CTF"
msgstr ""
msgstr "42CTFを翻訳"
#: resources/templates/resources/translate.html:10
msgid "42CTF source code is publicly available on this"
msgstr ""
msgstr "42CTFのソースコードはこのサイトで公開されています。"
#: resources/templates/resources/translate.html:11
msgid ""
@ -266,21 +311,27 @@ msgid ""
"contribute if you want to help us, by making the platform always more "
"accessible."
msgstr ""
"翻訳にはプログラミングのスキルは必要ありません。プラットフォームをより使いや"
"すくすることで、私たちに貢献したいとお考えの方には良い方法です。"
#: resources/templates/resources/translate.html:12
msgid "We have a"
msgstr ""
msgstr "こちらがあります。:"
#: resources/templates/resources/translate.html:12
msgid ""
"describing how to translate pages with the Django internalization module."
msgstr ""
"djangoのinternalizationモジュールを使ってページを翻訳する方法を説明したもので"
"す。"
#: resources/templates/resources/translate.html:13
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 ""
@ -288,7 +339,10 @@ msgid ""
"then open a pull request so that we can merge your contributions into our "
"repository."
msgstr ""
"gitリポジトリをフォークしていただき、変更を加えてプッシュし、プルリクエストを"
"作成していただくことで、皆さんの貢献を私たちのリポジトリにマージすることがで"
"きます。"
#: resources/templates/resources/translate.html:15
msgid "Don't hesitate to reach for help on"
msgstr ""
msgstr "躊躇せずに、こちらで助けを求めてください。:"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-04 19:27+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -36,7 +36,9 @@ msgid ""
msgstr ""
#: resources/templates/resources/42ctf.html:12
msgid "The challenges require participants to find sort of passwords called \\"
msgid ""
"The challenges require participants to find sort of passwords called \"flags"
"\" and to submit them on the platform."
msgstr ""
#: resources/templates/resources/42ctf.html:15

View File

@ -9,7 +9,7 @@
<div class="ctf-body">
<h4>{% trans "A short introduction to CTF" %}</h4>
{% trans "CTF stands for Capture The Flag. It is a cybersecurity competition, where participants have to solve challenges of various categories to gain points and progress on the scoreboard." %}
{% trans "The challenges require participants to find sort of passwords called \"flags\" and to submit them on the platform."%}
{% blocktranslate %}The challenges require participants to find sort of passwords called "flags" and to submit them on the platform.{% endblocktranslate %}
<br><br>
<h4>{% trans "Functionment of 42CTF" %}</h4>