Compare commits

..

91 Commits

Author SHA1 Message Date
Danhia 09377c509f updated git links in resources + donation section 2022-03-13 18:14:32 +01:00
Danhia 6a76f4b99f Merge pull request 'Add Japanese version of "gitea.html"' (#28) from ysaito/website:main into translation
Reviewed-on: #28
2022-02-23 14:38:52 +01:00
ysaito 5908ce4778 docs(news/ja/): Add Japanese version of gitea.html 2022-02-23 14:36:42 +09:00
Danhia 4e5fe52984 added latest news to repository 2022-02-21 16:37:34 +01:00
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
Danhia 23529b3b07 added english version of news contents 2022-02-09 12:39:12 +01:00
Danhia cb9bc7cc56 news content is now out of the db for languages other than english 2022-02-09 12:22:12 +01:00
Danhia af4912837f Merge pull request #5 from Miliviu/main
All Spanish strings translated
2022-02-09 11:12:32 +01:00
Miliviu 187579e61c Add trasnlator references and date of translation 2022-02-09 10:58:12 +01:00
Miliviu fabe417fe2 Add Spanish to availible languages in the Settings.py file 2022-02-09 10:53:11 +01:00
Miliviu a6a5e424df Added spanish translation to both django files 2022-02-09 10:44:40 +01:00
Danhia bcf0c51ba5 added option to open team to automatching 2022-02-08 15:36:06 +01:00
Danhia 241a3f2bc1 added japanese empty files 2022-02-06 23:39:46 +01:00
Danhia cb46708e5c fixed redirection when leaving team + few details in html 2022-02-04 19:28:09 +01:00
Danhia 3c166f3834 updated .po files for last modifications 2022-02-04 19:05:11 +01:00
Danhia 92a1dca27c Merge branch 'main' into events 2022-02-04 19:04:20 +01:00
Danhia 96121e401e fixed redirection in events 2022-02-04 19:04:17 +01:00
ix 97f6b99133 fix event html 2022-02-04 17:13:50 +01:00
Danhia c45cfed8d4 fixed centering flag vertically 2022-02-04 16:04:56 +01:00
ix 5dc04f888b fix flags 2022-02-04 15:43:56 +01:00
Danhia 993e1fa998 beginning of lang flag refacto 2022-02-04 15:28:06 +01:00
Danhia 9d33985fa4 Merge pull request #4 from ClemaX/translation/de
locale: de: Translate all existing messages
2022-02-04 13:05:05 +01:00
Clément Hamada 0cd862734e resources: locale: de: Translate all existing messages 2022-02-04 06:02:00 +01:00
Clément Hamada aed129b4b9 locale: de: Spellcheck 2022-02-04 05:58:07 +01:00
Clément Hamada d1ab64885e resources: locale: de: Update messages 2022-02-04 03:34:01 +01:00
Clément Hamada b2cf802ab5 locale: de: Update file references 2022-02-04 03:30:49 +01:00
Clément Hamada 266e018d83 locale: de: Translate all existing messages 2022-02-04 03:13:51 +01:00
Danhia 8fd25d8fa6 changed position of logos in footer for mobile devices + added helloasso button in resources 2022-02-04 00:27:29 +01:00
ix 53fe69aa09 Merge branch 'main' of github.com:Danhia/42CTF into main 2022-02-03 21:03:18 +01:00
Danhia aadb2ac858 hotfix for dynamic scoring 2022-02-03 21:02:55 +01:00
ix 34b8829797 Fix resources page 2022-02-03 21:00:04 +01:00
ix 619ddf3d07 fix spaces between nav elements 2022-02-03 20:49:24 +01:00
ix 5d00c5733f Fix resources page 2022-02-03 20:49:02 +01:00
ix 248cdc54d5 Fix unused html 2022-02-03 20:45:56 +01:00
Danhia f8eef0ef3d added dynamic scoring for permanent platform, let's hope nothing breaks 2022-02-03 20:27:55 +01:00
Danhia e806b23812 fixed latest flags when chall is disabled + fixed recompute_scoreboard 2022-02-03 18:46:37 +01:00
Danhia 0fbf7b77c3 added disabled attribute for challenge + fixed recomputescoreboard 2022-02-03 18:37:24 +01:00
Danhia 985f440ede hotfix for 0 division when there is an empty category in profile page 2022-02-02 19:34:22 +01:00
98 changed files with 3812 additions and 2066 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>
</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

@ -124,16 +124,18 @@ def profile(request, user_name):
member = True
else:
member = False
cats = Category.objects.all()
all_cats = Category.objects.all()
cats = [cat for cat in all_cats if CTF.objects.filter(category__name=cat.name, event=None, disabled=False)]
pointDatas = {}
for cat in cats:
# prepare categories
solved_count = CTF_flags.objects.filter(user=user_obj, ctf__event=None , ctf__category__name=cat.name).count()
max_count = CTF.objects.filter(category__name=cat.name, event=None).count()
solved = CTF_flags.objects.filter(user=user_obj, ctf__category__name=cat.name, ctf__event=None, ctf__disabled=False).order_by('flag_date')
max_count = CTF.objects.filter(category__name=cat.name, event=None, disabled=False).count()
# get datas
somme = 0
solved = CTF_flags.objects.filter(user=user_obj, ctf__category__name=cat.name, ctf__event=None).order_by('flag_date')
solved_count = len(solved)
pointDatas[cat.name] = []
pointDatas[cat.name].append([user_obj.date_joined.timestamp() * 1000, 0])
percent = (solved_count / max_count) * 100
@ -142,7 +144,7 @@ def profile(request, user_name):
somme += flag.ctf.points
pointDatas[cat.name].append([flag.flag_date.timestamp() * 1000, somme])
solves = CTF_flags.objects.filter(user=user_obj, ctf__event=None).order_by('-flag_date')
solves = CTF_flags.objects.filter(user=user_obj, ctf__event=None, ctf__disabled=False).order_by('-flag_date')
solved = []
somme = 0
solved.append([user_obj.date_joined.timestamp() * 1000, 0])
@ -151,18 +153,7 @@ def profile(request, user_name):
solved.append([s.flag_date.timestamp() * 1000,somme])
return render(request,'accounts/profile.html', {'user':user_obj, 'solves':solves,'solved':solved,'catsDatas': catsDatas, 'pointDatas': pointDatas,
'rank': rank, 'score' : somme, 'member' : member})
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)
'rank': rank, 'score' : somme, 'member' : member, 'cats':cats})
@login_required
def delete_account(request):
@ -180,3 +171,14 @@ def delete_account(request):
else:
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

View File

View File

@ -0,0 +1,28 @@
from collections import defaultdict
from django.core.management.base import BaseCommand, CommandError
from accounts.models import UserProfileInfo
from ctfs.models import CTF_flags, CTF
from math import log
class Command(BaseCommand):
help = 'Actualize challenges points based on number of solves'
def handle(self, *args, **options):
challenges = CTF.objects.filter(event=None, disabled=False).exclude(category__name="-Intro-")
for ctf in challenges:
solves = CTF_flags.objects.filter(ctf=ctf)
nb_solves = len(solves)
if nb_solves > 0:
new_points = max(200 - int(log(nb_solves)*8.5)*5, 5)
else:
new_points = 200
if new_points != ctf.points:
diff = ctf.points - new_points
ctf.points = new_points
ctf.save()
for s in solves:
s.user.userprofileinfo.score -= diff
s.user.userprofileinfo.save()

View File

@ -0,0 +1,18 @@
# Generated by Django 3.1.5 on 2022-02-03 17:19
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ctfs', '0006_alter_ctf_event'),
]
operations = [
migrations.AddField(
model_name='ctf',
name='disabled',
field=models.BooleanField(default=False),
),
]

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

@ -12,12 +12,12 @@ class Category(models.Model):
class CTF(models.Model):
name = models.CharField(max_length=200)
flag = models.CharField(max_length=100)
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

@ -5,33 +5,38 @@ from .models import Category, CTF, CTF_flags
from .forms import submit_flag
from accounts.models import UserProfileInfo
from django.utils.translation import get_language
from math import log
from accounts.models import UserProfileInfo
def actualize_points(ctf):
if ctf.category.name == "-Intro-":
return
solves = CTF_flags.objects.filter(ctf=ctf)
nb_solves = len(solves)
new_points = max(200 - int(log(nb_solves)*8.5)*5, 5)
if new_points != ctf.points:
diff = ctf.points - new_points
ctf.points = new_points
ctf.save()
for s in solves:
s.user.userprofileinfo.score -= diff
s.user.userprofileinfo.save()
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 category(request, cat_slug):
cat = get_object_or_404(Category, slug=cat_slug)
ctfs = CTF.objects.filter(category=cat, event=None).order_by('points')
ctfs = CTF.objects.filter(category=cat, event=None, disabled=False).order_by('points')
for ex in ctfs:
ex.solved_num = CTF_flags.objects.filter(ctf=ex).count()
ex.solved = ex.solved_by(request.user)
return render(request, 'ctfs/ctfs_list.html', {'ctfs' : ctfs, 'cat' : cat})
def ctf(request, cat_slug, ctf_slug):
ctf_info = get_object_or_404(CTF, 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
@ -39,19 +44,20 @@ def ctf(request, cat_slug, ctf_slug):
if request.user.is_authenticated:
form = submit_flag(data=request.POST)
if flagged == False and form.is_valid():
if CTF.objects.filter(flag=request.POST.get('flag'), slug=ctf_slug):
if CTF.objects.filter(flag=request.POST.get('flag'), slug=ctf_slug, event=None):
new = CTF_flags(user = request.user, ctf = ctf_info, flag_date = timezone.now())
new.save()
profil = UserProfileInfo.objects.get(user=request.user)
profil.last_submission_date = timezone.now()
profil.score += ctf_info.points
profil.save()
return render(request, 'ctfs/ctf_info.html', { 'ctf' : ctf_info, 'solved_list': solved_list, 'valitated': True, 'description': description, 'date': timezone.now()})
actualize_points(ctf_info)
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

@ -4,6 +4,7 @@
<div class="row">
<div class="col-sm-12 col-md-9">
<div class="ctf-block">
<a href="{% url 'events:event_info' event_slug=event.slug %}">< Back to event</a>
<div class="ctf-head">
<h3>{{ event.name }}</h3>
<small>{% trans "This event starts at" %} : {{ event.start_date }}</small>
@ -11,26 +12,26 @@
<div class="ctf-footer">
<div class="col-sm-8 col-md-6 mx-auto">
{% if logged == True%}
{% if logged == True%}
{% if registered == False %}
<span class="message error-msg">{% trans "You need to be registered to the event." %}</span>
{% else %}
{% if exist == True %}
<span class="message error-msg">{% trans "Name already taken." %}</span>
{% endif %}
{% if exist == True %}
<span class="message error-msg">{% trans "Name already taken." %}</span>
{% endif %}
<h2>Create Team</h2>
<form method="post" action="{% url 'events:create_team' event_slug=event.slug %}" class="create-team-form">
{% csrf_token %}
<div class="form-group">
<input class="form-control" type="text" name="teamname" placeholder="{% trans "Team name" %} *" maxlength="150" required="" id="id_teamname"></br>
<input class="form-control" type="password" name="password" placeholder="{% trans "Password" %} *" required="" id="id_password"></br>
<input type="submit" name="" class="form-control" value="{% trans "Create Team" %}">
</div>
{% csrf_token %}
<div class="form-group">
<input class="form-control" type="text" name="teamname" placeholder="{% trans "Team name" %} *" maxlength="150" required="" id="id_teamname"></br>
<input class="form-control" type="password" name="password" placeholder="{% trans "Password" %} *" required="" id="id_password"></br>
<input type="submit" name="" class="form-control" value="{% trans "Create Team" %}">
</div>
</form>
{% endif %}
{% else %}
{% else %}
<h4>{% trans "You need to be logged to access this event." %}</h4>
{% endif %}
{% endif %}
</div>
</div>
</div>
@ -38,24 +39,26 @@
<div class="d-none d-md-block col-10 col-md-3 right-sidebar">
<ul class="list-group">
<li class="list-group-item">{{ event.name }}</li>
<li class="list-group-item">{% trans "Starts at" %} : {{ event.start_date | date:'H:i d-m-y'}}</li>
<li class="list-group-item">{% trans "Ends at" %} : {{ event.end_date | date:'H:i d-m-y'}}</li>
<li class="list-group-item">{% trans "Starts at" %} : <span style="position:absolute;right: 15px;">{{ event.start_date | date:'H:i d-m-y'}}</span></li>
<li class="list-group-item">{% trans "Ends at" %} : <span style="position:absolute;right: 15px;">{{ event.end_date | date:'H:i d-m-y'}}</span></li>
</ul>
<ul class="list-group">
<li class="list-group-item">{% trans "Manage my team" %}</li>
<a href="{% url 'events:join_team' event_slug=event.slug %}" class="list-group-item">→{% trans "Join Team" %}</a>
<a href="{% url 'events:create_team' event_slug=event.slug %}" class="list-group-item">{% trans "Create Team" %}</a>
<a href="{% url 'events:join_team' event_slug=event.slug %}" class="list-group-item">{% trans "Join Team" %}</a>
</ul>
{% if event.auto_match %}
<ul class="list-group">
<form method='GET' action="{% url 'events:find_team' event_slug=event.slug %}">
{%csrf_token%}
<li class="list-group-item">
<input class="form-control" type="submit" value="{% trans "Find me a team !" %}">
</li>
</form>
</ul>
{% endif %}
</ul>
{% if event.auto_match %}
<ul class="list-group">
<li class="list-group-item">{% trans "Auto-matching" %}</li>
<form method='GET' action="{% url 'events:find_team' event_slug=event.slug %}">
{%csrf_token%}
<li class="list-group-item">
<input class="form-control" type="submit" value="{% trans "Find me a team !" %}">
</li>
</form>
</ul>
{% endif %}
</div>
</div>
{% endblock %}

View File

@ -20,14 +20,6 @@
</div>
<div class="ctf-footer">
{% if request.user.is_authenticated %}
{% if subisover == True %}
<span class="message error-msg">{% trans "Subscriptions is over." %}</span>
{% endif %}
{% if alreadyregistered == True %}
<span class="message error-msg">{% trans "You're already registered to this event." %}</span>
{% endif %}
{% if congrat == True %}
<p>{% trans "Congratulation !" %}</p>
{% elif alreadyflag == True %}
@ -37,7 +29,9 @@
{% 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 %}
<a class="begin-ctf-link" target="_blank" href="{{ ctf.ctf_url }}">{% trans "Start the challenge" %}</a></br>
{% elif ctf.file %}

View File

@ -4,6 +4,7 @@
<div class="row">
<div class="col-sm-12 col-md-9">
<div class="ctf-block">
<a href="{% url 'events:event_info' event_slug=event.slug %}">< Back to event</a>
<div class="ctf-head">
<h3>{{ event.name }}</h3>
<small>{% trans "This event starts at" %} : {{ event.start_date }}</small>
@ -11,18 +12,18 @@
<div class="ctf-footer">
<div class="col-sm-8 col-md-6 mx-auto">
{% if logged == True%}
{% if logged == True%}
{% if registered == False %}
<span class="message error-msg">{% trans "You need to be registered to the event." %}</span>
{% else %}
{% if notexist == True %}
<span class="message error-msg">{% trans "Team does not exist." %}</span>
{% elif wrongpwd == True %}
<span class="message error-msg">{% trans "Wrong password submited." %}</span>
{% elif max == True %}
<span class="message error-msg">{% trans "Maximum size reached." %}</span>
{% elif exist == True %}
{% endif %}
{% if notexist == True %}
<span class="message error-msg">{% trans "Team does not exist." %}</span>
{% elif wrongpwd == True %}
<span class="message error-msg">{% trans "Wrong password submited." %}</span>
{% elif max == True %}
<span class="message error-msg">{% trans "Maximum size reached." %}</span>
{% elif exist == True %}
{% endif %}
<h2>Join Team</h2>
<form method="post" action="{% url 'events:join_team' event_slug=event.slug %}" class="join-team-form">
{% csrf_token %}
@ -31,11 +32,11 @@
<input class="form-control" type="password" name="password" placeholder="{% trans "Password" %} *" required="" id="id_password"></br>
<input type="submit" name="" class="form-control" value="{% trans "Join Team" %}">
</div>
</form>
</form>
{% endif %}
{% else %}
{% else %}
<h4>{% trans "You need to be logged to access this event." %}</h4>
{% endif %}
{% endif %}
</div>
</div>
</div>
@ -43,24 +44,26 @@
<div class="d-none d-md-block col-10 col-md-3 right-sidebar">
<ul class="list-group">
<li class="list-group-item">{{ event.name }}</li>
<li class="list-group-item">{% trans "Starts at" %} : {{ event.start_date | date:'H:i d-m-y' }}</li>
<li class="list-group-item">{% trans "Ends at" %} : {{ event.end_date | date:'H:i d-m-y' }}</li>
<li class="list-group-item">{% trans "Starts at" %} : <span style="position:absolute;right: 15px;">{{ event.start_date | date:'H:i d-m-y'}}</span></li>
<li class="list-group-item">{% trans "Ends at" %} : <span style="position:absolute;right: 15px;">{{ event.end_date | date:'H:i d-m-y'}}</span></li>
</ul>
<ul class="list-group">
<li class="list-group-item">{% trans "Manage my team" %}</li>
<a href="{% url 'events:join_team' event_slug=event.slug %}" class="list-group-item">{% trans "Join Team" %}</a>
<a href="{% url 'events:create_team' event_slug=event.slug %}" class="list-group-item">{% trans "Create Team" %}</a>
</ul>
{% if event.auto_match %}
<ul class="list-group">
<form method='GET' action="{% url 'events:find_team' event_slug=event.slug %}">
{%csrf_token%}
<li class="list-group-item">
<input class="form-control" type="submit" value="{% trans "Find me a team !" %}">
</li>
</form>
</ul>
{% endif %}
</ul>
{% if event.auto_match %}
<ul class="list-group">
<li class="list-group-item">{% trans "Auto-matching" %}</li>
<form method='GET' action="{% url 'events:find_team' event_slug=event.slug %}">
{%csrf_token%}
<li class="list-group-item">
<input class="form-control" type="submit" value="{% trans "Find me a team !" %}">
</li>
</form>
</ul>
{% endif %}
</div>
</div>
{% endblock %}

View File

@ -45,14 +45,28 @@
{% for p in members %}
<li class="list-group-item"><a class="profile_link" href="{% url 'accounts:profile' user_name=p.user.username %}">{{ p.user.username }}</a></li>
{% endfor %}
<form method='POST' action="{% url 'events:leave_team' event_slug=player.event.slug %}">
</ul>
<form method='POST' action="{% url 'events:leave_team' event_slug=player.event.slug %}">
{%csrf_token%}
<li class="list-group-item">
<input class="form-control" type="submit" value="{% trans "Leave Team" %}">
</li>
</form>
{% if player.team.auto == False and player.event.auto_match == True %}
<form method='POST' action="{% url 'events:open_team' event_slug=player.event.slug %}">
{%csrf_token%}
<li class="list-group-item">
<input class="form-control" type="submit" value="{% trans "Leave Team" %}">
<input class="form-control" type="submit" value="{% trans "Open to automatching" %}">
</li>
</form>
</ul>
</form>
{% elif player.event.auto_match == True %}
<form method='POST' action="{% url 'events:close_team' event_slug=player.event.slug %}">
{%csrf_token%}
<li class="list-group-item">
<input class="form-control" type="submit" value="{% trans "Close to automatching" %}">
</li>
</form>
{% endif %}
</div>
</div>
{% endblock %}

View File

@ -17,4 +17,6 @@ urlpatterns = [
path('<str:event_slug>/manage_team', views.manage_team, name='manage_team'),
path('<str:event_slug>/leave_team', views.leave_team, name='leave_team'),
path('find_team/<str:event_slug>', views.find_team, name='find_team'),
path('<str:event_slug>/open_team', views.open_team, name='open_team'),
path('<str:event_slug>/close_team', views.close_team, name='close_team'),
]

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')
@ -29,6 +48,7 @@ def events(request):
def chall_event_info(request, event_slug, chall_slug):
event_info = get_object_or_404(Event, slug=event_slug)
ctf_info = get_object_or_404(CTF, event__slug=event_info.slug, slug=chall_slug)
if timezone.now() < ctf_info.pub_date:
return redirect('events:event_info', event_slug=event_slug)
eventisover = False
@ -37,6 +57,7 @@ def chall_event_info(request, event_slug, chall_slug):
wrongflag = False
errorform = False
notsub = False
noteam = False
player = None
if request.user.is_authenticated and not request.user.is_staff:
player = EventPlayer.objects.filter(event=event_info, user=request.user)
@ -44,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
@ -56,6 +77,8 @@ def chall_event_info(request, event_slug, chall_slug):
errorform = True
if request.GET.get('NotRegistered'):
notsub = True
if request.GET.get('NoTeam'):
noteam = True
solved_challs = CTF_flags.objects.filter(ctf=ctf_info).order_by('flag_date')
solved_list = []
for s in solved_challs:
@ -65,7 +88,7 @@ def chall_event_info(request, event_slug, chall_slug):
solved_list.append([s.user, s.flag_date])
description = get_description_by_lang(ctf_info)
return render(request, 'events/ctf_info.html', { 'ctf' : ctf_info, 'event':event_info, 'solved_list': solved_list, 'description': description, 'eventisover': eventisover, 'alreadyflag': alreadyflag,
'congrat': congrat, 'wrongflag': wrongflag, 'errorform': errorform, 'notsub': notsub})
'congrat': congrat, 'wrongflag': wrongflag, 'errorform': errorform, 'notsub': notsub, 'noteam':noteam})
def event(request, event_slug):
event_info = get_object_or_404(Event, slug=event_slug)
@ -86,15 +109,11 @@ def event(request, event_slug):
player = None
if player:
IsRegistered = True
if not player.team and event_info.team_size > 1:
return render(request, 'events/create_team.html', {'event' : event_info, 'logged': True, 'wrongpwd': False, 'registered' : True, 'notexist' : False})
if event_info.password:
if request.user.is_authenticated:
if request.user.is_staff is False:
if not player:
return render(request, 'events/event_pwd.html', {'event' : event_info, 'logged': True, 'wrongpwd': wrongpwd, 'alreadyregistered': alreadyregistered})
elif not player.team and event_info.team_size > 1:
return render(request, 'events/create_team.html', {'event' : event_info, 'logged': True, 'wrongpwd': False, 'registered' : True, 'notexist' : False})
else:
return render(request, 'events/event_pwd.html', {'event' : event_info, 'logged': False, 'wrongpwd': wrongpwd, 'alreadyregistered': alreadyregistered})
ended = False
@ -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,10 +146,15 @@ 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:
response['Location'] += '?NoTeam=1'
return response
if ev.team_size == 1 and CTF_flags.objects.filter(user=request.user, ctf=ctf_info):
flagged = True
else:
@ -157,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:
@ -191,8 +218,6 @@ def submit_pwd(request, event_slug):
else:
new = EventPlayer(user=request.user, event=ev)
new.save()
if event_info.team_size > 1:
return render(request, 'events/create_team.html', {'event' : event_info, 'logged': True, 'wrongpwd': False, 'registered' : True, 'notexist' : False})
return redirect('events:event_info', event_slug=event_slug)
@ -214,8 +239,6 @@ def register_to_event(request, event_slug):
else:
new = EventPlayer(user=request.user, event=ev, score=0)
new.save()
if ev.team_size > 1:
return render(request, 'events/create_team.html', {'event' : ev, 'logged': True, 'wrongpwd': False, 'registered' : True, 'notexist' : False})
return redirect('events:event_info', event_slug=event_slug)
@login_required

View File

@ -11,7 +11,6 @@ from random import randint
@login_required
def create_team(request, event_slug):
response = redirect('events:create_team', event_slug=event_slug)
ev = get_object_or_404(Event, slug=event_slug)
if request.method == 'POST':
if request.user.is_authenticated and ev.team_size > 1:
@ -22,11 +21,12 @@ def create_team(request, event_slug):
player = EventPlayer.objects.get(user=request.user, event=ev)
player.team = new
player.save()
return redirect('events:event_info', event_slug=event_slug)
return redirect('events:event_info', event_slug=event_slug)
else:
return render(request, 'events/create_team.html', {'event' : ev, 'logged': True, 'wrongpwd': False, 'registered' : True, 'exist' : False})
@login_required
def join_team(request, event_slug):
response = redirect('events:join_team', event_slug=event_slug)
ev = get_object_or_404(Event, slug=event_slug)
if request.method == 'POST':
if request.user.is_authenticated and ev.team_size > 1:
@ -46,9 +46,9 @@ 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})
return redirect('events:event_info', event_slug=event_slug)
@login_required
def team_info(request, name, event_slug):
@ -102,6 +102,8 @@ def team_info(request, name, event_slug):
def manage_team(request, event_slug):
event_info = get_object_or_404(Event, slug=event_slug)
player = EventPlayer.objects.get(user=request.user, event=event_info)
if not player.team:
return render(request, 'events/create_team.html', {'event' : event_info, 'logged': True, 'wrongpwd': False, 'registered' : True, 'notexist' : False})
members = EventPlayer.objects.filter(team=player.team, event=event_info)
if request.method == 'POST':
@ -147,7 +149,7 @@ def leave_team(request, event_slug):
if members.count() == 0:
team.delete()
return render(request, 'events/create_team.html', {'event' : event_info, 'logged': True, 'wrongpwd': False, 'registered' : True, 'notexist' : False})
return redirect('events:event_info', event_slug=event_slug)
@login_required
def find_team(request, event_slug):
@ -174,3 +176,27 @@ def find_team(request, event_slug):
player.save()
return redirect('events:event_info', event_slug=event_slug)
@login_required
def open_team(request, event_slug):
event_info = get_object_or_404(Event, slug=event_slug)
player = EventPlayer.objects.get(user=request.user, event=event_info)
if not player.team:
return render(request, 'events/create_team.html', {'event' : event_info, 'logged': True, 'wrongpwd': False, 'registered' : True, 'notexist' : False})
player.team.auto = True
player.team.save()
return redirect('events:manage_team', event_slug=event_slug)
@login_required
def close_team(request, event_slug):
event_info = get_object_or_404(Event, slug=event_slug)
player = EventPlayer.objects.get(user=request.user, event=event_info)
if not player.team:
return render(request, 'events/create_team.html', {'event' : event_info, 'logged': True, 'wrongpwd': False, 'registered' : True, 'notexist' : False})
player.team.auto = False
player.team.save()
return redirect('events:manage_team', event_slug=event_slug)

View File

@ -3,6 +3,7 @@
{% load i18n %}
{% get_current_language as lang %}
{% load is_member %}
{% load get_news %}
<div class="row">
<div class="col-lg-3 col-sm-12 right-sidebar middle-sm">
@ -34,17 +35,8 @@
<div class="card-body">
<h5 class="card-title">{{ n.name|safe }}</h5>
<p class="card-text">
{% if lang == "fr" and n.content %}
{{ n.content|safe }}
{% elif lang == "en" and n.content_en %}
{{ n.content_en|safe }}
{% elif lang == "de" and n.content_de %}
{{ n.content_de|safe }}
{% elif lang == "ru" and n.content_ru %}
{{ n.content_ru|safe }}
{% else %}
{% trans "No translation available. Please try another language (English or French)." %}
{% endif %}
{% get_news_by_lang n lang as content %}
{{ content | safe }}
</p>
</div>
<div class="card-footer text-muted">
@ -83,13 +75,13 @@
{% endfor %}
</ul>
<div class="row flex-nowrap">
<div class="col-lg-6 col-sm-3">
<div class="col-lg-6 col-md-6">
<ul class="list-group">
<li class="list-group-item active">{% trans "Flags" %}</li>
<li class="list-group-item"><span>{{ flags }}</span></li>
</ul>
</div>
<div class="col-lg-6 col-sm-3">
<div class="col-lg-6 col-md-6">
<ul class="list-group">
<li class="list-group-item active">{% trans "Users" %}</li>
<li class="list-group-item"><span>{{ nb_users }}</span></li>

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 @@
As you may already be aware, solving CTF challenges require a lot of tools and it may be difficult to find out which ones you need to install. </br>
We've made a VM with everything you need for 42CTF challenges so that you can focus on what is really important: flag ! </br>
All you need to do is download this <b><a href="/media/xubuntu-42ctf.ova">OVA</a></b> and import it in <b><a href="https://www.virtualbox.org/wiki/Downloads">Virtual Box</a>.<br></b>
So, what are you waiting for ?

View File

@ -0,0 +1,7 @@
You noticed a little change in the 42CTF scoreboard ?<br><br>
Don't panic, all your flags are safe and sound. We just switched to dynamic scoring. It means that challenges points are not fixed anymore: they will now decrease with each solve.<br>
Challenges points start at 200, and cannot go below than 5.<br><br>
We hope that this will allow better reflecting of the actual difficulty of the challenges. Limited-time events are not affected by this change.

View File

@ -0,0 +1,3 @@
We're pleased to announce that 42CTF source code is now available on a self-hosted gitea <a class="footer_imgs" href="https://gitea.42ctf.org" target="_blank"><img src="/static/img/gitea_logo.png" width="30"></a><br><br>
If you want to contribute to the platform (development or translation), you can send us a message on <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a> or simply fill this <a href="https://forms.42l.fr/apps/forms/bpmyGR37AR4yHGnC">form</a> and we'll contact you !

View File

@ -0,0 +1,9 @@
Looking for your soul mate, a new friend, or just a decent CTF companion ?<br><br>
We at 42CTF have what you need: the <a href="/events/speed_dating_2022">Speed Dating CTF</a> !<br><br>
Come alone or in good company for this very short competition, which will last only 4 hours.<br>
You will be able to count on only one other player for this team CTF.<br>
You can either choose your partner or you can let the fate decide for you.<br><br>
Good luck !

View File

@ -0,0 +1,8 @@
Always wanted to learn about SQL injections ? <br>
<br>
We offer you three brand new challenges created by <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 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>
Don't forget that you can always reach out on <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a> to propose new challenges !

View File

@ -0,0 +1,9 @@
New limited-time event : <b>Welcome CTF 2021</b> !<br><br>
Dates: from 10/12/2021 8pm to 12/12/2021 8pm (Paris time).<br>
This is a CTF to welcome the new students who join us at 42.<br>
It will be accessible only for the persons who started their cursus <b>after</b> the 01/09/2021.<br><br>
For the others, you can still solve the challenges already available on the website and try to reach the top 10 ! <br><br>
Registration <a href=https://forms.42l.fr/apps/forms/SooTbnT4PCs9na7C>here</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,7 @@
Comme vous le savez surement déjà, résoudre des challenges nécessite beaucoup d'outils et il peut être difficile de savoir lesquels sont vraiment nécessaires. <br>
Nous avons créé une VM avec tout ce dont vous avez besoin pour 42CTF afin que vous vous concentriez sur ce qui compte vraiment : flag ! <br>
Tout ce dont vous avez besoin est de télécharger cet <b><a href="/media/xubuntu-42ctf.ova">OVA</a></b> et de l'importer dans <b><a href="https://www.virtualbox.org/wiki/Downloads">Virtual Box</a></b>.<br>
Alors, qu'est ce que vous attendez ?

View File

@ -0,0 +1,7 @@
Vous avez remarqué un petit changement sur le scoreboard de 42CTF ?<br><br>
Pas de panique, tous vos flags sont sains et saufs. Nous avons juste basculé sur du scoring dynamique. Cela signifie que les points des challenges ne sont plus fixes : ils diminueront désormais à chaque nouvelle résolution.<br>
Un challenge démarre à 200 points, et ne peut pas descendre en dessous de 5 points.<br><br>
Nous espérons que cela permettra de mieux refléter la véritable difficulté des challenges. Les événements à durée limitée ne sont pas concernés par ce changement.

View File

@ -0,0 +1,3 @@
Nous sommes heureux de vous annoncer que le code source de 42CTF est désormais disponible sur un <a class="footer_imgs" href="https://gitea.42ctf.org" target="_blank"><img src="/static/img/gitea_logo.png" width="30"></a> auto-hébergé.<br><br>
Si vous voulez contribuer a la plateforme (développement ou traduction), vous pouvez nous envoyer un message sur <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a> ou simplement remplir ce <a href="https://forms.42l.fr/apps/forms/bpmyGR37AR4yHGnC">formulaire</a> et nous vous contacterons !

View File

@ -0,0 +1,9 @@
À la recherche de l'âme soeur, d'un nouvel ami, ou juste d'un compagnon de CTF ?<br><br>
Nous avons ce dont vous avez besoin : le <a href="/events/speed_dating_2022">Speed Dating CTF</a> !<br><br>
Venez seul ou bien accompagné pour cette très courte compétition, qui ne durera que 4 heures.<br>
Vous ne pourrez compter que sur une seule autre personne pour ce CTF en équipe.<br>
Vous pouvez soit choisir votre partenaire, soit laisser laisser le destin décider pour vous.<br><br>
Bonne chance !

View File

@ -0,0 +1,8 @@
Vous avez toujours voulu en apprendre plus sur les injections SQL ? <br>
<br>
On vous propose trois nouveaux challenges créés par <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 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>
N'oubliez pas que vous pouvez toujours nous contacter sur <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a> pour proposer des nouveaux challenges !

View File

@ -0,0 +1,9 @@
Nouvel évènement en temps limité : <b>Welcome CTF 2021</b> !<br><br>
Dates : du 10/12/2021 20h au 12/12/2021 20h. <br>
Il s'agit d'un CTF pour souhaiter la bienvenue aux nouveaux étudiants qui nous rejoignent à 42.<br>
Il ne sera donc accessible qu'aux personnes ayant effectué leur rentrée <b>après</b> le 01/09/2021.<br><br>
Pour les autres, vous pouvez toujours résoudre les challenges déjà disponibles sur le site et tenter de vous hisser dans le top 10 ! <br><br>
Inscriptions <a href=https://forms.42l.fr/apps/forms/SooTbnT4PCs9na7C>ici</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,3 @@
42CTFのソースコードがセルフホストのgitea <a class="footer_imgs" href="https://gitea.42ctf.org" target="_blank"><img src="/static/img/gitea_logo.png" width="30"></a> で公開されたことをお知らせします。<br><br>
プラットフォームへの貢献(開発や翻訳)をしていただける方は、 <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a> にメッセージをお送りいただくか、こちらの <a href="https://forms.42l.fr/apps/forms/bpmyGR37AR4yHGnC">フォーム</a> にご記入いただければご連絡いたします!

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

View File

@ -0,0 +1,13 @@
from django import template
from django.core.files.storage import default_storage
register = template.Library()
@register.simple_tag
def get_news_by_lang(news, lang):
filepath = "home/templates/news/"+ lang + "/" + news.slug + ".html"
try:
with open(filepath) as fp:
return fp.read()
except:
return news.content_en

View File

@ -8,26 +8,14 @@ from django.urls import translate_url
from django.utils.translation import (
LANGUAGE_SESSION_KEY, check_for_language, get_language,
)
from django.core.files.storage import default_storage
import datetime
from collections import defaultdict
import operator
def get_content_by_lang(news):
lang = get_language()
ret = None
if lang == "fr":
ret = news.content
elif lang == "en":
ret = news.content_en
elif lang == "de":
ret = news.content_de
elif lang == "ru":
ret = news.content_ru
return ret
def get_weekly_top():
week_ago = datetime.datetime.now() - datetime.timedelta(days=7)
weekly_flags = CTF_flags.objects.filter(flag_date__gt=week_ago)
weekly_flags = CTF_flags.objects.filter(flag_date__gt=week_ago, ctf__disabled=False, ctf__event=None)
scores = defaultdict(int)
for sol in weekly_flags:
@ -48,11 +36,11 @@ def home(request):
response = HttpResponseRedirect(url_translated)
return response
news = new.objects.order_by('-pub_date')[:5]
latest_ctfs = CTF.objects.filter(event=None).order_by('-pub_date')[:5]
latest_ctfs = CTF.objects.filter(event=None, disabled=False).order_by('-pub_date')[:5]
top10 = UserProfileInfo.objects.select_related().order_by('-score', 'last_submission_date', 'user__username')[:10]
nb_flags = CTF_flags.objects.count()
nb_users = UserProfileInfo.objects.count()
latest_flags = CTF_flags.objects.order_by('-flag_date')[:5]
latest_flags = CTF_flags.objects.filter(ctf__event = None, ctf__disabled=False).order_by('-flag_date')[:5]
top_weekly = get_weekly_top()
return render(request, 'home/home.html', {'news' : news, 'ctfs' : latest_ctfs, 'top' : top10, 'flags' : nb_flags,

View File

@ -3,16 +3,15 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-02 19:22+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"
"Language: \n"
"POT-Creation-Date: 2022-03-13 18:04+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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -20,95 +19,112 @@ msgstr ""
#: accounts/templates/accounts/delete.html:8
msgid "Delete account"
msgstr ""
msgstr "Account löschen"
#: accounts/templates/accounts/delete.html:11
msgid "Please confirm your password to delete your account."
msgstr ""
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."
msgstr ""
msgstr "Gelöschte Accounts können nicht wiederhergestellt werden."
#: accounts/templates/accounts/delete.html:15
msgid "Password inccorect."
msgstr ""
msgstr "Falsches Passwort."
#: accounts/templates/accounts/delete.html:17
msgid "Your account has been deleted."
msgstr ""
msgstr "Ihr Account wurde gelöscht."
#: accounts/templates/accounts/delete.html:22
#: accounts/templates/accounts/login.html:19
#: accounts/templates/accounts/register.html:23
#: events/templates/events/create_team.html:26
#: events/templates/events/join_team.html:31
#: events/templates/events/create_team.html:27
#: events/templates/events/join_team.html:32
msgid "Password"
msgstr ""
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"
msgstr ""
msgstr "Nutzername"
#: accounts/templates/accounts/edit.html:25
msgid "Email"
msgstr ""
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"
msgstr ""
msgstr "Webseite"
#: accounts/templates/accounts/edit.html:36
#: events/templates/events/manage_team.html:29
msgid "Apply"
#, fuzzy
#| msgid "Apply"
msgid " Apply"
msgstr "Anwenden"
#: accounts/templates/accounts/edit.html:45
#, fuzzy
#| msgid "Delete account"
msgid "Connected accounts"
msgstr "Account löschen"
#: accounts/templates/accounts/edit.html:53
msgid "Disconnect Discord"
msgstr ""
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/edit.html:59
msgid "Connect Discord"
msgstr ""
#: accounts/templates/accounts/edit.html:70
#: 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 "Punktzahl"
#: accounts/templates/accounts/edit.html:55
#: accounts/templates/accounts/edit.html:78
#: accounts/templates/accounts/profile.html:60
msgid "Registered since"
msgstr ""
msgstr "Registriert seit"
#: accounts/templates/accounts/edit.html:61
msgid "Delete my account"
msgstr ""
#: accounts/templates/accounts/edit.html:84
#, fuzzy
#| msgid "Delete my account"
msgid " Delete my account"
msgstr "Meinen Account löschen"
#: accounts/templates/accounts/login.html:13
msgid "Please, verify your infos."
msgstr ""
msgstr "Überprüfen Sie bitte ihre Daten."
#: accounts/templates/accounts/login.html:22
msgid "Reset password"
msgstr ""
msgstr "Passwort zurücksetzen"
#: accounts/templates/accounts/login.html:31
#: accounts/templates/accounts/register.html:38 templates/base.html:103
#: accounts/templates/accounts/register.html:38 templates/base.html:97
#: templates/registration/password_reset_complete.html:18
#: templates/registration/password_reset_confirm.html:38
#: templates/registration/password_reset_done.html:18
#: templates/registration/password_reset_form.html:26
msgid "Login"
msgstr ""
msgstr "Anmelden"
#: accounts/templates/accounts/login.html:32
#: accounts/templates/accounts/register.html:37
@ -117,37 +133,37 @@ msgstr ""
#: templates/registration/password_reset_done.html:19
#: templates/registration/password_reset_form.html:27
msgid "Sign up"
msgstr ""
msgstr "Registrieren"
#: accounts/templates/accounts/profile.html:10
msgid "Challenges Solved by"
msgstr ""
msgstr "Herausforderung gelöst von"
#: accounts/templates/accounts/profile.html:21
#: events/templates/events/team.html:20
msgid "Challenge Name"
msgstr ""
msgstr "Name der Herausforderung"
#: accounts/templates/accounts/profile.html:22
#: events/templates/events/team.html:21
msgid "Category"
msgstr ""
msgstr "Kategorie"
#: accounts/templates/accounts/profile.html:23
#: events/templates/events/team.html:22
msgid "Points"
msgstr ""
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 ""
msgstr "Datum"
#: accounts/templates/accounts/profile.html:39
msgid "It seems that this user has not solved any challenge yet..."
msgstr ""
msgstr "Es scheint bisher noch keiner diese Herausforderung gelöst zu haben..."
#: accounts/templates/accounts/profile.html:47
#: events/templates/events/event_info.html:63
@ -156,438 +172,487 @@ msgstr ""
#: events/templates/events/team.html:46
#: scoreboard/templates/scoreboard/scoreboard.html:12
msgid "Rank"
msgstr ""
msgstr "Rang"
#: accounts/templates/accounts/profile.html:56
msgid "Status: Member"
msgstr ""
msgstr "Status: Mitglied"
#: accounts/templates/accounts/profile.html:58
msgid "Status: Visitor"
msgstr ""
msgstr "Status: Gast"
#: accounts/templates/accounts/profile.html:64
#: events/templates/events/team.html:57
msgid "Categories stats"
msgstr ""
msgstr "Kategorie Statistiken"
#: accounts/templates/accounts/register.html:13
msgid "Welcome !"
msgstr ""
msgstr "Willkommen!"
#: accounts/templates/accounts/register.html:14
msgid "Your account has been created."
msgstr ""
msgstr "Ihr Account wurde erstellt."
#: accounts/templates/accounts/register.html:25
msgid "Personal website"
msgstr ""
msgstr "Persönliche Webseite"
#: accounts/templates/accounts/register.html:26
#: events/templates/events/event_info.html:119
msgid "Register"
msgstr ""
msgstr "Registrieren"
#: accounts/views/views.py:33
msgid "Your account was inactive."
msgstr ""
msgstr "Ihr Account war inaktiv."
#: accounts/views/views.py:52
msgid ""
"The password must contain at least one letter and at least one digit or "
"punctuation character."
msgstr ""
"Das Passwort muss mindestens einen Buchstaben und eine Ziffer oder einen "
"Satzzeichen enthalten."
#: accounts/views/views.py:54
msgid "A user with that email already exists."
msgstr ""
msgstr "Ein Nutzer mit dieser Email existiert bereits."
#: accounts/views/views.py:67
msgid "A user with that username already exists."
msgstr ""
msgstr "Ein Nutzer mit diesem Nutzernamen existiert bereits."
#: accounts/views/views.py:95
msgid "Email already taken."
msgstr ""
msgstr "Email bereits vergeben."
#: accounts/views/views.py:101
msgid "Username already taken."
msgstr ""
msgstr "Nutzername bereits vergeben."
#: accounts/views/views.py:105 events/views/teams.py:122
#: accounts/views/views.py:105 events/views/teams.py:124
msgid "Updated."
msgstr ""
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 ""
msgstr "Veröffentlichungsdatum"
#: 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 "Herausforderung ist noch nicht verfügbar."
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:34
msgid "Already flagged"
msgstr ""
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr "Herzlichen Glückwunsch!"
#: 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
msgid "Start the challenge"
msgstr ""
#: 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:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:44
#: events/templates/events/ctf_info.html:53
#: 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: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 "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 ""
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 ""
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 ""
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 ""
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 ""
msgstr "Belohnungspunkte"
#: ctfs/templates/ctfs/ctfs_list.html:14
msgid "Solved"
msgstr ""
msgstr "Gelöst"
#: ctfs/templates/ctfs/ctfs_list.html:37
msgid "No ctf available for this category."
msgstr ""
msgstr "Kein CTF in dieser Kategorie verfügbar."
#: ctfs/templates/ctfs/ctfs_list.html:42
msgid "Categories"
msgstr ""
msgstr "Kategorien"
#: ctfs/templates/ctfs/ctfs_list.html:48 templates/base.html:54
msgid "No category available."
msgstr ""
msgstr "Keine Kategorie verfügbar."
#: events/templates/events/create_team.html:9
#: events/templates/events/join_team.html:9
#: events/templates/events/create_team.html:10
#: events/templates/events/join_team.html:10
msgid "This event starts at"
msgstr ""
msgstr "Dieses Ereignis beginnt am"
#: events/templates/events/create_team.html:16
#: events/templates/events/join_team.html:16
#: 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 "Sie müssen am Ereignis teilnehmen."
#: events/templates/events/create_team.html:19 events/views/teams.py:118
#: events/templates/events/create_team.html:20 events/views/teams.py:120
msgid "Name already taken."
msgstr ""
msgstr "Name schon vergeben."
#: events/templates/events/create_team.html:25
#: events/templates/events/join_team.html:30
#: 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 "Teamname"
#: events/templates/events/create_team.html:27
#: events/templates/events/create_team.html:46
#: events/templates/events/join_team.html:52
#: 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 "Team erstellen"
#: events/templates/events/create_team.html:32
#: events/templates/events/create_team.html:33
#: events/templates/events/event_pwd.html:28
#: events/templates/events/join_team.html:37
#: events/templates/events/join_team.html:38
msgid "You need to be logged to access this event."
msgstr ""
#: events/templates/events/create_team.html:41
#: events/templates/events/event_info.html:113
#: events/templates/events/event_pwd.html:36
#: events/templates/events/join_team.html:46
msgid "Starts at"
msgstr ""
msgstr "Sie müssen angemeldet sein um auf dieses Ereignis zuzugreifen."
#: 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 "Beginnt am"
#: 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:47
#: events/templates/events/join_team.html:48
msgid "Ends at"
msgstr ""
msgstr "Endet am"
#: events/templates/events/create_team.html:47
#: events/templates/events/join_team.html:32
#: events/templates/events/join_team.html:51
msgid "Join Team"
msgstr ""
#: events/templates/events/event_info.html:129
#: events/templates/events/join_team.html:52
msgid "Manage my team"
msgstr "Team verwalten"
#: events/templates/events/create_team.html:54
#: events/templates/events/join_team.html:59
#: 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 "Team beitreten"
#: events/templates/events/create_team.html:53
#: events/templates/events/join_team.html:58
msgid "Auto-matching"
msgstr "Auto-Matching"
#: events/templates/events/create_team.html:57
#: events/templates/events/join_team.html:62
msgid "Find me a team !"
msgstr ""
msgstr "Finde mir einen Team!"
#: events/templates/events/ctf_info.html:10
msgid "Event"
msgstr ""
msgstr "Ereignis"
#: 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 ""
"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:18
msgid "This event is over."
msgstr "Dieses Ereignis hat bereits geendet."
#: 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: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 "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 ""
#: 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 "Sie haben sich schon für dieses Ereignis registriert."
#: events/templates/events/event_info.html:20
#: events/templates/events/event_pwd.html:9
msgid "This event start at"
msgstr ""
msgstr "Dieses Ereignis startet am"
#: events/templates/events/event_info.html:30
msgid "Challenges"
msgstr ""
msgstr "Herausforderungen"
#: events/templates/events/event_info.html:47
msgid "No challenges available."
msgstr ""
msgstr "Keine Herausforderung verfügbar."
#: events/templates/events/event_info.html:51
msgid "The event has not started yet."
msgstr ""
msgstr "Das Ereignis hat noch nicht begonnen."
#: events/templates/events/event_info.html:57
msgid "ScoreBoard"
msgstr ""
msgstr "Punktestand"
#: events/templates/events/event_info.html:88
msgid "Team"
msgstr ""
msgstr "Team"
#: events/templates/events/event_info.html:106
msgid "No one have earn point yet, you gonna be the first ?"
msgstr ""
#: events/templates/events/event_info.html:129
msgid "Manage my team"
msgstr ""
msgstr "Niemand hat bisher Punkte verdient, werden Sie der erste sein?"
#: events/templates/events/event_pwd.html:15
#: events/templates/events/join_team.html:21
#: events/templates/events/join_team.html:22
msgid "Wrong password submited."
msgstr ""
msgstr "Falsches Passwort eingetragen."
#: events/templates/events/event_pwd.html:20
msgid "This event is password protected"
msgstr ""
msgstr "Dieses Ereignis ist passwortgeschützt"
#: events/templates/events/event_pwd.html:21
msgid "You need to submit the event password to gain access to this event."
msgstr ""
msgstr "Sie müssen das Ereignispasswort eintragen um darauf zuzugreifen."
#: events/templates/events/events_list.html:6 templates/base.html:63
#: events/templates/events/events_list.html:6 templates/base.html:61
msgid "Events"
msgstr ""
msgstr "Ereignisse"
#: events/templates/events/events_list.html:38
msgid "See more"
msgstr ""
msgstr "Weiter"
#: events/templates/events/events_list.html:44
msgid "No events available."
msgstr ""
msgstr "Keine Ereignisse verfügbar."
#: events/templates/events/join_team.html:19
#: events/templates/events/join_team.html:20
msgid "Team does not exist."
msgstr ""
msgstr "Team existiert nicht."
#: events/templates/events/join_team.html:23
#: events/templates/events/join_team.html:24
msgid "Maximum size reached."
msgstr ""
msgstr "Maximale Mitgliederanzahl erreicht."
#: events/templates/events/manage_team.html:26
msgid "Team password"
msgstr ""
msgstr "Teampasswort"
#: events/templates/events/manage_team.html:29
msgid "Apply"
msgstr "Anwenden"
#: events/templates/events/manage_team.html:44
#: events/templates/events/team.html:49
msgid "Members"
msgstr ""
msgstr "Mitgliede"
#: events/templates/events/manage_team.html:51
#: events/templates/events/manage_team.html:52
msgid "Leave Team"
msgstr ""
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 ""
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 ""
msgstr "Top 5 der Woche"
#: home/templates/home/home.html:56
#: home/templates/home/home.html:48
msgid "No article available."
msgstr ""
msgstr "Kein Artikel verfügbar."
#: home/templates/home/home.html:61
#: home/templates/home/home.html:53
msgid "Latest challenges added"
msgstr ""
msgstr "Neue Herausforderungen"
#: home/templates/home/home.html:58
msgid "points"
msgstr "Punkte"
#: home/templates/home/home.html:62
msgid "No ctf available."
msgstr "Kein CTF verfügbar."
#: 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 "Letzte Flaggen"
#: home/templates/home/home.html:88
#: home/templates/home/home.html:80
msgid "Flags"
msgstr ""
msgstr "Flaggen"
#: home/templates/home/home.html:94
#: home/templates/home/home.html:86
msgid "Users"
msgstr ""
#: project/settings.py:115
msgid "English"
msgstr ""
msgstr "Nutzer"
#: project/settings.py:116
msgid "German"
msgstr ""
msgid "English"
msgstr "Englisch"
#: project/settings.py:117
msgid "French"
msgstr ""
msgid "German"
msgstr "Deutsch"
#: project/settings.py:118
msgid "French"
msgstr "Französisch"
#: project/settings.py:119
msgid "Russian"
msgstr "Russisch"
#: project/settings.py:120
msgid "Japanese"
msgstr ""
#: project/settings.py:121
msgid "Spanish"
msgstr ""
#: scoreboard/templates/scoreboard/scoreboard.html:38
msgid "First"
msgstr ""
msgstr "Erste"
#: scoreboard/templates/scoreboard/scoreboard.html:39
msgid "Previous"
msgstr ""
msgstr "Vorherige"
#: scoreboard/templates/scoreboard/scoreboard.html:43
msgid "Page "
msgstr ""
msgstr "Seite "
#: scoreboard/templates/scoreboard/scoreboard.html:47
msgid "Next"
msgstr ""
msgstr "Nächste"
#: scoreboard/templates/scoreboard/scoreboard.html:48
msgid "Last"
msgstr ""
msgstr "Letzte"
#: templates/base.html:59
msgid "Scoreboard"
msgstr ""
msgstr "Punktestand"
#: templates/base.html:66
#: templates/base.html:64
msgid "Resources"
msgstr ""
msgstr "Ressourcen"
#: templates/base.html:99
#: templates/base.html:93
msgid "Logout"
msgstr ""
msgstr "Abmelden"
#: templates/base.html:106
#: templates/base.html:100
msgid "Sign Up"
msgstr ""
msgstr "Registrieren"
#: templates/base.html:144
#: templates/base.html:135
msgid "Become a Patron!"
msgstr ""
msgstr "Unterstützen Sie uns!"
#: templates/registration/password_reset_complete.html:11
msgid "Your new password has been set."
msgstr ""
msgstr "Ihr neues Passwort wurde festgelegt."
#: templates/registration/password_reset_confirm.html:20
msgid "Your password cant be too similar to your other personal information."
msgstr ""
msgstr "Ihr Passwort kann nicht zu ähnlich zu ihren persönlichen Daten sein."
#: templates/registration/password_reset_confirm.html:21
msgid "Your password must contain at least 8 characters."
msgstr ""
msgstr "Ihr Passwort muss mindestens 8 Zeichen enthalten."
#: templates/registration/password_reset_confirm.html:22
msgid "Your password cant be a commonly used password."
msgstr ""
msgstr "Ihr Passwort kann nicht ein häufig benutztes Passwort sein."
#: templates/registration/password_reset_confirm.html:23
msgid "Your password cant be entirely numeric."
msgstr ""
msgstr "Ihr Passwort kann nicht nur Ziffern enthalten."
#: templates/registration/password_reset_confirm.html:26
msgid "Confirm"
msgstr ""
msgstr "Bestätigen"
#: templates/registration/password_reset_confirm.html:28
msgid "Submit"
msgstr ""
msgstr "Einreichen"
#: templates/registration/password_reset_done.html:11
msgid ""
"We've emailed you instructions for setting your password. You should receive "
"the email shortly!"
msgstr ""
"Wir haben Ihnen eine Anleitung um Ihren Passwort zurückzusetzen per Email "
"geschickt. Sie sollten sie in Kürze empfangen!"
#: templates/registration/password_reset_form.html:16
msgid "Reset"
msgstr ""
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"
#~ msgstr "Team verwalten"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-02 19:22+0100\n"
"POT-Creation-Date: 2022-03-13 18:04+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"
@ -41,16 +41,16 @@ msgstr ""
#: accounts/templates/accounts/delete.html:22
#: accounts/templates/accounts/login.html:19
#: accounts/templates/accounts/register.html:23
#: events/templates/events/create_team.html:26
#: events/templates/events/join_team.html:31
#: events/templates/events/create_team.html:27
#: events/templates/events/join_team.html:32
msgid "Password"
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,21 +61,32 @@ 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"
msgstr ""
#: accounts/templates/accounts/edit.html:36
#: events/templates/events/manage_team.html:29
msgid "Apply"
msgid " Apply"
msgstr ""
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/edit.html:45
msgid "Connected accounts"
msgstr ""
#: accounts/templates/accounts/edit.html:53
msgid "Disconnect Discord"
msgstr ""
#: accounts/templates/accounts/edit.html:59
msgid "Connect Discord"
msgstr ""
#: accounts/templates/accounts/edit.html:70
#: 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
@ -84,13 +95,13 @@ msgstr ""
msgid "Score"
msgstr ""
#: accounts/templates/accounts/edit.html:55
#: accounts/templates/accounts/edit.html:78
#: accounts/templates/accounts/profile.html:60
msgid "Registered since"
msgstr ""
#: accounts/templates/accounts/edit.html:61
msgid "Delete my account"
#: accounts/templates/accounts/edit.html:84
msgid " Delete my account"
msgstr ""
#: accounts/templates/accounts/login.html:13
@ -102,7 +113,7 @@ msgid "Reset password"
msgstr ""
#: accounts/templates/accounts/login.html:31
#: accounts/templates/accounts/register.html:38 templates/base.html:103
#: accounts/templates/accounts/register.html:38 templates/base.html:97
#: templates/registration/password_reset_complete.html:18
#: templates/registration/password_reset_confirm.html:38
#: templates/registration/password_reset_done.html:18
@ -139,8 +150,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 ""
@ -214,69 +225,63 @@ msgstr ""
msgid "Username already taken."
msgstr ""
#: accounts/views/views.py:105 events/views/teams.py:122
#: accounts/views/views.py:105 events/views/teams.py:124
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 ""
@ -296,60 +301,71 @@ msgstr ""
msgid "No category available."
msgstr ""
#: events/templates/events/create_team.html:9
#: events/templates/events/join_team.html:9
#: events/templates/events/create_team.html:10
#: events/templates/events/join_team.html:10
msgid "This event starts at"
msgstr ""
#: events/templates/events/create_team.html:16
#: events/templates/events/join_team.html:16
#: events/templates/events/create_team.html:17
#: events/templates/events/join_team.html:17
msgid "You need to be registered to the event."
msgstr ""
#: events/templates/events/create_team.html:19 events/views/teams.py:118
#: events/templates/events/create_team.html:20 events/views/teams.py:120
msgid "Name already taken."
msgstr ""
#: events/templates/events/create_team.html:25
#: events/templates/events/join_team.html:30
#: 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 ""
#: events/templates/events/create_team.html:27
#: events/templates/events/create_team.html:46
#: events/templates/events/join_team.html:52
#: 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 ""
#: events/templates/events/create_team.html:32
#: events/templates/events/create_team.html:33
#: events/templates/events/event_pwd.html:28
#: events/templates/events/join_team.html:37
#: events/templates/events/join_team.html:38
msgid "You need to be logged to access this event."
msgstr ""
#: events/templates/events/create_team.html:41
#: 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:46
#: events/templates/events/join_team.html:47
msgid "Starts at"
msgstr ""
#: events/templates/events/create_team.html:42
#: 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:47
#: events/templates/events/join_team.html:48
msgid "Ends at"
msgstr ""
#: events/templates/events/create_team.html:47
#: events/templates/events/join_team.html:32
#: events/templates/events/join_team.html:51
#: events/templates/events/event_info.html:129
#: events/templates/events/join_team.html:52
msgid "Manage my team"
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 ""
#: events/templates/events/create_team.html:54
#: events/templates/events/join_team.html:59
#: events/templates/events/create_team.html:53
#: events/templates/events/join_team.html:58
msgid "Auto-matching"
msgstr ""
#: events/templates/events/create_team.html:57
#: events/templates/events/join_team.html:62
msgid "Find me a team !"
msgstr ""
@ -357,30 +373,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
@ -412,12 +434,8 @@ msgstr ""
msgid "No one have earn point yet, you gonna be the first ?"
msgstr ""
#: events/templates/events/event_info.html:129
msgid "Manage my team"
msgstr ""
#: events/templates/events/event_pwd.html:15
#: events/templates/events/join_team.html:21
#: events/templates/events/join_team.html:22
msgid "Wrong password submited."
msgstr ""
@ -429,7 +447,7 @@ msgstr ""
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:63
#: events/templates/events/events_list.html:6 templates/base.html:61
msgid "Events"
msgstr ""
@ -441,11 +459,11 @@ msgstr ""
msgid "No events available."
msgstr ""
#: events/templates/events/join_team.html:19
#: events/templates/events/join_team.html:20
msgid "Team does not exist."
msgstr ""
#: events/templates/events/join_team.html:23
#: events/templates/events/join_team.html:24
msgid "Maximum size reached."
msgstr ""
@ -453,67 +471,87 @@ msgstr ""
msgid "Team password"
msgstr ""
#: events/templates/events/manage_team.html:29
msgid "Apply"
msgstr ""
#: events/templates/events/manage_team.html:44
#: events/templates/events/team.html:49
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 ""
#: project/settings.py:115
#: project/settings.py:116
msgid "English"
msgstr ""
#: project/settings.py:116
#: project/settings.py:117
msgid "German"
msgstr ""
#: project/settings.py:117
#: project/settings.py:118
msgid "French"
msgstr ""
#: project/settings.py:118
#: project/settings.py:119
msgid "Russian"
msgstr ""
#: project/settings.py:120
msgid "Japanese"
msgstr ""
#: project/settings.py:121
msgid "Spanish"
msgstr ""
#: scoreboard/templates/scoreboard/scoreboard.html:38
msgid "First"
msgstr ""
@ -538,19 +576,19 @@ msgstr ""
msgid "Scoreboard"
msgstr ""
#: templates/base.html:66
#: templates/base.html:64
msgid "Resources"
msgstr ""
#: templates/base.html:99
#: templates/base.html:93
msgid "Logout"
msgstr ""
#: templates/base.html:106
#: templates/base.html:100
msgid "Sign Up"
msgstr ""
#: templates/base.html:144
#: templates/base.html:135
msgid "Become a Patron!"
msgstr ""

View File

@ -8,11 +8,11 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-02 19:22+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"
"Language: \n"
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
"PO-Revision-Date: 2022-02-09 10:55+0100\n"
"Last-Translator: Javier Uhagón (uhagontorralvojavier@gmail.com)\n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -20,95 +20,112 @@ msgstr ""
#: accounts/templates/accounts/delete.html:8
msgid "Delete account"
msgstr ""
msgstr "Borrar cuenta"
#: accounts/templates/accounts/delete.html:11
msgid "Please confirm your password to delete your account."
msgstr ""
msgstr "Por favor confirme su contraseña para borrar su cuenta."
#: accounts/templates/accounts/delete.html:12
msgid "Deleted accounts cannot be recovered."
msgstr ""
msgstr "Las cuentas borradas no pueden ser recuperadas."
#: accounts/templates/accounts/delete.html:15
msgid "Password inccorect."
msgstr ""
msgstr "Contraseña incorrecta."
#: accounts/templates/accounts/delete.html:17
msgid "Your account has been deleted."
msgstr ""
msgstr "Su cuenta ha sido borrada."
#: accounts/templates/accounts/delete.html:22
#: accounts/templates/accounts/login.html:19
#: accounts/templates/accounts/register.html:23
#: events/templates/events/create_team.html:26
#: events/templates/events/join_team.html:31
#: events/templates/events/create_team.html:27
#: events/templates/events/join_team.html:32
msgid "Password"
msgstr ""
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"
msgstr ""
msgstr "Usuario"
#: accounts/templates/accounts/edit.html:25
msgid "Email"
msgstr ""
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"
msgstr ""
msgstr "Página Web"
#: accounts/templates/accounts/edit.html:36
#: events/templates/events/manage_team.html:29
msgid "Apply"
#, fuzzy
#| msgid "Apply"
msgid " Apply"
msgstr "Aplicar"
#: accounts/templates/accounts/edit.html:45
#, fuzzy
#| msgid "Delete account"
msgid "Connected accounts"
msgstr "Borrar cuenta"
#: accounts/templates/accounts/edit.html:53
msgid "Disconnect Discord"
msgstr ""
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/edit.html:59
msgid "Connect Discord"
msgstr ""
#: accounts/templates/accounts/edit.html:70
#: 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 "Puntuación"
#: accounts/templates/accounts/edit.html:55
#: accounts/templates/accounts/edit.html:78
#: accounts/templates/accounts/profile.html:60
msgid "Registered since"
msgstr ""
msgstr "Registrado desde"
#: accounts/templates/accounts/edit.html:61
msgid "Delete my account"
msgstr ""
#: accounts/templates/accounts/edit.html:84
#, fuzzy
#| msgid "Delete my account"
msgid " Delete my account"
msgstr "Borrar mi cuenta"
#: accounts/templates/accounts/login.html:13
msgid "Please, verify your infos."
msgstr ""
msgstr "Por favor, verifique su información."
#: accounts/templates/accounts/login.html:22
msgid "Reset password"
msgstr ""
msgstr "Cambiar contraseña"
#: accounts/templates/accounts/login.html:31
#: accounts/templates/accounts/register.html:38 templates/base.html:103
#: accounts/templates/accounts/register.html:38 templates/base.html:97
#: templates/registration/password_reset_complete.html:18
#: templates/registration/password_reset_confirm.html:38
#: templates/registration/password_reset_done.html:18
#: templates/registration/password_reset_form.html:26
msgid "Login"
msgstr ""
msgstr "Iniciar Sesión"
#: accounts/templates/accounts/login.html:32
#: accounts/templates/accounts/register.html:37
@ -117,37 +134,37 @@ msgstr ""
#: templates/registration/password_reset_done.html:19
#: templates/registration/password_reset_form.html:27
msgid "Sign up"
msgstr ""
msgstr "Registrarse"
#: accounts/templates/accounts/profile.html:10
msgid "Challenges Solved by"
msgstr ""
msgstr "Retos resueltos por"
#: accounts/templates/accounts/profile.html:21
#: events/templates/events/team.html:20
msgid "Challenge Name"
msgstr ""
msgstr "Nombre del reto"
#: accounts/templates/accounts/profile.html:22
#: events/templates/events/team.html:21
msgid "Category"
msgstr ""
msgstr "Categoría"
#: accounts/templates/accounts/profile.html:23
#: events/templates/events/team.html:22
msgid "Points"
msgstr ""
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 ""
msgstr "Fecha"
#: accounts/templates/accounts/profile.html:39
msgid "It seems that this user has not solved any challenge yet..."
msgstr ""
msgstr "Parece que este usuario no ha resuelto ningún reto aún..."
#: accounts/templates/accounts/profile.html:47
#: events/templates/events/event_info.html:63
@ -156,438 +173,482 @@ msgstr ""
#: events/templates/events/team.html:46
#: scoreboard/templates/scoreboard/scoreboard.html:12
msgid "Rank"
msgstr ""
msgstr "Rango"
#: accounts/templates/accounts/profile.html:56
msgid "Status: Member"
msgstr ""
msgstr "Estatus: Miembro"
#: accounts/templates/accounts/profile.html:58
msgid "Status: Visitor"
msgstr ""
msgstr "Estatus: Visitante"
#: accounts/templates/accounts/profile.html:64
#: events/templates/events/team.html:57
msgid "Categories stats"
msgstr ""
msgstr "Estádisticas de las categorías"
#: accounts/templates/accounts/register.html:13
msgid "Welcome !"
msgstr ""
msgstr "¡ Bienvenid@ !"
#: accounts/templates/accounts/register.html:14
msgid "Your account has been created."
msgstr ""
msgstr "Tu cuenta ha sido creada."
#: accounts/templates/accounts/register.html:25
msgid "Personal website"
msgstr ""
msgstr "Web personal"
#: accounts/templates/accounts/register.html:26
#: events/templates/events/event_info.html:119
msgid "Register"
msgstr ""
msgstr "Registrarse"
#: accounts/views/views.py:33
msgid "Your account was inactive."
msgstr ""
msgstr "Tu cuenta estaba inactiva."
#: accounts/views/views.py:52
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."
#: accounts/views/views.py:54
msgid "A user with that email already exists."
msgstr ""
msgstr "Ya existe un usuario con este email."
#: accounts/views/views.py:67
msgid "A user with that username already exists."
msgstr ""
msgstr "Ese nombre de usuario ya está en uso."
#: accounts/views/views.py:95
msgid "Email already taken."
msgstr ""
msgstr "Email ya usado."
#: accounts/views/views.py:101
msgid "Username already taken."
msgstr ""
msgstr "Nombre de usuario ya usado."
#: accounts/views/views.py:105 events/views/teams.py:122
#: accounts/views/views.py:105 events/views/teams.py:124
msgid "Updated."
msgstr ""
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 ""
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 ""
#: 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 "El reto aún no está disponible."
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:34
msgid "Already flagged"
msgstr ""
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr "¡ Felicidades !"
#: 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
msgid "Start the challenge"
msgstr ""
#: 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:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:44
#: events/templates/events/ctf_info.html:53
#: 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: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 "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 ""
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 ""
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 ""
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 ""
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 ""
msgstr "Recompensa de puntos"
#: ctfs/templates/ctfs/ctfs_list.html:14
msgid "Solved"
msgstr ""
msgstr "Resuelto"
#: ctfs/templates/ctfs/ctfs_list.html:37
msgid "No ctf available for this category."
msgstr ""
msgstr "No hay un ctf disponible para esta categoría."
#: ctfs/templates/ctfs/ctfs_list.html:42
msgid "Categories"
msgstr ""
msgstr "Categorías"
#: ctfs/templates/ctfs/ctfs_list.html:48 templates/base.html:54
msgid "No category available."
msgstr ""
msgstr "No hay categoría disponible."
#: events/templates/events/create_team.html:9
#: events/templates/events/join_team.html:9
#: events/templates/events/create_team.html:10
#: events/templates/events/join_team.html:10
msgid "This event starts at"
msgstr ""
msgstr "Este evento empieza"
#: events/templates/events/create_team.html:16
#: events/templates/events/join_team.html:16
#: 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 "Necesitas estar registrado al evento."
#: events/templates/events/create_team.html:19 events/views/teams.py:118
#: events/templates/events/create_team.html:20 events/views/teams.py:120
msgid "Name already taken."
msgstr ""
msgstr "Nombre ya elegido."
#: events/templates/events/create_team.html:25
#: events/templates/events/join_team.html:30
#: 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 "Nombre de equipo"
#: events/templates/events/create_team.html:27
#: events/templates/events/create_team.html:46
#: events/templates/events/join_team.html:52
#: 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 "Crear equipo"
#: events/templates/events/create_team.html:32
#: events/templates/events/create_team.html:33
#: events/templates/events/event_pwd.html:28
#: events/templates/events/join_team.html:37
#: events/templates/events/join_team.html:38
msgid "You need to be logged to access this event."
msgstr ""
#: events/templates/events/create_team.html:41
#: events/templates/events/event_info.html:113
#: events/templates/events/event_pwd.html:36
#: events/templates/events/join_team.html:46
msgid "Starts at"
msgstr ""
msgstr "Necesitas tener una sesión iniciada para acceder a este evento."
#: 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 "Empieza a las"
#: 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:47
#: events/templates/events/join_team.html:48
msgid "Ends at"
msgstr ""
msgstr "Acaba a las"
#: events/templates/events/create_team.html:47
#: events/templates/events/join_team.html:32
#: events/templates/events/join_team.html:51
msgid "Join Team"
msgstr ""
#: events/templates/events/event_info.html:129
#: events/templates/events/join_team.html:52
msgid "Manage my team"
msgstr "Gestionar mi equipo"
#: events/templates/events/create_team.html:54
#: events/templates/events/join_team.html:59
#: 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 "Unirse a un equipo"
#: events/templates/events/create_team.html:53
#: events/templates/events/join_team.html:58
msgid "Auto-matching"
msgstr "Auto-matching"
#: events/templates/events/create_team.html:57
#: events/templates/events/join_team.html:62
msgid "Find me a team !"
msgstr ""
msgstr "¡ Encuentrame un equipo !"
#: events/templates/events/ctf_info.html:10
msgid "Event"
msgstr ""
msgstr "Evento"
#: 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 ""
"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:18
msgid "This event is over."
msgstr "Este evento ya ha acabado."
#: 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: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 "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 ""
#: 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 "Ya estás registrado a este evento."
#: events/templates/events/event_info.html:20
#: events/templates/events/event_pwd.html:9
msgid "This event start at"
msgstr ""
msgstr "Este evento empieza"
#: events/templates/events/event_info.html:30
msgid "Challenges"
msgstr ""
msgstr "Retos"
#: events/templates/events/event_info.html:47
msgid "No challenges available."
msgstr ""
msgstr "No hay retos disponibles."
#: events/templates/events/event_info.html:51
msgid "The event has not started yet."
msgstr ""
msgstr "El evento no ha empezado aún."
#: events/templates/events/event_info.html:57
msgid "ScoreBoard"
msgstr ""
msgstr "Tabla de puntuaciones"
#: events/templates/events/event_info.html:88
msgid "Team"
msgstr ""
msgstr "Equipo"
#: events/templates/events/event_info.html:106
msgid "No one have earn point yet, you gonna be the first ?"
msgstr ""
#: events/templates/events/event_info.html:129
msgid "Manage my team"
msgstr ""
msgstr "Nadie ha conseguido puntos aún, ¿Vas a ser el primero?"
#: events/templates/events/event_pwd.html:15
#: events/templates/events/join_team.html:21
#: events/templates/events/join_team.html:22
msgid "Wrong password submited."
msgstr ""
msgstr "Contraseña incorrecta."
#: events/templates/events/event_pwd.html:20
msgid "This event is password protected"
msgstr ""
msgstr "Este evento está protegido con contraseña"
#: events/templates/events/event_pwd.html:21
msgid "You need to submit the event password to gain access to this event."
msgstr ""
msgstr "Necesitas introducir la contraseña del evento para participar."
#: events/templates/events/events_list.html:6 templates/base.html:63
#: events/templates/events/events_list.html:6 templates/base.html:61
msgid "Events"
msgstr ""
msgstr "Eventos"
#: events/templates/events/events_list.html:38
msgid "See more"
msgstr ""
msgstr "Ver más"
#: events/templates/events/events_list.html:44
msgid "No events available."
msgstr ""
msgstr "No hay eventos disponibles."
#: events/templates/events/join_team.html:19
#: events/templates/events/join_team.html:20
msgid "Team does not exist."
msgstr ""
msgstr "El equipo no existe."
#: events/templates/events/join_team.html:23
#: events/templates/events/join_team.html:24
msgid "Maximum size reached."
msgstr ""
msgstr "Tamaño máximo alcanzado."
#: events/templates/events/manage_team.html:26
msgid "Team password"
msgstr ""
msgstr "Contraseña del equipo"
#: events/templates/events/manage_team.html:29
msgid "Apply"
msgstr "Aplicar"
#: events/templates/events/manage_team.html:44
#: events/templates/events/team.html:49
msgid "Members"
msgstr ""
msgstr "Miembros"
#: events/templates/events/manage_team.html:51
#: events/templates/events/manage_team.html:52
msgid "Leave Team"
msgstr ""
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 ""
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 ""
msgstr "Top 5 semanal"
#: home/templates/home/home.html:56
#: home/templates/home/home.html:48
msgid "No article available."
msgstr ""
msgstr "Articulos no disponibles."
#: home/templates/home/home.html:61
#: home/templates/home/home.html:53
msgid "Latest challenges added"
msgstr ""
msgstr "Ultimos retos añadidos"
#: home/templates/home/home.html:58
msgid "points"
msgstr "puntos"
#: home/templates/home/home.html:62
msgid "No ctf available."
msgstr "ctf no disponible."
#: 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 "Ultimas Flags."
#: home/templates/home/home.html:88
#: home/templates/home/home.html:80
msgid "Flags"
msgstr ""
msgstr "Flags"
#: home/templates/home/home.html:94
#: home/templates/home/home.html:86
msgid "Users"
msgstr ""
#: project/settings.py:115
msgid "English"
msgstr ""
msgstr "Usuarios"
#: project/settings.py:116
msgid "German"
msgstr ""
msgid "English"
msgstr "Inglés"
#: project/settings.py:117
msgid "French"
msgstr ""
msgid "German"
msgstr "Alemán"
#: project/settings.py:118
msgid "French"
msgstr "Francés"
#: project/settings.py:119
msgid "Russian"
msgstr "Ruso"
#: project/settings.py:120
msgid "Japanese"
msgstr ""
#: project/settings.py:121
msgid "Spanish"
msgstr ""
#: scoreboard/templates/scoreboard/scoreboard.html:38
msgid "First"
msgstr ""
msgstr "Primero"
#: scoreboard/templates/scoreboard/scoreboard.html:39
msgid "Previous"
msgstr ""
msgstr "Anterior"
#: scoreboard/templates/scoreboard/scoreboard.html:43
msgid "Page "
msgstr ""
msgstr "Pagina "
#: scoreboard/templates/scoreboard/scoreboard.html:47
msgid "Next"
msgstr ""
msgstr "Siguiente"
#: scoreboard/templates/scoreboard/scoreboard.html:48
msgid "Last"
msgstr ""
msgstr "Último"
#: templates/base.html:59
msgid "Scoreboard"
msgstr ""
msgstr "Tabla de puntuaciones"
#: templates/base.html:66
#: templates/base.html:64
msgid "Resources"
msgstr ""
msgstr "Recursos"
#: templates/base.html:99
#: templates/base.html:93
msgid "Logout"
msgstr ""
msgstr "Cerrar sesión"
#: templates/base.html:106
#: templates/base.html:100
msgid "Sign Up"
msgstr ""
msgstr "Registrarse"
#: templates/base.html:144
#: templates/base.html:135
msgid "Become a Patron!"
msgstr ""
msgstr "¡Conviertete en un Mecenas!"
#: templates/registration/password_reset_complete.html:11
msgid "Your new password has been set."
msgstr ""
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."
#: templates/registration/password_reset_confirm.html:21
msgid "Your password must contain at least 8 characters."
msgstr ""
msgstr "Tu contraseña debe tener al menos 8 carácteres."
#: templates/registration/password_reset_confirm.html:22
msgid "Your password cant be a commonly used password."
msgstr ""
msgstr "Tu contraseña no puede ser una contraseña tan común."
#: templates/registration/password_reset_confirm.html:23
msgid "Your password cant be entirely numeric."
msgstr ""
msgstr "Tu contraseña no puede ser solo numérica."
#: templates/registration/password_reset_confirm.html:26
msgid "Confirm"
msgstr ""
msgstr "Confirmar"
#: templates/registration/password_reset_confirm.html:28
msgid "Submit"
msgstr ""
msgstr "Enviar"
#: templates/registration/password_reset_done.html:11
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!"
#: templates/registration/password_reset_form.html:16
msgid "Reset"
msgstr ""
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-02 19:22+0100\n"
"POT-Creation-Date: 2022-03-13 18:04+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"
@ -45,16 +45,16 @@ msgstr "Votre compte a été créé."
#: accounts/templates/accounts/delete.html:22
#: accounts/templates/accounts/login.html:19
#: accounts/templates/accounts/register.html:23
#: events/templates/events/create_team.html:26
#: events/templates/events/join_team.html:31
#: events/templates/events/create_team.html:27
#: events/templates/events/join_team.html:32
msgid "Password"
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,21 +65,36 @@ 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"
msgstr "Site internet"
#: accounts/templates/accounts/edit.html:36
#: events/templates/events/manage_team.html:29
msgid "Apply"
#, fuzzy
#| msgid "Apply"
msgid " Apply"
msgstr "Appliquer"
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/edit.html:45
#, fuzzy
#| msgid "Connected accounts"
msgid "Connected accounts"
msgstr "Comptes connectés"
#: accounts/templates/accounts/edit.html:53
msgid "Disconnect Discord"
msgstr "Déconnecter Discord"
#: accounts/templates/accounts/edit.html:59
msgid "Connect Discord"
msgstr "Connecter Discord"
#: accounts/templates/accounts/edit.html:70
#: 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
@ -88,15 +103,15 @@ msgstr "Appliquer"
msgid "Score"
msgstr "Score"
#: accounts/templates/accounts/edit.html:55
#: accounts/templates/accounts/edit.html:78
#: accounts/templates/accounts/profile.html:60
msgid "Registered since"
msgstr "Inscrit depuis"
#: accounts/templates/accounts/edit.html:61
#: accounts/templates/accounts/edit.html:84
#, fuzzy
#| msgid "Connected accounts"
msgid "Delete my account"
msgid " Delete my account"
msgstr "Comptes connectés"
#: accounts/templates/accounts/login.html:13
@ -108,7 +123,7 @@ msgid "Reset password"
msgstr "Réinitialiser le mot de passe"
#: accounts/templates/accounts/login.html:31
#: accounts/templates/accounts/register.html:38 templates/base.html:103
#: accounts/templates/accounts/register.html:38 templates/base.html:97
#: templates/registration/password_reset_complete.html:18
#: templates/registration/password_reset_confirm.html:38
#: templates/registration/password_reset_done.html:18
@ -145,8 +160,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"
@ -224,71 +239,65 @@ msgstr "L'adresse mail est déjà utilisée."
msgid "Username already taken."
msgstr "Le pseudo est déjà utilisé."
#: accounts/views/views.py:105 events/views/teams.py:122
#: accounts/views/views.py:105 events/views/teams.py:124
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"
@ -308,66 +317,77 @@ msgstr "Catégories"
msgid "No category available."
msgstr "Il n'y a pas de catégorie disponible."
#: events/templates/events/create_team.html:9
#: events/templates/events/join_team.html:9
#: events/templates/events/create_team.html:10
#: events/templates/events/join_team.html:10
#, fuzzy
#| msgid "This event start at"
msgid "This event starts at"
msgstr "Cet événement débute à"
#: events/templates/events/create_team.html:16
#: events/templates/events/join_team.html:16
#: events/templates/events/create_team.html:17
#: events/templates/events/join_team.html:17
#, fuzzy
#| msgid "You're already registered to this event."
msgid "You need to be registered to the event."
msgstr "Vous êtes déjà inscrit à cet événement."
#: events/templates/events/create_team.html:19 events/views/teams.py:118
#: events/templates/events/create_team.html:20 events/views/teams.py:120
#, fuzzy
#| msgid "Username already taken."
msgid "Name already taken."
msgstr "Ce nom est déjà utilisé."
#: events/templates/events/create_team.html:25
#: events/templates/events/join_team.html:30
#: 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 "Nom de l'équipe"
#: events/templates/events/create_team.html:27
#: events/templates/events/create_team.html:46
#: events/templates/events/join_team.html:52
#: 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 "Créer une équipe"
#: events/templates/events/create_team.html:32
#: events/templates/events/create_team.html:33
#: events/templates/events/event_pwd.html:28
#: events/templates/events/join_team.html:37
#: events/templates/events/join_team.html:38
msgid "You need to be logged to access this event."
msgstr "Vous devez être connecté pour accéder à cet événement."
#: events/templates/events/create_team.html:41
#: 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:46
#: events/templates/events/join_team.html:47
msgid "Starts at"
msgstr "Début"
#: events/templates/events/create_team.html:42
#: 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:47
#: events/templates/events/join_team.html:48
msgid "Ends at"
msgstr "Fin"
#: events/templates/events/create_team.html:47
#: events/templates/events/join_team.html:32
#: events/templates/events/join_team.html:51
#: events/templates/events/event_info.html:129
#: events/templates/events/join_team.html:52
msgid "Manage my team"
msgstr "Gérer mon équipe"
#: 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 "Rejoindre une équipe"
#: events/templates/events/create_team.html:54
#: events/templates/events/join_team.html:59
#: events/templates/events/create_team.html:53
#: events/templates/events/join_team.html:58
msgid "Auto-matching"
msgstr ""
#: events/templates/events/create_team.html:57
#: events/templates/events/join_team.html:62
msgid "Find me a team !"
msgstr ""
@ -375,33 +395,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
@ -438,12 +462,8 @@ msgstr "Équipe"
msgid "No one have earn point yet, you gonna be the first ?"
msgstr "Personne n'a encore gagné de point, allez-vous être le premier ?"
#: events/templates/events/event_info.html:129
msgid "Manage my team"
msgstr "Gérer mon équipe"
#: events/templates/events/event_pwd.html:15
#: events/templates/events/join_team.html:21
#: events/templates/events/join_team.html:22
msgid "Wrong password submited."
msgstr "Mauvais mot de passe saisi."
@ -455,7 +475,7 @@ msgstr "Cet événement est protégé par un mot de passe"
msgid "You need to submit the event password to gain access to this event."
msgstr "Vous devez saisir le mot de passe de l'événement pour y avoir accès."
#: events/templates/events/events_list.html:6 templates/base.html:63
#: events/templates/events/events_list.html:6 templates/base.html:61
msgid "Events"
msgstr "Événements"
@ -467,11 +487,11 @@ msgstr "Voir plus"
msgid "No events available."
msgstr "Pas d'évènement disponible."
#: events/templates/events/join_team.html:19
#: events/templates/events/join_team.html:20
msgid "Team does not exist."
msgstr "Cette équipe n'existe pas."
#: events/templates/events/join_team.html:23
#: events/templates/events/join_team.html:24
msgid "Maximum size reached."
msgstr "Taille maximale atteinte."
@ -479,71 +499,91 @@ msgstr "Taille maximale atteinte."
msgid "Team password"
msgstr "Mot de passe de l'équipe"
#: events/templates/events/manage_team.html:29
msgid "Apply"
msgstr "Appliquer"
#: events/templates/events/manage_team.html:44
#: events/templates/events/team.html:49
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"
msgstr "Pseudo"
#: project/settings.py:115
#: project/settings.py:116
msgid "English"
msgstr "Anglais"
#: project/settings.py:116
#: project/settings.py:117
msgid "German"
msgstr "Allemand"
#: project/settings.py:117
#: project/settings.py:118
msgid "French"
msgstr "Français"
#: project/settings.py:118
#: project/settings.py:119
msgid "Russian"
msgstr "Russe"
#: project/settings.py:120
msgid "Japanese"
msgstr ""
#: project/settings.py:121
msgid "Spanish"
msgstr ""
#: scoreboard/templates/scoreboard/scoreboard.html:38
msgid "First"
msgstr "Début"
@ -568,19 +608,19 @@ msgstr "Fin"
msgid "Scoreboard"
msgstr "Classement"
#: templates/base.html:66
#: templates/base.html:64
msgid "Resources"
msgstr ""
#: templates/base.html:99
#: templates/base.html:93
msgid "Logout"
msgstr "Déconnexion"
#: templates/base.html:106
#: templates/base.html:100
msgid "Sign Up"
msgstr "Inscription"
#: templates/base.html:144
#: templates/base.html:135
msgid "Become a Patron!"
msgstr "Soutenez nous via Patreon !"
@ -624,14 +664,20 @@ 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"
#~ msgstr "Gérer mon équipe"
#~ msgid "Start at"
#~ msgstr "Début"
#~ msgid "End at"
#~ msgstr "Fin"
#~ msgid "Disconnect Discord"
#~ msgstr "Déconnecter Discord"
#~ msgid "Connect Discord"
#~ msgstr "Connecter Discord"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-02 19:22+0100\n"
"POT-Creation-Date: 2022-03-13 18:04+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"
@ -41,16 +41,16 @@ msgstr ""
#: accounts/templates/accounts/delete.html:22
#: accounts/templates/accounts/login.html:19
#: accounts/templates/accounts/register.html:23
#: events/templates/events/create_team.html:26
#: events/templates/events/join_team.html:31
#: events/templates/events/create_team.html:27
#: events/templates/events/join_team.html:32
msgid "Password"
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,21 +61,32 @@ 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"
msgstr ""
#: accounts/templates/accounts/edit.html:36
#: events/templates/events/manage_team.html:29
msgid "Apply"
msgid " Apply"
msgstr ""
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/edit.html:45
msgid "Connected accounts"
msgstr ""
#: accounts/templates/accounts/edit.html:53
msgid "Disconnect Discord"
msgstr ""
#: accounts/templates/accounts/edit.html:59
msgid "Connect Discord"
msgstr ""
#: accounts/templates/accounts/edit.html:70
#: 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
@ -84,13 +95,13 @@ msgstr ""
msgid "Score"
msgstr ""
#: accounts/templates/accounts/edit.html:55
#: accounts/templates/accounts/edit.html:78
#: accounts/templates/accounts/profile.html:60
msgid "Registered since"
msgstr ""
#: accounts/templates/accounts/edit.html:61
msgid "Delete my account"
#: accounts/templates/accounts/edit.html:84
msgid " Delete my account"
msgstr ""
#: accounts/templates/accounts/login.html:13
@ -102,7 +113,7 @@ msgid "Reset password"
msgstr ""
#: accounts/templates/accounts/login.html:31
#: accounts/templates/accounts/register.html:38 templates/base.html:103
#: accounts/templates/accounts/register.html:38 templates/base.html:97
#: templates/registration/password_reset_complete.html:18
#: templates/registration/password_reset_confirm.html:38
#: templates/registration/password_reset_done.html:18
@ -139,8 +150,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 ""
@ -214,69 +225,63 @@ msgstr ""
msgid "Username already taken."
msgstr ""
#: accounts/views/views.py:105 events/views/teams.py:122
#: accounts/views/views.py:105 events/views/teams.py:124
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 ""
@ -296,60 +301,71 @@ msgstr ""
msgid "No category available."
msgstr ""
#: events/templates/events/create_team.html:9
#: events/templates/events/join_team.html:9
#: events/templates/events/create_team.html:10
#: events/templates/events/join_team.html:10
msgid "This event starts at"
msgstr ""
#: events/templates/events/create_team.html:16
#: events/templates/events/join_team.html:16
#: events/templates/events/create_team.html:17
#: events/templates/events/join_team.html:17
msgid "You need to be registered to the event."
msgstr ""
#: events/templates/events/create_team.html:19 events/views/teams.py:118
#: events/templates/events/create_team.html:20 events/views/teams.py:120
msgid "Name already taken."
msgstr ""
#: events/templates/events/create_team.html:25
#: events/templates/events/join_team.html:30
#: 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 ""
#: events/templates/events/create_team.html:27
#: events/templates/events/create_team.html:46
#: events/templates/events/join_team.html:52
#: 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 ""
#: events/templates/events/create_team.html:32
#: events/templates/events/create_team.html:33
#: events/templates/events/event_pwd.html:28
#: events/templates/events/join_team.html:37
#: events/templates/events/join_team.html:38
msgid "You need to be logged to access this event."
msgstr ""
#: events/templates/events/create_team.html:41
#: 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:46
#: events/templates/events/join_team.html:47
msgid "Starts at"
msgstr ""
#: events/templates/events/create_team.html:42
#: 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:47
#: events/templates/events/join_team.html:48
msgid "Ends at"
msgstr ""
#: events/templates/events/create_team.html:47
#: events/templates/events/join_team.html:32
#: events/templates/events/join_team.html:51
#: events/templates/events/event_info.html:129
#: events/templates/events/join_team.html:52
msgid "Manage my team"
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 ""
#: events/templates/events/create_team.html:54
#: events/templates/events/join_team.html:59
#: events/templates/events/create_team.html:53
#: events/templates/events/join_team.html:58
msgid "Auto-matching"
msgstr ""
#: events/templates/events/create_team.html:57
#: events/templates/events/join_team.html:62
msgid "Find me a team !"
msgstr ""
@ -357,30 +373,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
@ -412,12 +434,8 @@ msgstr ""
msgid "No one have earn point yet, you gonna be the first ?"
msgstr ""
#: events/templates/events/event_info.html:129
msgid "Manage my team"
msgstr ""
#: events/templates/events/event_pwd.html:15
#: events/templates/events/join_team.html:21
#: events/templates/events/join_team.html:22
msgid "Wrong password submited."
msgstr ""
@ -429,7 +447,7 @@ msgstr ""
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:63
#: events/templates/events/events_list.html:6 templates/base.html:61
msgid "Events"
msgstr ""
@ -441,11 +459,11 @@ msgstr ""
msgid "No events available."
msgstr ""
#: events/templates/events/join_team.html:19
#: events/templates/events/join_team.html:20
msgid "Team does not exist."
msgstr ""
#: events/templates/events/join_team.html:23
#: events/templates/events/join_team.html:24
msgid "Maximum size reached."
msgstr ""
@ -453,67 +471,87 @@ msgstr ""
msgid "Team password"
msgstr ""
#: events/templates/events/manage_team.html:29
msgid "Apply"
msgstr ""
#: events/templates/events/manage_team.html:44
#: events/templates/events/team.html:49
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 ""
#: project/settings.py:115
#: project/settings.py:116
msgid "English"
msgstr ""
#: project/settings.py:116
#: project/settings.py:117
msgid "German"
msgstr ""
#: project/settings.py:117
#: project/settings.py:118
msgid "French"
msgstr ""
#: project/settings.py:118
#: project/settings.py:119
msgid "Russian"
msgstr ""
#: project/settings.py:120
msgid "Japanese"
msgstr ""
#: project/settings.py:121
msgid "Spanish"
msgstr ""
#: scoreboard/templates/scoreboard/scoreboard.html:38
msgid "First"
msgstr ""
@ -538,19 +576,19 @@ msgstr ""
msgid "Scoreboard"
msgstr ""
#: templates/base.html:66
#: templates/base.html:64
msgid "Resources"
msgstr ""
#: templates/base.html:99
#: templates/base.html:93
msgid "Logout"
msgstr ""
#: templates/base.html:106
#: templates/base.html:100
msgid "Sign Up"
msgstr ""
#: templates/base.html:144
#: templates/base.html:135
msgid "Become a Patron!"
msgstr ""

View File

@ -0,0 +1,644 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-13 18:04+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"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: accounts/templates/accounts/delete.html:8
msgid "Delete account"
msgstr "アカウント削除"
#: accounts/templates/accounts/delete.html:11
msgid "Please confirm your password to delete your account."
msgstr "アカウントを削除するには、パスワードを入力してください。"
#: accounts/templates/accounts/delete.html:12
msgid "Deleted accounts cannot be recovered."
msgstr "削除されたアカウントは復元できません。"
#: accounts/templates/accounts/delete.html:15
msgid "Password inccorect."
msgstr "パスワードが正しくありません。"
#: accounts/templates/accounts/delete.html:17
msgid "Your account has been deleted."
msgstr "あなたのアカウントは削除されました。"
#: accounts/templates/accounts/delete.html:22
#: accounts/templates/accounts/login.html:19
#: accounts/templates/accounts/register.html:23
#: events/templates/events/create_team.html:27
#: events/templates/events/join_team.html:32
msgid "Password"
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: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 "ユーザー名"
#: accounts/templates/accounts/edit.html:25
msgid "Email"
msgstr "Eメール"
#: accounts/templates/accounts/edit.html:30
#: 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 "ウェブサイト"
#: accounts/templates/accounts/edit.html:36
#, fuzzy
#| msgid "Apply"
msgid " Apply"
msgstr "適用する"
#: accounts/templates/accounts/edit.html:45
#, fuzzy
#| msgid "Delete account"
msgid "Connected accounts"
msgstr "アカウント削除"
#: accounts/templates/accounts/edit.html:53
msgid "Disconnect Discord"
msgstr ""
#: accounts/templates/accounts/edit.html:59
msgid "Connect Discord"
msgstr ""
#: accounts/templates/accounts/edit.html:70
#: accounts/templates/accounts/profile.html:46
#: 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 "スコア"
#: accounts/templates/accounts/edit.html:78
#: accounts/templates/accounts/profile.html:60
msgid "Registered since"
msgstr "登録日"
#: accounts/templates/accounts/edit.html:84
#, fuzzy
#| msgid "Delete my account"
msgid " Delete my account"
msgstr "アカウント削除"
#: accounts/templates/accounts/login.html:13
msgid "Please, verify your infos."
msgstr "あなたの情報を確認してください。"
#: accounts/templates/accounts/login.html:22
msgid "Reset password"
msgstr "パスワード再設定"
#: accounts/templates/accounts/login.html:31
#: accounts/templates/accounts/register.html:38 templates/base.html:97
#: templates/registration/password_reset_complete.html:18
#: templates/registration/password_reset_confirm.html:38
#: templates/registration/password_reset_done.html:18
#: templates/registration/password_reset_form.html:26
msgid "Login"
msgstr "ログイン"
#: accounts/templates/accounts/login.html:32
#: accounts/templates/accounts/register.html:37
#: templates/registration/password_reset_complete.html:19
#: templates/registration/password_reset_confirm.html:39
#: templates/registration/password_reset_done.html:19
#: templates/registration/password_reset_form.html:27
msgid "Sign up"
msgstr "サインアップ"
#: accounts/templates/accounts/profile.html:10
msgid "Challenges Solved by"
msgstr "解いた課題"
#: accounts/templates/accounts/profile.html:21
#: events/templates/events/team.html:20
msgid "Challenge Name"
msgstr "課題名"
#: accounts/templates/accounts/profile.html:22
#: events/templates/events/team.html:21
msgid "Category"
msgstr "カテゴリー"
#: accounts/templates/accounts/profile.html:23
#: events/templates/events/team.html:22
msgid "Points"
msgstr "ポイント"
#: accounts/templates/accounts/profile.html:24
#: ctfs/templates/ctfs/ctf_info.html:66
#: events/templates/events/ctf_info.html:67
#: events/templates/events/team.html:23
msgid "Date"
msgstr "日付"
#: accounts/templates/accounts/profile.html:39
msgid "It seems that this user has not solved any challenge yet..."
msgstr "まだ何も課題を解いていないようです..."
#: accounts/templates/accounts/profile.html:47
#: events/templates/events/event_info.html:63
#: events/templates/events/event_info.html:87
#: events/templates/events/manage_team.html:41
#: events/templates/events/team.html:46
#: scoreboard/templates/scoreboard/scoreboard.html:12
msgid "Rank"
msgstr "ラング"
#: accounts/templates/accounts/profile.html:56
msgid "Status: Member"
msgstr "ステータス: メンバー"
#: accounts/templates/accounts/profile.html:58
msgid "Status: Visitor"
msgstr "ステータス: 訪問者"
#: accounts/templates/accounts/profile.html:64
#: events/templates/events/team.html:57
msgid "Categories stats"
msgstr "カテゴリー別の統計"
#: accounts/templates/accounts/register.html:13
msgid "Welcome !"
msgstr "ようこそ!"
#: accounts/templates/accounts/register.html:14
msgid "Your account has been created."
msgstr "アカウントが作成されました。"
#: accounts/templates/accounts/register.html:25
msgid "Personal website"
msgstr "個人サイト"
#: accounts/templates/accounts/register.html:26
#: events/templates/events/event_info.html:119
msgid "Register"
msgstr "登録"
#: accounts/views/views.py:33
msgid "Your account was inactive."
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 "そのEメールを持つユーザーがすでに存在しています。"
#: accounts/views/views.py:67
msgid "A user with that username already exists."
msgstr "そのユーザー名はすでに存在しています。"
#: accounts/views/views.py:95
msgid "Email already taken."
msgstr "Eメールはすでに受信済みです。"
#: accounts/views/views.py:101
msgid "Username already taken."
msgstr "ユーザー名はすでに使用されています。"
#: accounts/views/views.py:105 events/views/teams.py:124
msgid "Updated."
msgstr "更新しました。"
#: ctfs/templates/ctfs/ctf_info.html:12
#: events/templates/events/ctf_info.html:12
msgid "Published date"
msgstr "掲載日"
#: ctfs/templates/ctfs/ctf_info.html:16
msgid "Challenge is not yet available."
msgstr "課題はまだ利用できません。"
#: ctfs/templates/ctfs/ctf_info.html:29
#: 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 "すでにフラグが立っています"
#: 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: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:39
#: events/templates/events/ctf_info.html:42
msgid "Wrong flag ! You can do it !"
msgstr "フラグが違います!あなたならできる!"
#: ctfs/templates/ctfs/ctf_info.html:58
#: events/templates/events/ctf_info.html:60
msgid "Solved by"
msgstr "解答者"
#: 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:89
#: events/templates/events/ctf_info.html:97
msgid "Author"
msgstr "作成者"
#: ctfs/templates/ctfs/ctf_info.html:90
#: events/templates/events/ctf_info.html:98
msgid "Point reward"
msgstr "獲得ポイント"
#: ctfs/templates/ctfs/ctfs_list.html:14
msgid "Solved"
msgstr "解決済み"
#: ctfs/templates/ctfs/ctfs_list.html:37
msgid "No ctf available for this category."
msgstr "このカテゴリーにはCTFがありません。"
#: ctfs/templates/ctfs/ctfs_list.html:42
msgid "Categories"
msgstr "カテゴリー"
#: ctfs/templates/ctfs/ctfs_list.html:48 templates/base.html:54
msgid "No category available."
msgstr "該当するカテゴリーはありません。"
#: events/templates/events/create_team.html:10
#: events/templates/events/join_team.html:10
msgid "This event starts at"
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 "このイベントに登録する必要があります。"
#: events/templates/events/create_team.html:20 events/views/teams.py:120
msgid "Name already taken."
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 "チーム名"
#: 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 "チーム作成"
#: 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 "このイベントにアクセスするには、ログインする必要があります。"
#: 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 "開始日"
#: 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 "終了日"
#: 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 "自分のチームを管理する"
#: 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 "チームに参加する"
#: events/templates/events/create_team.html:53
#: events/templates/events/join_team.html:58
msgid "Auto-matching"
msgstr "自動マッチング"
#: events/templates/events/create_team.html:57
#: events/templates/events/join_team.html:62
msgid "Find me a team !"
msgstr "チームを見つけよう!"
#: events/templates/events/ctf_info.html:10
msgid "Event"
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/event_info.html:20
#: events/templates/events/event_pwd.html:9
msgid "This event start at"
msgstr "このイベントの開始時間"
#: events/templates/events/event_info.html:30
msgid "Challenges"
msgstr "課題"
#: events/templates/events/event_info.html:47
msgid "No challenges available."
msgstr "チャレンジできません。"
#: events/templates/events/event_info.html:51
msgid "The event has not started yet."
msgstr "イベントはまだ始まっていません。"
#: events/templates/events/event_info.html:57
msgid "ScoreBoard"
msgstr "スコアボード"
#: events/templates/events/event_info.html:88
msgid "Team"
msgstr "チーム"
#: events/templates/events/event_info.html:106
msgid "No one have earn point yet, you gonna be the first ?"
msgstr "まだ誰もポイントを獲得していませんが、あなたが最初に獲得しますか?"
#: events/templates/events/event_pwd.html:15
#: events/templates/events/join_team.html:22
msgid "Wrong password submited."
msgstr "パスワードが違います。"
#: events/templates/events/event_pwd.html:20
msgid "This event is password protected"
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 "イベント"
#: events/templates/events/events_list.html:38
msgid "See more"
msgstr "もっと見る"
#: events/templates/events/events_list.html:44
msgid "No events available."
msgstr "該当するイベントはありません。"
#: events/templates/events/join_team.html:20
msgid "Team does not exist."
msgstr "チームが存在しません。"
#: events/templates/events/join_team.html:24
msgid "Maximum size reached."
msgstr "最大サイズに達しました。"
#: events/templates/events/manage_team.html:26
msgid "Team password"
msgstr "チームのパスワード"
#: events/templates/events/manage_team.html:29
msgid "Apply"
msgstr "適用する"
#: events/templates/events/manage_team.html:44
#: events/templates/events/team.html:49
msgid "Members"
msgstr "メンバー"
#: 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:21
msgid "Weekly Top 5"
msgstr "週間トップ5"
#: home/templates/home/home.html:48
msgid "No article available."
msgstr "記事はありません。"
#: home/templates/home/home.html:53
msgid "Latest challenges added"
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 "Latest Flags"
msgstr "最新のフラグ"
#: home/templates/home/home.html:80
msgid "Flags"
msgstr "フラグ"
#: home/templates/home/home.html:86
msgid "Users"
msgstr "ユーザー"
#: project/settings.py:116
msgid "English"
msgstr "英語"
#: project/settings.py:117
msgid "German"
msgstr "ドイツ語"
#: project/settings.py:118
msgid "French"
msgstr "フランス語"
#: project/settings.py:119
msgid "Russian"
msgstr "ロシア語"
#: project/settings.py:120
msgid "Japanese"
msgstr "日本語"
#: project/settings.py:121
msgid "Spanish"
msgstr "スペイン語"
#: scoreboard/templates/scoreboard/scoreboard.html:38
msgid "First"
msgstr "最初"
#: scoreboard/templates/scoreboard/scoreboard.html:39
msgid "Previous"
msgstr "前"
#: scoreboard/templates/scoreboard/scoreboard.html:43
msgid "Page "
msgstr "ページ"
#: scoreboard/templates/scoreboard/scoreboard.html:47
msgid "Next"
msgstr "次"
#: scoreboard/templates/scoreboard/scoreboard.html:48
msgid "Last"
msgstr "最後"
#: templates/base.html:59
msgid "Scoreboard"
msgstr "スコアボード"
#: templates/base.html:64
msgid "Resources"
msgstr "リソース"
#: templates/base.html:93
msgid "Logout"
msgstr "ログアウト"
#: templates/base.html:100
msgid "Sign Up"
msgstr "サインアップ"
#: templates/base.html:135
msgid "Become a Patron!"
msgstr "支援者になる!"
#: templates/registration/password_reset_complete.html:11
msgid "Your new password has been set."
msgstr "新しいパスワードが設定されました。"
#: templates/registration/password_reset_confirm.html:20
msgid "Your password cant be too similar to your other personal information."
msgstr "パスワードは、自身の個人情報と似すぎていてはいけません。"
#: templates/registration/password_reset_confirm.html:21
msgid "Your password must contain at least 8 characters."
msgstr "パスワードには8文字以上が必要です。"
#: templates/registration/password_reset_confirm.html:22
msgid "Your password cant be a commonly used password."
msgstr "パスワードは、一般的に使われているものを使用しないでください。"
#: templates/registration/password_reset_confirm.html:23
msgid "Your password cant be entirely numeric."
msgstr "パスワードはすべて数字にはできません。"
#: templates/registration/password_reset_confirm.html:26
msgid "Confirm"
msgstr "確認"
#: templates/registration/password_reset_confirm.html:28
msgid "Submit"
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 "リセット"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-02 19:22+0100\n"
"POT-Creation-Date: 2022-03-13 18:04+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"
@ -43,16 +43,16 @@ msgstr ""
#: accounts/templates/accounts/delete.html:22
#: accounts/templates/accounts/login.html:19
#: accounts/templates/accounts/register.html:23
#: events/templates/events/create_team.html:26
#: events/templates/events/join_team.html:31
#: events/templates/events/create_team.html:27
#: events/templates/events/join_team.html:32
msgid "Password"
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,21 +63,32 @@ 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"
msgstr ""
#: accounts/templates/accounts/edit.html:36
#: events/templates/events/manage_team.html:29
msgid "Apply"
msgid " Apply"
msgstr ""
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/edit.html:45
msgid "Connected accounts"
msgstr ""
#: accounts/templates/accounts/edit.html:53
msgid "Disconnect Discord"
msgstr ""
#: accounts/templates/accounts/edit.html:59
msgid "Connect Discord"
msgstr ""
#: accounts/templates/accounts/edit.html:70
#: 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
@ -86,13 +97,13 @@ msgstr ""
msgid "Score"
msgstr "счет"
#: accounts/templates/accounts/edit.html:55
#: accounts/templates/accounts/edit.html:78
#: accounts/templates/accounts/profile.html:60
msgid "Registered since"
msgstr ""
#: accounts/templates/accounts/edit.html:61
msgid "Delete my account"
#: accounts/templates/accounts/edit.html:84
msgid " Delete my account"
msgstr ""
#: accounts/templates/accounts/login.html:13
@ -104,7 +115,7 @@ msgid "Reset password"
msgstr ""
#: accounts/templates/accounts/login.html:31
#: accounts/templates/accounts/register.html:38 templates/base.html:103
#: accounts/templates/accounts/register.html:38 templates/base.html:97
#: templates/registration/password_reset_complete.html:18
#: templates/registration/password_reset_confirm.html:38
#: templates/registration/password_reset_done.html:18
@ -141,8 +152,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 ""
@ -216,71 +227,65 @@ msgstr ""
msgid "Username already taken."
msgstr ""
#: accounts/views/views.py:105 events/views/teams.py:122
#: accounts/views/views.py:105 events/views/teams.py:124
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 ""
@ -300,60 +305,71 @@ msgstr ""
msgid "No category available."
msgstr ""
#: events/templates/events/create_team.html:9
#: events/templates/events/join_team.html:9
#: events/templates/events/create_team.html:10
#: events/templates/events/join_team.html:10
msgid "This event starts at"
msgstr ""
#: events/templates/events/create_team.html:16
#: events/templates/events/join_team.html:16
#: events/templates/events/create_team.html:17
#: events/templates/events/join_team.html:17
msgid "You need to be registered to the event."
msgstr ""
#: events/templates/events/create_team.html:19 events/views/teams.py:118
#: events/templates/events/create_team.html:20 events/views/teams.py:120
msgid "Name already taken."
msgstr ""
#: events/templates/events/create_team.html:25
#: events/templates/events/join_team.html:30
#: 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 ""
#: events/templates/events/create_team.html:27
#: events/templates/events/create_team.html:46
#: events/templates/events/join_team.html:52
#: 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 ""
#: events/templates/events/create_team.html:32
#: events/templates/events/create_team.html:33
#: events/templates/events/event_pwd.html:28
#: events/templates/events/join_team.html:37
#: events/templates/events/join_team.html:38
msgid "You need to be logged to access this event."
msgstr ""
#: events/templates/events/create_team.html:41
#: 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:46
#: events/templates/events/join_team.html:47
msgid "Starts at"
msgstr ""
#: events/templates/events/create_team.html:42
#: 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:47
#: events/templates/events/join_team.html:48
msgid "Ends at"
msgstr ""
#: events/templates/events/create_team.html:47
#: events/templates/events/join_team.html:32
#: events/templates/events/join_team.html:51
#: events/templates/events/event_info.html:129
#: events/templates/events/join_team.html:52
msgid "Manage my team"
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 ""
#: events/templates/events/create_team.html:54
#: events/templates/events/join_team.html:59
#: events/templates/events/create_team.html:53
#: events/templates/events/join_team.html:58
msgid "Auto-matching"
msgstr ""
#: events/templates/events/create_team.html:57
#: events/templates/events/join_team.html:62
msgid "Find me a team !"
msgstr ""
@ -361,30 +377,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
@ -420,12 +442,8 @@ msgstr ""
msgid "No one have earn point yet, you gonna be the first ?"
msgstr ""
#: events/templates/events/event_info.html:129
msgid "Manage my team"
msgstr ""
#: events/templates/events/event_pwd.html:15
#: events/templates/events/join_team.html:21
#: events/templates/events/join_team.html:22
msgid "Wrong password submited."
msgstr ""
@ -437,7 +455,7 @@ msgstr ""
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:63
#: events/templates/events/events_list.html:6 templates/base.html:61
msgid "Events"
msgstr ""
@ -451,11 +469,11 @@ msgstr ""
msgid "No events available."
msgstr "Нет доступных статей."
#: events/templates/events/join_team.html:19
#: events/templates/events/join_team.html:20
msgid "Team does not exist."
msgstr ""
#: events/templates/events/join_team.html:23
#: events/templates/events/join_team.html:24
msgid "Maximum size reached."
msgstr ""
@ -463,67 +481,87 @@ msgstr ""
msgid "Team password"
msgstr ""
#: events/templates/events/manage_team.html:29
msgid "Apply"
msgstr ""
#: events/templates/events/manage_team.html:44
#: events/templates/events/team.html:49
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 ""
#: project/settings.py:115
#: project/settings.py:116
msgid "English"
msgstr ""
#: project/settings.py:116
#: project/settings.py:117
msgid "German"
msgstr ""
#: project/settings.py:117
#: project/settings.py:118
msgid "French"
msgstr ""
#: project/settings.py:118
#: project/settings.py:119
msgid "Russian"
msgstr ""
#: project/settings.py:120
msgid "Japanese"
msgstr ""
#: project/settings.py:121
msgid "Spanish"
msgstr ""
#: scoreboard/templates/scoreboard/scoreboard.html:38
msgid "First"
msgstr ""
@ -548,19 +586,19 @@ msgstr ""
msgid "Scoreboard"
msgstr ""
#: templates/base.html:66
#: templates/base.html:64
msgid "Resources"
msgstr ""
#: templates/base.html:99
#: templates/base.html:93
msgid "Logout"
msgstr "Выйти"
#: templates/base.html:106
#: templates/base.html:100
msgid "Sign Up"
msgstr ""
#: templates/base.html:144
#: templates/base.html:135
msgid "Become a Patron!"
msgstr ""

View File

@ -38,6 +38,7 @@ INSTALLED_APPS = [
'scoreboard.apps.ScoreboardConfig',
'resources.apps.ResourcesConfig',
'django.contrib.sites',
'api.apps.ApiConfig',
]
MIDDLEWARE = [
@ -116,6 +117,8 @@ LANGUAGES = (
('de', _('German')),
('fr', _('French')),
('ru', _('Russian')),
('ja', _('Japanese')),
('es', _("Spanish")),
)
LOCALE_PATHS = (

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

@ -3,315 +3,373 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-02 19:22+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"
"Language: \n"
"POT-Creation-Date: 2022-03-13 18:04+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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: resources/templates/resources/42ctf.html:9
#: resources/templates/resources/resources.html:12
#: resources/templates/resources/42ctf.html:7
msgid "What is 42CTF ?"
msgstr ""
msgstr "Was ist 42CTF?"
#: resources/templates/resources/42ctf.html:12
#: resources/templates/resources/42ctf.html:10
msgid "A short introduction to CTF"
msgstr ""
msgstr "Eine kurze Einführung zu CTF"
#: resources/templates/resources/42ctf.html:13
#: resources/templates/resources/42ctf.html:11
msgid ""
"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."
msgstr ""
"CTF steht für Capture The Flag. Es ist ein Computersicherheitswettbewerb, "
"indem Teilnehmer Herausforderungen verschiedener Kategorien lösen müssen um "
"die meisten Punkte zu verdienen."
#: resources/templates/resources/42ctf.html:14
msgid "The challenges require participants to find sort of passwords called \\"
#: resources/templates/resources/42ctf.html:12
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 "
"\\"
#: resources/templates/resources/42ctf.html:15
msgid "Functionment of 42CTF"
msgstr "Funktionsweise von 42CTF"
#: resources/templates/resources/42ctf.html:16
msgid "42CTF is what we call a permanent CTF."
msgstr "42CTF ist ein sogenanntes Dauer-CTF."
#: resources/templates/resources/42ctf.html:17
msgid "Functionment of 42CTF"
msgstr ""
msgid "Except from the"
msgstr "Außer bei"
#: resources/templates/resources/42ctf.html:17
msgid "events"
msgstr "Ereignissen"
#: resources/templates/resources/42ctf.html:17
msgid "challenges are available on the platform without time limitations."
msgstr "sind Herausforderungen auf der Plattform unbegrenzt zugänglich."
#: resources/templates/resources/42ctf.html:18
msgid "42CTF is what we call a permanent CTF."
msgstr ""
#: resources/templates/resources/42ctf.html:19
msgid "Except from the"
msgstr ""
#: resources/templates/resources/42ctf.html:19
msgid "events"
msgstr ""
#: resources/templates/resources/42ctf.html:19
msgid "challenges are available on the platform without time limitations."
msgstr ""
#: resources/templates/resources/42ctf.html:20
msgid "The registration on 42CTF is open to everyone, 42 students or not."
msgstr ""
"Die Registrierung bei 42CTF ist für jeden offen, ob 42-Student oder nicht."
#: resources/templates/resources/42ctf.html:21
#: 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 ""
"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
msgid "42CTF Team"
msgstr "das 42CTF Team"
#: resources/templates/resources/42ctf.html:23
msgid "42CTF is managed by 42 students."
msgstr "42CTF wird von 42-Studenten verwaltet."
#: resources/templates/resources/42ctf.html:24
msgid "42CTF Team"
msgstr ""
msgid "You can meet the team on"
msgstr "Treffen können Sie das Team auf"
#: resources/templates/resources/42ctf.html:25
msgid "42CTF is managed by 42 students."
msgstr ""
#: resources/templates/resources/42ctf.html:26
msgid "You can meet the team on"
msgstr ""
#: resources/templates/resources/42ctf.html:27
msgid ""
"Challenges are created by various contributors, not necessarily 42 students."
msgstr ""
"Herausforderungen werden von verschiedenen Mitwirkende beigetragen, nicht "
"zwingend 42-Studenten."
#: resources/templates/resources/42ctf.html:28
#: 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 ""
"Beiträge sind von jedem willkommen, entweder auf dem Dauer-CTF, oder für ein "
"bestimmtes Ereignis."
#: resources/templates/resources/create_challenge.html:9
#: resources/templates/resources/resources.html:28
#: resources/templates/resources/create_challenge.html:7
msgid "Create new challenges"
msgstr ""
msgstr "Erstelle neue Herausforderungen"
#: resources/templates/resources/create_challenge.html:12
#: resources/templates/resources/create_challenge.html:10
msgid "If you want to create new challenges for 42CTF, send us a message on "
msgstr ""
"Falls Sie Herausforderungen für 42CTF erstellen möchten, schicken Sie uns "
"eine Nachricht auf "
#: resources/templates/resources/create_challenge.html:13
#: resources/templates/resources/create_challenge.html:11
msgid "If your challenge is offline, then you don't have to ask us in advance."
msgstr ""
"Falls Ihre Herausforderung offline ist, müssen Sie uns nicht im voraus "
"fragen."
#: resources/templates/resources/create_challenge.html:14
#: 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 ""
"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:15
#: resources/templates/resources/create_challenge.html:13
msgid ""
"We may be able to help you or to give you resources such as dockerfiles."
msgstr ""
"Wir können Ihnen helfen oder Ressourcen sowie Dockerfiles zur Verfügung "
"stellen."
#: resources/templates/resources/create_challenge.html:16
#: resources/templates/resources/create_challenge.html:14
msgid "We plan to make those resources publicly available in a near future."
msgstr ""
msgstr "Wir haben vor diese Ressourcen in naher Zukunft zu veröffentlichen."
#: resources/templates/resources/donate.html:9
#: resources/templates/resources/resources.html:31
#: resources/templates/resources/donate.html:7
msgid "Donate"
msgstr ""
msgstr "Spenden"
#: resources/templates/resources/donate.html:12
#: resources/templates/resources/donate.html:10
msgid "Become a 42CTF member"
msgstr ""
msgstr "42CTF-Mitglied werden"
#: resources/templates/resources/donate.html:13
#: resources/templates/resources/donate.html:11
msgid ""
"42CTF is a non-profit organization with a legal status under the french law "
"(Association loi 1901)."
msgstr ""
"42CTF ist eine gemeinnützige Organisation mit einem Rechtsstatus nach "
"französischem Recht (Association loi 1901)."
#: resources/templates/resources/donate.html:14
#: resources/templates/resources/donate.html:12
msgid "You can support us by becoming a member and paying a fee of 15 euros."
msgstr ""
"Sie können uns unterstützen indem Sie Mitglied werden und 15 Euro zahlen."
#: resources/templates/resources/donate.html:13
msgid "Membership is then granted for 1 year."
msgstr "Die Mitgliedschaft wird dann ein Jahr lang gewährt."
#: resources/templates/resources/donate.html:15
msgid "Membership is then granted for 1 year."
msgstr ""
#: resources/templates/resources/donate.html:17
msgid "When you become a member, you gain the following advantages:"
msgstr ""
msgstr "Wenn Sie Mitglied werden, bekommen Sie folgende Vorteile:"
#: resources/templates/resources/donate.html:18
#: resources/templates/resources/donate.html:16
msgid ""
"A different color for your pseudo in the scoreboard, to let everyone know "
"you're a member."
msgstr ""
"Eine verschiedene Farbe für Ihren Nutzernamen im Punktestand, sodass jeder "
"weiß dass Sie ein Mitglied sind."
#: resources/templates/resources/donate.html:19
#: resources/templates/resources/donate.html:17
msgid ""
"The possibility to play again past CTF, with challenges no longer available, "
"in the form of private events with the people of your choice."
msgstr ""
"Die Möglichkeit einen vergangenen CTF zu wiederholen, mit Herausforderungen "
"die nicht mehr verfügbar sind, in Form von privaten Ereignissen mit Menschen "
"Ihrer Wahl."
#: resources/templates/resources/donate.html:20
#: resources/templates/resources/donate.html:18
msgid ""
"Ex: you played Welcome CTF 2021, and want to play it again with your friends "
"during one weekend."
msgstr ""
"Z.B.: Sie haben am Welcome CTF 2021 teilgenommen, und wollen es mit Ihren "
"Freunden an einem Wochenende wiederholen."
#: resources/templates/resources/donate.html:21
#: resources/templates/resources/donate.html:19
msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
msgstr ""
"Oder Sie haben nicht am Welcome CTF 2021 teilgenommen weil Sie nicht dazu "
"berechtigt waren."
#: resources/templates/resources/donate.html:24
#: resources/templates/resources/donate.html:22
msgid "More advantages may come later, and you can submit us your ideas."
msgstr ""
"Weitere Vorteile können später folgen, und Sie können uns Ihre Ideen "
"mitteilen."
#: resources/templates/resources/donate.html:25
#: resources/templates/resources/donate.html:23
msgid ""
"However, we will not organize limited time CTF for members only, as this "
"will be equivalent to organize paid events, and we want 42CTF to remain FREE "
"for all."
msgstr ""
"Trotzdem werden wir keine zeitlich begrenzte CTFs nur für Mitglieder "
"organisieren, da diese Zahlungspflichtige Ereignissen gleichen, und wir "
"42CTF KOSTENLOS für alle zugänglich behalten wollen."
#: resources/templates/resources/donate.html:28
#: resources/templates/resources/donate.html:26
msgid "Donate to 42CTF"
msgstr ""
msgstr "An 42CTF spenden"
#: resources/templates/resources/donate.html:29
#: resources/templates/resources/donate.html:27
msgid ""
"You can donate to 42CTF or pay your membership with the following means:"
msgstr ""
"Folgende Zahlungsmethoden sind für eine Spende an 42CTF oder den Kauf einer "
"Mitgliedshaft verfügbar:"
#: resources/templates/resources/donate.html:43
#: resources/templates/resources/donate.html:44
msgid ""
"If you would like us to add another payment method or if you want to pay in "
"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!"
#: resources/templates/resources/donate.html:45
#: resources/templates/resources/donate.html:46
msgid ""
"If you're paying for your membership, don't forget to send us your first and "
"last name, as well as your 42CTF pseudo."
msgstr ""
"Falls Sie für eine Mitgliedschaft zahlen, vergessen Sie nicht uns Ihren vor "
"und Nachnamen, sowie Ihren 42CTF Nutzernamen mitzuteilen."
#: resources/templates/resources/donate.html:46
#: resources/templates/resources/donate.html:47
msgid ""
"We will only use thoe data to keep track of our members and grant you "
"advantages, and we will never communicate them to any third party."
msgstr ""
"Wir verwenden diese Daten nur um den Überblick über unsere Mitglieder zu "
"Behalten und ihnen Vorteile zu bieten, und werden Sie niemals an einem "
"Dritten übermitteln."
#: resources/templates/resources/edit.html:9
#: resources/templates/resources/resources.html:30
msgid "Edit this page"
#: resources/templates/resources/donate.html:50
msgid "What will we do with your money ?"
msgstr ""
#: resources/templates/resources/donate.html:51
msgid ""
"Hosting a website - and especially a CTF platform - costs money:\n"
" more precisely, it costs us <b>50 euros per month</b>.<br>\n"
" If we had <b>40 members</b> each year, it would be enough to "
"cover the hosting of 42CTF.<br>\n"
" With the additional money, we could for example offer prizes "
"for limited-time events, but we will update this page as soon as we reach "
"this threshold :)"
msgstr ""
#: resources/templates/resources/edit.html:7
msgid "Edit this page"
msgstr "Diese Seite bearbeiten"
#: 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 ""
"Weitere Information wird folgen, doch sowie Sie es erraten können benötigt "
"es eine Pull Request auf Ihrer lieblings"
#: resources/templates/resources/resources.html:10
msgid "Getting started"
msgstr ""
#: resources/templates/resources/resources.html:13
#: resources/templates/resources/tools.html:9
#: resources/templates/resources/tools.html:7
msgid "Recommended Tools"
msgstr ""
msgstr "Empfohlene Werkzeuge"
#: resources/templates/resources/resources.html:20
msgid "Technical documentation"
msgstr ""
#: resources/templates/resources/resources.html:21
msgid "No docs available, contact us if you want to write some :)"
msgstr ""
#: resources/templates/resources/resources.html:26
msgid "Contribute"
msgstr ""
#: resources/templates/resources/resources.html:29
#: resources/templates/resources/translate.html:9
msgid "Translate 42CTF"
msgstr ""
#: resources/templates/resources/tools.html:12
#: resources/templates/resources/tools.html:10
msgid "To get you started, we built a VM that you can simply import in"
msgstr ""
msgstr "Zum beginnen haben wir eine VM erstellt die Sie einfach auf"
#: resources/templates/resources/tools.html:12
#: resources/templates/resources/tools.html:10
msgid "with a bunch of useful tools."
msgstr ""
msgstr "importieren können, mit vielen nützlichen Werkzeugen."
#: resources/templates/resources/tools.html:13
#: resources/templates/resources/tools.html:11
msgid "You can dowload this OVA"
msgstr ""
msgstr "Herunterladen können Sie die OVA"
#: resources/templates/resources/tools.html:11
msgid "here"
msgstr "Hier"
#: resources/templates/resources/tools.html:13
msgid "here"
msgstr ""
#: resources/templates/resources/tools.html:15
msgid "Here are the tools installed on the VM:"
msgstr ""
msgstr "Folgende Werkzeuge sind auf der VM vorinstalliert:"
#: resources/templates/resources/tools.html:24
#: 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 ""
"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:25
#: 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 ""
"Die meisten Reverse-Engineering Herausforderungen sind ELF-Binärdateien und "
"können auf macOS oder Windows nicht ausgeführt werden."
#: resources/templates/resources/tools.html:27
#: resources/templates/resources/tools.html:25
msgid "Additionnaly, you will need the following languages interpreters:"
msgstr ""
msgstr "Zusätzlich, werden Sie folgende Skript-Interpreter benötigen:"
#: resources/templates/resources/translate.html:12
#: resources/templates/resources/translate.html:7
msgid "Translate 42CTF"
msgstr "42CTF Übersetzen"
#: resources/templates/resources/translate.html:10
msgid "42CTF source code is publicly available on this"
msgstr ""
msgstr "42CTF's Quellcode ist öffentlich zugänglich auf"
#: resources/templates/resources/translate.html:13
#: resources/templates/resources/translate.html:11
msgid ""
"Translation does not require any programming skill and is a good way to "
"contribute if you want to help us, by making the platform always more "
"accessible."
msgstr ""
"Übersetzung benötigt keine Programmierkenntnisse und ist ein gute "
"Möglichkeit beizutragen wenn Sie uns helfen möchten, indem Sie diese "
"Plattform immer zugänglicher machen."
#: resources/templates/resources/translate.html:14
#: resources/templates/resources/translate.html:12
msgid "We have a"
msgstr ""
msgstr "Wir haben einen"
#: resources/templates/resources/translate.html:14
# FIXME: internalization -> internationalization
#: resources/templates/resources/translate.html:12
msgid ""
"describing how to translate pages with the Django internalization module."
msgstr ""
"indem beschrieben wird wie man mit dem Django Internationalisierungsmodul "
"Seiten übersetzt."
#: resources/templates/resources/translate.html:15
#: 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 ""
"Wir laden Sie dazu ein es zu lesen um alle Einzelheiten zur Kenntnis zu "
"nehmen, doch schrecken Sie sich nicht ab, es ist nichts mehr als "
"Textverarbeitung, keine Programmierkenntnisse sind benötigt ;)"
#: resources/templates/resources/translate.html:16
#: resources/templates/resources/translate.html:14
msgid ""
"You will need to fork the git repository, make your changes, push them, and "
"then open a pull request so that we can merge your contributions into our "
"repository."
msgstr ""
"Sie müssen das git Repository forken, Ihre Änderungen tätigen, pushen, und "
"eine Pull Request eröffnen, sodass wir Ihre Beiträge in unsere Repository "
"mergen können."
#: resources/templates/resources/translate.html:17
#: resources/templates/resources/translate.html:15
msgid "Don't hesitate to reach for help on"
msgstr ""
msgstr "Zögern Sie nicht, nach Hilfe zu bitten auf"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-02 19:22+0100\n"
"POT-Creation-Date: 2022-03-13 18:04+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"
@ -18,196 +18,209 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: resources/templates/resources/42ctf.html:9
#: resources/templates/resources/resources.html:12
#: resources/templates/resources/42ctf.html:7
msgid "What is 42CTF ?"
msgstr ""
#: resources/templates/resources/42ctf.html:12
#: resources/templates/resources/42ctf.html:10
msgid "A short introduction to CTF"
msgstr ""
#: resources/templates/resources/42ctf.html:13
#: resources/templates/resources/42ctf.html:11
msgid ""
"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."
msgstr ""
#: resources/templates/resources/42ctf.html:14
msgid "The challenges require participants to find sort of passwords called \\"
#: resources/templates/resources/42ctf.html:12
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:17
#: resources/templates/resources/42ctf.html:15
msgid "Functionment of 42CTF"
msgstr ""
#: resources/templates/resources/42ctf.html:18
#: resources/templates/resources/42ctf.html:16
msgid "42CTF is what we call a permanent CTF."
msgstr ""
#: resources/templates/resources/42ctf.html:19
#: resources/templates/resources/42ctf.html:17
msgid "Except from the"
msgstr ""
#: resources/templates/resources/42ctf.html:19
#: resources/templates/resources/42ctf.html:17
msgid "events"
msgstr ""
#: resources/templates/resources/42ctf.html:19
#: resources/templates/resources/42ctf.html:17
msgid "challenges are available on the platform without time limitations."
msgstr ""
#: resources/templates/resources/42ctf.html:20
#: resources/templates/resources/42ctf.html:18
msgid "The registration on 42CTF is open to everyone, 42 students or not."
msgstr ""
#: resources/templates/resources/42ctf.html:21
#: 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 ""
#: resources/templates/resources/42ctf.html:24
#: resources/templates/resources/42ctf.html:22
msgid "42CTF Team"
msgstr ""
#: resources/templates/resources/42ctf.html:25
#: resources/templates/resources/42ctf.html:23
msgid "42CTF is managed by 42 students."
msgstr ""
#: resources/templates/resources/42ctf.html:26
#: resources/templates/resources/42ctf.html:24
msgid "You can meet the team on"
msgstr ""
#: resources/templates/resources/42ctf.html:27
#: resources/templates/resources/42ctf.html:25
msgid ""
"Challenges are created by various contributors, not necessarily 42 students."
msgstr ""
#: resources/templates/resources/42ctf.html:28
#: 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 ""
#: resources/templates/resources/create_challenge.html:9
#: resources/templates/resources/resources.html:28
#: resources/templates/resources/create_challenge.html:7
msgid "Create new challenges"
msgstr ""
#: resources/templates/resources/create_challenge.html:12
#: resources/templates/resources/create_challenge.html:10
msgid "If you want to create new challenges for 42CTF, send us a message on "
msgstr ""
#: resources/templates/resources/create_challenge.html:13
#: resources/templates/resources/create_challenge.html:11
msgid "If your challenge is offline, then you don't have to ask us in advance."
msgstr ""
#: resources/templates/resources/create_challenge.html:14
#: 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 ""
#: resources/templates/resources/create_challenge.html:15
#: resources/templates/resources/create_challenge.html:13
msgid ""
"We may be able to help you or to give you resources such as dockerfiles."
msgstr ""
#: resources/templates/resources/create_challenge.html:16
#: resources/templates/resources/create_challenge.html:14
msgid "We plan to make those resources publicly available in a near future."
msgstr ""
#: resources/templates/resources/donate.html:9
#: resources/templates/resources/resources.html:31
#: resources/templates/resources/donate.html:7
msgid "Donate"
msgstr ""
#: resources/templates/resources/donate.html:12
#: resources/templates/resources/donate.html:10
msgid "Become a 42CTF member"
msgstr ""
#: resources/templates/resources/donate.html:13
#: resources/templates/resources/donate.html:11
msgid ""
"42CTF is a non-profit organization with a legal status under the french law "
"(Association loi 1901)."
msgstr ""
#: resources/templates/resources/donate.html:14
#: resources/templates/resources/donate.html:12
msgid "You can support us by becoming a member and paying a fee of 15 euros."
msgstr ""
#: resources/templates/resources/donate.html:15
#: resources/templates/resources/donate.html:13
msgid "Membership is then granted for 1 year."
msgstr ""
#: resources/templates/resources/donate.html:17
#: resources/templates/resources/donate.html:15
msgid "When you become a member, you gain the following advantages:"
msgstr ""
#: resources/templates/resources/donate.html:18
#: 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:19
#: resources/templates/resources/donate.html:17
msgid ""
"The possibility to play again past CTF, with challenges no longer available, "
"in the form of private events with the people of your choice."
msgstr ""
#: resources/templates/resources/donate.html:20
#: resources/templates/resources/donate.html:18
msgid ""
"Ex: you played Welcome CTF 2021, and want to play it again with your friends "
"during one weekend."
msgstr ""
#: resources/templates/resources/donate.html:21
#: resources/templates/resources/donate.html:19
msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
msgstr ""
#: resources/templates/resources/donate.html:24
#: 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:25
#: resources/templates/resources/donate.html:23
msgid ""
"However, we will not organize limited time CTF for members only, as this "
"will be equivalent to organize paid events, and we want 42CTF to remain FREE "
"for all."
msgstr ""
#: resources/templates/resources/donate.html:28
#: resources/templates/resources/donate.html:26
msgid "Donate to 42CTF"
msgstr ""
#: resources/templates/resources/donate.html:29
#: resources/templates/resources/donate.html:27
msgid ""
"You can donate to 42CTF or pay your membership with the following means:"
msgstr ""
#: resources/templates/resources/donate.html:43
#: resources/templates/resources/donate.html:44
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:45
#: resources/templates/resources/donate.html:46
msgid ""
"If you're paying for your membership, don't forget to send us your first and "
"last name, as well as your 42CTF pseudo."
msgstr ""
#: resources/templates/resources/donate.html:46
#: resources/templates/resources/donate.html:47
msgid ""
"We will only use thoe data to keep track of our members and grant you "
"advantages, and we will never communicate them to any third party."
msgstr ""
#: resources/templates/resources/edit.html:9
#: resources/templates/resources/resources.html:30
#: resources/templates/resources/donate.html:50
msgid "What will we do with your money ?"
msgstr ""
#: resources/templates/resources/donate.html:51
msgid ""
"Hosting a website - and especially a CTF platform - costs money:\n"
" more precisely, it costs us <b>50 euros per month</b>.<br>\n"
" If we had <b>40 members</b> each year, it would be enough to "
"cover the hosting of 42CTF.<br>\n"
" With the additional money, we could for example offer prizes "
"for limited-time events, but we will update this page as soon as we reach "
"this threshold :)"
msgstr ""
#: resources/templates/resources/edit.html:7
msgid "Edit this page"
msgstr ""
@ -217,101 +230,83 @@ msgid ""
"request to your favorite"
msgstr ""
#: resources/templates/resources/resources.html:10
msgid "Getting started"
msgstr ""
#: resources/templates/resources/resources.html:13
#: resources/templates/resources/tools.html:9
#: resources/templates/resources/tools.html:7
msgid "Recommended Tools"
msgstr ""
#: resources/templates/resources/resources.html:20
msgid "Technical documentation"
msgstr ""
#: resources/templates/resources/resources.html:21
msgid "No docs available, contact us if you want to write some :)"
msgstr ""
#: resources/templates/resources/resources.html:26
msgid "Contribute"
msgstr ""
#: resources/templates/resources/resources.html:29
#: resources/templates/resources/translate.html:9
msgid "Translate 42CTF"
msgstr ""
#: resources/templates/resources/tools.html:12
#: resources/templates/resources/tools.html:10
msgid "To get you started, we built a VM that you can simply import in"
msgstr ""
#: resources/templates/resources/tools.html:12
#: resources/templates/resources/tools.html:10
msgid "with a bunch of useful tools."
msgstr ""
#: resources/templates/resources/tools.html:13
#: resources/templates/resources/tools.html:11
msgid "You can dowload this OVA"
msgstr ""
#: resources/templates/resources/tools.html:13
#: resources/templates/resources/tools.html:11
msgid "here"
msgstr ""
#: resources/templates/resources/tools.html:15
#: resources/templates/resources/tools.html:13
msgid "Here are the tools installed on the VM:"
msgstr ""
#: resources/templates/resources/tools.html:24
#: 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 ""
#: resources/templates/resources/tools.html:25
#: 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 ""
#: resources/templates/resources/tools.html:27
#: resources/templates/resources/tools.html:25
msgid "Additionnaly, you will need the following languages interpreters:"
msgstr ""
#: resources/templates/resources/translate.html:12
#: resources/templates/resources/translate.html:7
msgid "Translate 42CTF"
msgstr ""
#: resources/templates/resources/translate.html:10
msgid "42CTF source code is publicly available on this"
msgstr ""
#: resources/templates/resources/translate.html:13
#: resources/templates/resources/translate.html:11
msgid ""
"Translation does not require any programming skill and is a good way to "
"contribute if you want to help us, by making the platform always more "
"accessible."
msgstr ""
#: resources/templates/resources/translate.html:14
#: resources/templates/resources/translate.html:12
msgid "We have a"
msgstr ""
#: resources/templates/resources/translate.html:14
#: resources/templates/resources/translate.html:12
msgid ""
"describing how to translate pages with the Django internalization module."
msgstr ""
#: resources/templates/resources/translate.html:15
#: 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:16
#: resources/templates/resources/translate.html:14
msgid ""
"You will need to fork the git repository, make your changes, push them, and "
"then open a pull request so that we can merge your contributions into our "
"repository."
msgstr ""
#: resources/templates/resources/translate.html:17
#: resources/templates/resources/translate.html:15
msgid "Don't hesitate to reach for help on"
msgstr ""

View File

@ -8,310 +8,358 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-02 19:22+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"
"Language: \n"
"POT-Creation-Date: 2022-03-13 18:04+0100\n"
"PO-Revision-Date: 2022-02-09 10:55+0100\n"
"Last-Translator: Javier Uhagón (uhagontorralvojavier@gmail.com)\n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: resources/templates/resources/42ctf.html:9
#: resources/templates/resources/resources.html:12
#: resources/templates/resources/42ctf.html:7
msgid "What is 42CTF ?"
msgstr ""
msgstr "¿ Qué es 42CTF ?"
#: resources/templates/resources/42ctf.html:12
#: resources/templates/resources/42ctf.html:10
msgid "A short introduction to CTF"
msgstr ""
msgstr "Una corta introducción a CTF"
#: resources/templates/resources/42ctf.html:13
#: resources/templates/resources/42ctf.html:11
msgid ""
"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."
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."
#: resources/templates/resources/42ctf.html:14
msgid "The challenges require participants to find sort of passwords called \\"
#: resources/templates/resources/42ctf.html:12
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"
msgstr "Funcionamiento de 42CTF"
#: resources/templates/resources/42ctf.html:16
msgid "42CTF is what we call a permanent CTF."
msgstr "42CTF es lo que llamamos un CTF permanente."
#: resources/templates/resources/42ctf.html:17
msgid "Functionment of 42CTF"
msgstr ""
msgid "Except from the"
msgstr "A excepción de"
#: resources/templates/resources/42ctf.html:17
msgid "events"
msgstr "eventos"
#: resources/templates/resources/42ctf.html:17
msgid "challenges are available on the platform without time limitations."
msgstr "los retos están disponibles en la plataforma sin limites de tiempo."
#: resources/templates/resources/42ctf.html:18
msgid "42CTF is what we call a permanent CTF."
msgstr ""
#: resources/templates/resources/42ctf.html:19
msgid "Except from the"
msgstr ""
#: resources/templates/resources/42ctf.html:19
msgid "events"
msgstr ""
#: resources/templates/resources/42ctf.html:19
msgid "challenges are available on the platform without time limitations."
msgstr ""
#: resources/templates/resources/42ctf.html:20
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."
#: resources/templates/resources/42ctf.html:21
#: 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 ""
"Los eventos pueden o no estar abiertos. Si quieres organizar un evento en "
"42CTF, sientete libre de contactarnos."
#: resources/templates/resources/42ctf.html:22
msgid "42CTF Team"
msgstr "Equipo de 42CTF"
#: resources/templates/resources/42ctf.html:23
msgid "42CTF is managed by 42 students."
msgstr "42CTF está gestionado por estudiantes de 42."
#: resources/templates/resources/42ctf.html:24
msgid "42CTF Team"
msgstr ""
msgid "You can meet the team on"
msgstr "Puedes conocer al equipo en"
#: resources/templates/resources/42ctf.html:25
msgid "42CTF is managed by 42 students."
msgstr ""
#: resources/templates/resources/42ctf.html:26
msgid "You can meet the team on"
msgstr ""
#: resources/templates/resources/42ctf.html:27
msgid ""
"Challenges are created by various contributors, not necessarily 42 students."
msgstr ""
"Los retos son creados por varios contribuidores, no necesariamente "
"estudiantes de 42."
#: resources/templates/resources/42ctf.html:28
#: 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."
#: resources/templates/resources/create_challenge.html:9
#: resources/templates/resources/resources.html:28
#: resources/templates/resources/create_challenge.html:7
msgid "Create new challenges"
msgstr ""
msgstr "Crear retos nuevos"
#: resources/templates/resources/create_challenge.html:10
msgid "If you want to create new challenges for 42CTF, send us a message on "
msgstr "Si quieres crear nuevos retos para 42CTF, mandanos un mensaje en "
#: 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 tu reto es offline, no nos tienes que avisar por adelantado."
#: resources/templates/resources/create_challenge.html:12
msgid "If you want to create new challenges for 42CTF, send us a message on "
msgstr ""
#: resources/templates/resources/create_challenge.html:13
msgid "If your challenge is offline, then you don't have to ask us in advance."
msgstr ""
#: resources/templates/resources/create_challenge.html:14
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."
#: resources/templates/resources/create_challenge.html:15
#: resources/templates/resources/create_challenge.html:13
msgid ""
"We may be able to help you or to give you resources such as dockerfiles."
msgstr ""
msgstr "Podemos ser de ayuda o darte recursos como dockerfiles."
#: resources/templates/resources/create_challenge.html:16
#: resources/templates/resources/create_challenge.html:14
msgid "We plan to make those resources publicly available in a near future."
msgstr ""
msgstr "Planeamos publicar estos recursos al publico en un futuro cercano."
#: resources/templates/resources/donate.html:9
#: resources/templates/resources/resources.html:31
#: resources/templates/resources/donate.html:7
msgid "Donate"
msgstr ""
msgstr "Donar"
#: resources/templates/resources/donate.html:12
#: resources/templates/resources/donate.html:10
msgid "Become a 42CTF member"
msgstr ""
msgstr "Convertirse en un miembro de 42CTF"
#: resources/templates/resources/donate.html:13
#: resources/templates/resources/donate.html:11
msgid ""
"42CTF is a non-profit organization with a legal status under the french law "
"(Association loi 1901)."
msgstr ""
"42CTF es una organización sin ánimo de lucro bajo un estatus legal bajo la "
"ley francesa (loi de asociación 1901)."
#: resources/templates/resources/donate.html:14
#: resources/templates/resources/donate.html:12
msgid "You can support us by becoming a member and paying a fee of 15 euros."
msgstr ""
"Puedes apoyarnos convirtiendote en un miebro y pagandonos una comisión de 15 "
"euros."
#: resources/templates/resources/donate.html:13
msgid "Membership is then granted for 1 year."
msgstr "La membresia dura 1 año."
#: resources/templates/resources/donate.html:15
msgid "Membership is then granted for 1 year."
msgstr ""
#: resources/templates/resources/donate.html:17
msgid "When you become a member, you gain the following advantages:"
msgstr ""
msgstr "Cuando te conviertes en un miembro, ganas las siguientes ventajas:"
#: resources/templates/resources/donate.html:18
#: resources/templates/resources/donate.html:16
msgid ""
"A different color for your pseudo in the scoreboard, to let everyone know "
"you're a member."
msgstr ""
"Un color diferente para tu pseudo en la tabla de puntuaciones para que todo "
"el mundo sepa que eres un miembro."
#: resources/templates/resources/donate.html:19
#: resources/templates/resources/donate.html:17
msgid ""
"The possibility to play again past CTF, with challenges no longer available, "
"in the form of private events with the people of your choice."
msgstr ""
"La posibilidad e jugar un CTF del pasado, con retos que ya no están "
"disponibles, crear eventos privados con gente de tu elección."
#: resources/templates/resources/donate.html:20
#: resources/templates/resources/donate.html:18
msgid ""
"Ex: you played Welcome CTF 2021, and want to play it again with your friends "
"during one weekend."
msgstr ""
"Ejemplo: Si jugaste CTF 2021, y quieres volverlo a jugar con tus amigos "
"durante un fin de semana."
#: resources/templates/resources/donate.html:21
#: resources/templates/resources/donate.html:19
msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
msgstr ""
msgstr "O no jugaste el Welcome CTF 2021 porque no estabas disponible."
#: resources/templates/resources/donate.html:24
#: resources/templates/resources/donate.html:22
msgid "More advantages may come later, and you can submit us your ideas."
msgstr ""
msgstr "Más ideas llegarán pronto, y puedes enviarnos ideas."
#: resources/templates/resources/donate.html:25
#: resources/templates/resources/donate.html:23
msgid ""
"However, we will not organize limited time CTF for members only, as this "
"will be equivalent to organize paid events, and we want 42CTF to remain FREE "
"for all."
msgstr ""
"Sin embargo, no organizaremos CTF de tiempo limitado para miembros, ya que "
"esto sería equivalente a organizar eventos de pago, y queremos mantener "
"42CTF GRATIS para todos."
#: resources/templates/resources/donate.html:28
#: resources/templates/resources/donate.html:26
msgid "Donate to 42CTF"
msgstr ""
msgstr "Dona a 42CTF"
#: resources/templates/resources/donate.html:29
#: resources/templates/resources/donate.html:27
msgid ""
"You can donate to 42CTF or pay your membership with the following means:"
msgstr ""
"Puedes donar a 42CTF o pagar tu membresía con los siguientes métodos de pago:"
#: resources/templates/resources/donate.html:43
#: resources/templates/resources/donate.html:44
msgid ""
"If you would like us to add another payment method or if you want to pay in "
"cash, send us a message !"
msgstr ""
"Si quieres que añadamos otro metodo de pago o quieres pagarnos en efectivo "
"¡Mandanos un mensaje!"
#: resources/templates/resources/donate.html:45
#: resources/templates/resources/donate.html:46
msgid ""
"If you're paying for your membership, don't forget to send us your first and "
"last name, as well as your 42CTF pseudo."
msgstr ""
"Si estás pagando por tu membresía, no olvides mandarnos tu nombre y "
"apellido, también tu nombre de usuario en 42CTF"
#: resources/templates/resources/donate.html:46
#: resources/templates/resources/donate.html:47
msgid ""
"We will only use thoe data to keep track of our members and grant you "
"advantages, and we will never communicate them to any third party."
msgstr ""
"Solo usarmos los datos para tener control de la lista de miembros y darte "
"las ventajas de miembro, nunca se los daremos a ningún tercero."
#: resources/templates/resources/edit.html:9
#: resources/templates/resources/resources.html:30
msgid "Edit this page"
#: resources/templates/resources/donate.html:50
msgid "What will we do with your money ?"
msgstr ""
#: resources/templates/resources/donate.html:51
msgid ""
"Hosting a website - and especially a CTF platform - costs money:\n"
" more precisely, it costs us <b>50 euros per month</b>.<br>\n"
" If we had <b>40 members</b> each year, it would be enough to "
"cover the hosting of 42CTF.<br>\n"
" With the additional money, we could for example offer prizes "
"for limited-time events, but we will update this page as soon as we reach "
"this threshold :)"
msgstr ""
#: resources/templates/resources/edit.html:7
msgid "Edit this page"
msgstr "Editar esta página"
#: 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 ""
"Más información llegará pronto, pero como puedes imaginar requiere hacer un "
"pull request a tu favorito"
#: resources/templates/resources/resources.html:10
msgid "Getting started"
msgstr ""
#: resources/templates/resources/resources.html:13
#: resources/templates/resources/tools.html:9
#: resources/templates/resources/tools.html:7
msgid "Recommended Tools"
msgstr ""
msgstr "Herramientas Recomendadas"
#: resources/templates/resources/resources.html:20
msgid "Technical documentation"
msgstr ""
#: resources/templates/resources/resources.html:21
msgid "No docs available, contact us if you want to write some :)"
msgstr ""
#: resources/templates/resources/resources.html:26
msgid "Contribute"
msgstr ""
#: resources/templates/resources/resources.html:29
#: resources/templates/resources/translate.html:9
msgid "Translate 42CTF"
msgstr ""
#: resources/templates/resources/tools.html:12
#: 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."
#: resources/templates/resources/tools.html:12
#: resources/templates/resources/tools.html:10
msgid "with a bunch of useful tools."
msgstr ""
msgstr "con unas cuantas herramientas útiles."
#: resources/templates/resources/tools.html:13
#: resources/templates/resources/tools.html:11
msgid "You can dowload this OVA"
msgstr ""
msgstr "Puedes descargar este OVA"
#: resources/templates/resources/tools.html:11
msgid "here"
msgstr "aquí"
#: resources/templates/resources/tools.html:13
msgid "here"
msgstr ""
#: resources/templates/resources/tools.html:15
msgid "Here are the tools installed on the VM:"
msgstr ""
msgstr "Aquí están las herramientas instaladas en la Máquina Virtual:"
#: resources/templates/resources/tools.html:24
#: 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 quieres resolver los retos en tu propia máquina, te recomendamos usar "
"Linux como sistema operativo."
#: resources/templates/resources/tools.html:25
#: 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 mayoría de retos de ingeniería inversa usan binarios ELF y no funcionarán "
"en Mac OS o Windows."
#: resources/templates/resources/tools.html:27
#: resources/templates/resources/tools.html:25
msgid "Additionnaly, you will need the following languages interpreters:"
msgstr ""
msgstr "Además, necesitarás tender los siguientes interpretes de lenguaje:"
#: resources/templates/resources/translate.html:12
#: resources/templates/resources/translate.html:7
msgid "Translate 42CTF"
msgstr "Traducir 42CTF"
#: resources/templates/resources/translate.html:10
msgid "42CTF source code is publicly available on this"
msgstr ""
msgstr "El código de 42CTF está disponible al público aquí"
#: resources/templates/resources/translate.html:13
#: resources/templates/resources/translate.html:11
msgid ""
"Translation does not require any programming skill and is a good way to "
"contribute if you want to help us, by making the platform always more "
"accessible."
msgstr ""
"La traducción no requiere saber programación y es una buena forma para "
"contribuir si quieres ayudarnos, haciendo la plataforma siempre más "
"accesible."
#: resources/templates/resources/translate.html:14
#: resources/templates/resources/translate.html:12
msgid "We have a"
msgstr ""
msgstr "Tenemos un"
#: resources/templates/resources/translate.html:14
#: resources/templates/resources/translate.html:12
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."
#: resources/templates/resources/translate.html:15
#: 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 ;)"
#: resources/templates/resources/translate.html:16
#: resources/templates/resources/translate.html:14
msgid ""
"You will need to fork the git repository, make your changes, push them, and "
"then open a pull request so that we can merge your contributions into our "
"repository."
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."
#: resources/templates/resources/translate.html:17
#: resources/templates/resources/translate.html:15
msgid "Don't hesitate to reach for help on"
msgstr ""
msgstr "No dudes en pedirnos ayuda"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-02 19:22+0100\n"
"POT-Creation-Date: 2022-03-13 18:04+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"
@ -18,137 +18,158 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: resources/templates/resources/42ctf.html:9
#: resources/templates/resources/resources.html:12
#: 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:12
#: resources/templates/resources/42ctf.html:10
msgid "A short introduction to CTF"
msgstr "Une brève introduction aux CTF"
#: resources/templates/resources/42ctf.html:13
#: resources/templates/resources/42ctf.html:11
msgid ""
"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."
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:14
msgid "The challenges require participants to find sort of passwords called \\"
#: resources/templates/resources/42ctf.html:12
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 "Fonctionnement de 42CTF"
#: resources/templates/resources/42ctf.html:16
msgid "42CTF is what we call a permanent CTF."
msgstr "42CTF est ce qu'on appelle un CTF permanent."
#: resources/templates/resources/42ctf.html:17
msgid "Functionment of 42CTF"
msgstr ""
#: resources/templates/resources/42ctf.html:18
msgid "42CTF is what we call a permanent CTF."
msgstr ""
#: resources/templates/resources/42ctf.html:19
msgid "Except from the"
msgstr ""
msgstr "Sauf pour les"
#: resources/templates/resources/42ctf.html:19
#: resources/templates/resources/42ctf.html:17
msgid "events"
msgstr ""
msgstr "évènements"
#: resources/templates/resources/42ctf.html:19
#: 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:20
#: 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:21
#: 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 "Équipe de 42CTF"
#: resources/templates/resources/42ctf.html:23
msgid "42CTF is managed by 42 students."
msgstr "42CTF est géré par des étudiants de 42"
#: resources/templates/resources/42ctf.html:24
msgid "42CTF Team"
msgstr ""
msgid "You can meet the team on"
msgstr "Vous pouvez rencontrer l'équipe sur"
#: resources/templates/resources/42ctf.html:25
msgid "42CTF is managed by 42 students."
msgstr ""
#: resources/templates/resources/42ctf.html:26
msgid "You can meet the team on"
msgstr ""
#: resources/templates/resources/42ctf.html:27
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:28
#: 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:9
#: resources/templates/resources/resources.html:28
#: resources/templates/resources/create_challenge.html:7
msgid "Create new challenges"
msgstr ""
msgstr "Créer de nouveaux challenges"
#: resources/templates/resources/create_challenge.html:12
#: 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:13
#: 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:14
#: 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:15
#: 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:16
#: 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:9
#: resources/templates/resources/resources.html:31
#: resources/templates/resources/donate.html:7
msgid "Donate"
msgstr "Donner"
#: resources/templates/resources/donate.html:12
#: resources/templates/resources/donate.html:10
msgid "Become a 42CTF member"
msgstr "Devenez membre de 42CTF"
#: resources/templates/resources/donate.html:13
#: resources/templates/resources/donate.html:11
msgid ""
"42CTF is a non-profit organization with a legal status under the french law "
"(Association loi 1901)."
msgstr "42CTF est une association loi 1901 (loi française)."
#: resources/templates/resources/donate.html:14
#: resources/templates/resources/donate.html:12
msgid "You can support us by becoming a member and paying a fee of 15 euros."
msgstr ""
"Vous pouvez nous aider financièrement en devenant membre, au cout de 15 "
"euros."
#: resources/templates/resources/donate.html:15
#: resources/templates/resources/donate.html:13
msgid "Membership is then granted for 1 year."
msgstr "Le status de membre est valable 1 an au paiement de la cotisation."
#: resources/templates/resources/donate.html:17
#: resources/templates/resources/donate.html:15
msgid "When you become a member, you gain the following advantages:"
msgstr "Lorsque vous adherez à 42CTF, vous obtenez les avantages suivants :"
#: resources/templates/resources/donate.html:18
#: resources/templates/resources/donate.html:16
msgid ""
"A different color for your pseudo in the scoreboard, to let everyone know "
"you're a member."
@ -156,16 +177,16 @@ msgstr ""
"Une couleur différente pour votre pseudo sur le scoreboard, pour que tout le "
"monde sache que vous êtes membre."
#: resources/templates/resources/donate.html:19
#: resources/templates/resources/donate.html:17
msgid ""
"The possibility to play again past CTF, with challenges no longer available, "
"in the form of private events with the people of your choice."
msgstr ""
"La possibilité de jouer de nouveau aux CTF passés, avec des challenges qui "
"ne sont plus disponibles, sous la forme d'un événement privé avec les "
"ne sont plus disponibles, sous la forme d'un évènement privé avec les "
"personnes de votre choix."
#: resources/templates/resources/donate.html:20
#: 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."
@ -173,53 +194,53 @@ msgstr ""
"Ex: vous avez joué au Welcome CTF 2021, et vous voulez renouveler "
"l'expérience avec vos amis le temps d'un weekend."
#: resources/templates/resources/donate.html:21
#: resources/templates/resources/donate.html:19
msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
msgstr "Ou au contraire vous n'avez pas joué car vous n'étiez pas éligible."
#: resources/templates/resources/donate.html:24
#: resources/templates/resources/donate.html:22
msgid "More advantages may come later, and you can submit us your ideas."
msgstr ""
"Plus d'avantages pourraient être disponibles plus tard, et vous pouvez nous "
"soumettre vos idées."
#: resources/templates/resources/donate.html:25
#: resources/templates/resources/donate.html:23
msgid ""
"However, we will not organize limited time CTF for members only, as this "
"will be equivalent to organize paid events, and we want 42CTF to remain FREE "
"for all."
msgstr ""
"Cependant, nous n'organiserons pas de CTF en temps limité réservé aux "
"membres, car cela serait équivalent à organiser des événements payants, 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:28
#: resources/templates/resources/donate.html:26
msgid "Donate to 42CTF"
msgstr "Donnez à 42CTF"
#: resources/templates/resources/donate.html:29
#: resources/templates/resources/donate.html:27
msgid ""
"You can donate to 42CTF or pay your membership with the following means:"
msgstr ""
"Vous pouvez donner à 42CTF ou payer votre adhésion avec les moyens suivants :"
#: resources/templates/resources/donate.html:43
#: resources/templates/resources/donate.html:44
msgid ""
"If you would like us to add another payment method or if you want to pay in "
"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:45
#: resources/templates/resources/donate.html:46
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:46
#: resources/templates/resources/donate.html:47
msgid ""
"We will only use thoe data to keep track of our members and grant you "
"advantages, and we will never communicate them to any third party."
@ -228,112 +249,127 @@ msgstr ""
"et vous accorder des avantages, nous ne transmettrons jamais ces données à "
"des tierces parties."
#: resources/templates/resources/edit.html:9
#: resources/templates/resources/resources.html:30
msgid "Edit this page"
#: resources/templates/resources/donate.html:50
msgid "What will we do with your money ?"
msgstr ""
#: resources/templates/resources/donate.html:51
msgid ""
"Hosting a website - and especially a CTF platform - costs money:\n"
" more precisely, it costs us <b>50 euros per month</b>.<br>\n"
" If we had <b>40 members</b> each year, it would be enough to "
"cover the hosting of 42CTF.<br>\n"
" With the additional money, we could for example offer prizes "
"for limited-time events, but we will update this page as soon as we reach "
"this threshold :)"
msgstr ""
#: resources/templates/resources/edit.html:7
msgid "Edit this page"
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/resources.html:10
msgid "Getting started"
msgstr ""
#: resources/templates/resources/resources.html:13
#: resources/templates/resources/tools.html:9
#: resources/templates/resources/tools.html:7
msgid "Recommended Tools"
msgstr ""
msgstr "Outils recommandés"
#: resources/templates/resources/resources.html:20
msgid "Technical documentation"
msgstr ""
#: resources/templates/resources/resources.html:21
msgid "No docs available, contact us if you want to write some :)"
msgstr ""
#: resources/templates/resources/resources.html:26
msgid "Contribute"
msgstr ""
#: resources/templates/resources/resources.html:29
#: resources/templates/resources/translate.html:9
msgid "Translate 42CTF"
msgstr ""
#: resources/templates/resources/tools.html:12
#: 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:12
#: resources/templates/resources/tools.html:10
msgid "with a bunch of useful tools."
msgstr ""
msgstr "avec quelques outils utiles"
#: resources/templates/resources/tools.html:13
#: 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 "ici"
#: resources/templates/resources/tools.html:13
msgid "here"
msgstr ""
#: resources/templates/resources/tools.html:15
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:24
#: 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:25
#: 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:27
#: 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:12
#: resources/templates/resources/translate.html:7
msgid "Translate 42CTF"
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:13
#: resources/templates/resources/translate.html:11
msgid ""
"Translation does not require any programming skill and is a good way to "
"contribute if you want to help us, by making the platform always more "
"accessible."
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:14
#: resources/templates/resources/translate.html:12
msgid "We have a"
msgstr ""
msgstr "Nous avons un"
#: resources/templates/resources/translate.html:14
#: 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:15
#: 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:16
#: resources/templates/resources/translate.html:14
msgid ""
"You will need to fork the git repository, make your changes, push them, and "
"then open a pull request so that we can merge your contributions into our "
"repository."
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:17
#: 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-02 19:22+0100\n"
"POT-Creation-Date: 2022-03-13 18:04+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"
@ -18,196 +18,209 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: resources/templates/resources/42ctf.html:9
#: resources/templates/resources/resources.html:12
#: resources/templates/resources/42ctf.html:7
msgid "What is 42CTF ?"
msgstr ""
#: resources/templates/resources/42ctf.html:12
#: resources/templates/resources/42ctf.html:10
msgid "A short introduction to CTF"
msgstr ""
#: resources/templates/resources/42ctf.html:13
#: resources/templates/resources/42ctf.html:11
msgid ""
"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."
msgstr ""
#: resources/templates/resources/42ctf.html:14
msgid "The challenges require participants to find sort of passwords called \\"
#: resources/templates/resources/42ctf.html:12
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:17
#: resources/templates/resources/42ctf.html:15
msgid "Functionment of 42CTF"
msgstr ""
#: resources/templates/resources/42ctf.html:18
#: resources/templates/resources/42ctf.html:16
msgid "42CTF is what we call a permanent CTF."
msgstr ""
#: resources/templates/resources/42ctf.html:19
#: resources/templates/resources/42ctf.html:17
msgid "Except from the"
msgstr ""
#: resources/templates/resources/42ctf.html:19
#: resources/templates/resources/42ctf.html:17
msgid "events"
msgstr ""
#: resources/templates/resources/42ctf.html:19
#: resources/templates/resources/42ctf.html:17
msgid "challenges are available on the platform without time limitations."
msgstr ""
#: resources/templates/resources/42ctf.html:20
#: resources/templates/resources/42ctf.html:18
msgid "The registration on 42CTF is open to everyone, 42 students or not."
msgstr ""
#: resources/templates/resources/42ctf.html:21
#: 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 ""
#: resources/templates/resources/42ctf.html:24
#: resources/templates/resources/42ctf.html:22
msgid "42CTF Team"
msgstr ""
#: resources/templates/resources/42ctf.html:25
#: resources/templates/resources/42ctf.html:23
msgid "42CTF is managed by 42 students."
msgstr ""
#: resources/templates/resources/42ctf.html:26
#: resources/templates/resources/42ctf.html:24
msgid "You can meet the team on"
msgstr ""
#: resources/templates/resources/42ctf.html:27
#: resources/templates/resources/42ctf.html:25
msgid ""
"Challenges are created by various contributors, not necessarily 42 students."
msgstr ""
#: resources/templates/resources/42ctf.html:28
#: 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 ""
#: resources/templates/resources/create_challenge.html:9
#: resources/templates/resources/resources.html:28
#: resources/templates/resources/create_challenge.html:7
msgid "Create new challenges"
msgstr ""
#: resources/templates/resources/create_challenge.html:12
#: resources/templates/resources/create_challenge.html:10
msgid "If you want to create new challenges for 42CTF, send us a message on "
msgstr ""
#: resources/templates/resources/create_challenge.html:13
#: resources/templates/resources/create_challenge.html:11
msgid "If your challenge is offline, then you don't have to ask us in advance."
msgstr ""
#: resources/templates/resources/create_challenge.html:14
#: 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 ""
#: resources/templates/resources/create_challenge.html:15
#: resources/templates/resources/create_challenge.html:13
msgid ""
"We may be able to help you or to give you resources such as dockerfiles."
msgstr ""
#: resources/templates/resources/create_challenge.html:16
#: resources/templates/resources/create_challenge.html:14
msgid "We plan to make those resources publicly available in a near future."
msgstr ""
#: resources/templates/resources/donate.html:9
#: resources/templates/resources/resources.html:31
#: resources/templates/resources/donate.html:7
msgid "Donate"
msgstr ""
#: resources/templates/resources/donate.html:12
#: resources/templates/resources/donate.html:10
msgid "Become a 42CTF member"
msgstr ""
#: resources/templates/resources/donate.html:13
#: resources/templates/resources/donate.html:11
msgid ""
"42CTF is a non-profit organization with a legal status under the french law "
"(Association loi 1901)."
msgstr ""
#: resources/templates/resources/donate.html:14
#: resources/templates/resources/donate.html:12
msgid "You can support us by becoming a member and paying a fee of 15 euros."
msgstr ""
#: resources/templates/resources/donate.html:15
#: resources/templates/resources/donate.html:13
msgid "Membership is then granted for 1 year."
msgstr ""
#: resources/templates/resources/donate.html:17
#: resources/templates/resources/donate.html:15
msgid "When you become a member, you gain the following advantages:"
msgstr ""
#: resources/templates/resources/donate.html:18
#: 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:19
#: resources/templates/resources/donate.html:17
msgid ""
"The possibility to play again past CTF, with challenges no longer available, "
"in the form of private events with the people of your choice."
msgstr ""
#: resources/templates/resources/donate.html:20
#: resources/templates/resources/donate.html:18
msgid ""
"Ex: you played Welcome CTF 2021, and want to play it again with your friends "
"during one weekend."
msgstr ""
#: resources/templates/resources/donate.html:21
#: resources/templates/resources/donate.html:19
msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
msgstr ""
#: resources/templates/resources/donate.html:24
#: 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:25
#: resources/templates/resources/donate.html:23
msgid ""
"However, we will not organize limited time CTF for members only, as this "
"will be equivalent to organize paid events, and we want 42CTF to remain FREE "
"for all."
msgstr ""
#: resources/templates/resources/donate.html:28
#: resources/templates/resources/donate.html:26
msgid "Donate to 42CTF"
msgstr ""
#: resources/templates/resources/donate.html:29
#: resources/templates/resources/donate.html:27
msgid ""
"You can donate to 42CTF or pay your membership with the following means:"
msgstr ""
#: resources/templates/resources/donate.html:43
#: resources/templates/resources/donate.html:44
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:45
#: resources/templates/resources/donate.html:46
msgid ""
"If you're paying for your membership, don't forget to send us your first and "
"last name, as well as your 42CTF pseudo."
msgstr ""
#: resources/templates/resources/donate.html:46
#: resources/templates/resources/donate.html:47
msgid ""
"We will only use thoe data to keep track of our members and grant you "
"advantages, and we will never communicate them to any third party."
msgstr ""
#: resources/templates/resources/edit.html:9
#: resources/templates/resources/resources.html:30
#: resources/templates/resources/donate.html:50
msgid "What will we do with your money ?"
msgstr ""
#: resources/templates/resources/donate.html:51
msgid ""
"Hosting a website - and especially a CTF platform - costs money:\n"
" more precisely, it costs us <b>50 euros per month</b>.<br>\n"
" If we had <b>40 members</b> each year, it would be enough to "
"cover the hosting of 42CTF.<br>\n"
" With the additional money, we could for example offer prizes "
"for limited-time events, but we will update this page as soon as we reach "
"this threshold :)"
msgstr ""
#: resources/templates/resources/edit.html:7
msgid "Edit this page"
msgstr ""
@ -217,101 +230,83 @@ msgid ""
"request to your favorite"
msgstr ""
#: resources/templates/resources/resources.html:10
msgid "Getting started"
msgstr ""
#: resources/templates/resources/resources.html:13
#: resources/templates/resources/tools.html:9
#: resources/templates/resources/tools.html:7
msgid "Recommended Tools"
msgstr ""
#: resources/templates/resources/resources.html:20
msgid "Technical documentation"
msgstr ""
#: resources/templates/resources/resources.html:21
msgid "No docs available, contact us if you want to write some :)"
msgstr ""
#: resources/templates/resources/resources.html:26
msgid "Contribute"
msgstr ""
#: resources/templates/resources/resources.html:29
#: resources/templates/resources/translate.html:9
msgid "Translate 42CTF"
msgstr ""
#: resources/templates/resources/tools.html:12
#: resources/templates/resources/tools.html:10
msgid "To get you started, we built a VM that you can simply import in"
msgstr ""
#: resources/templates/resources/tools.html:12
#: resources/templates/resources/tools.html:10
msgid "with a bunch of useful tools."
msgstr ""
#: resources/templates/resources/tools.html:13
#: resources/templates/resources/tools.html:11
msgid "You can dowload this OVA"
msgstr ""
#: resources/templates/resources/tools.html:13
#: resources/templates/resources/tools.html:11
msgid "here"
msgstr ""
#: resources/templates/resources/tools.html:15
#: resources/templates/resources/tools.html:13
msgid "Here are the tools installed on the VM:"
msgstr ""
#: resources/templates/resources/tools.html:24
#: 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 ""
#: resources/templates/resources/tools.html:25
#: 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 ""
#: resources/templates/resources/tools.html:27
#: resources/templates/resources/tools.html:25
msgid "Additionnaly, you will need the following languages interpreters:"
msgstr ""
#: resources/templates/resources/translate.html:12
#: resources/templates/resources/translate.html:7
msgid "Translate 42CTF"
msgstr ""
#: resources/templates/resources/translate.html:10
msgid "42CTF source code is publicly available on this"
msgstr ""
#: resources/templates/resources/translate.html:13
#: resources/templates/resources/translate.html:11
msgid ""
"Translation does not require any programming skill and is a good way to "
"contribute if you want to help us, by making the platform always more "
"accessible."
msgstr ""
#: resources/templates/resources/translate.html:14
#: resources/templates/resources/translate.html:12
msgid "We have a"
msgstr ""
#: resources/templates/resources/translate.html:14
#: resources/templates/resources/translate.html:12
msgid ""
"describing how to translate pages with the Django internalization module."
msgstr ""
#: resources/templates/resources/translate.html:15
#: 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:16
#: resources/templates/resources/translate.html:14
msgid ""
"You will need to fork the git repository, make your changes, push them, and "
"then open a pull request so that we can merge your contributions into our "
"repository."
msgstr ""
#: resources/templates/resources/translate.html:17
#: resources/templates/resources/translate.html:15
msgid "Don't hesitate to reach for help on"
msgstr ""

View File

@ -0,0 +1,363 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-13 18:04+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"
"Language: \n"
"MIME-Version: 1.0\n"
"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 "42CTFとは"
#: resources/templates/resources/42ctf.html:10
msgid "A short introduction to CTF"
msgstr "CTFについての簡単な紹介"
#: resources/templates/resources/42ctf.html:11
msgid ""
"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."
msgstr ""
"42CTFとは、Capture The Flagの略です。サイバーセキュリティの競技会のことで、参"
"加者は様々なカテゴリーの課題を解決してポイントを獲得し、スコアボードでの順位"
"を上げていきます。"
#: resources/templates/resources/42ctf.html:12
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 "42CTFの機能紹介"
#: resources/templates/resources/42ctf.html:16
msgid "42CTF is what we call a permanent CTF."
msgstr "42CTFは、いわゆる永続的CTFです。"
#: resources/templates/resources/42ctf.html:17
msgid "Except from the"
msgstr "こちらを除き"
#: resources/templates/resources/42ctf.html:17
msgid "events"
msgstr "(イベント)"
#: resources/templates/resources/42ctf.html:17
msgid "challenges are available on the platform without time limitations."
msgstr "時間制限なしにプラットフォーム上でチャレンジ可能です。"
#: resources/templates/resources/42ctf.html:18
msgid "The registration on 42CTF is open to everyone, 42 students or not."
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 "42CTFチーム"
#: resources/templates/resources/42ctf.html:23
msgid "42CTF is managed by 42 students."
msgstr "42CTFは42の学生によって運営されています。"
#: resources/templates/resources/42ctf.html:24
msgid "You can meet the team on"
msgstr "こちらでチームに会えます:"
#: resources/templates/resources/42ctf.html:25
msgid ""
"Challenges are created by various contributors, not necessarily 42 students."
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 "新しい課題を作成する"
#: 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 "オフラインでの課題であれば、事前にご相談いただく必要はありません。"
#: 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 "近日、これらのリソースを公開する予定です。"
#: resources/templates/resources/donate.html:7
msgid "Donate"
msgstr "寄付"
#: resources/templates/resources/donate.html:10
msgid "Become a 42CTF member"
msgstr "42CTFのメンバーになる"
#: resources/templates/resources/donate.html:11
msgid ""
"42CTF is a non-profit organization with a legal status under the french law "
"(Association loi 1901)."
msgstr ""
"42CTFは、フランスの法律Association loi 1901に基づく法的地位を有する非営利"
"団体です。"
#: resources/templates/resources/donate.html:12
msgid "You can support us by becoming a member and paying a fee of 15 euros."
msgstr ""
"メンバーになって、15ユーロの会費を払うことで、私たちをサポートすることができ"
"ます。"
#: resources/templates/resources/donate.html:13
msgid "Membership is then granted for 1 year."
msgstr "その後、1年間のメンバーシップが付与されます。"
#: resources/templates/resources/donate.html:15
msgid "When you become a member, you gain the following advantages:"
msgstr "会員になると、以下のようなメリットがあります:"
#: resources/templates/resources/donate.html:16
msgid ""
"A different color for your pseudo in the scoreboard, to let everyone know "
"you're a member."
msgstr ""
"スコアボードに表示されるアカウント名の色が変わり、メンバーであることが誰にで"
"もわかるように。"
#: resources/templates/resources/donate.html:17
msgid ""
"The possibility to play again past CTF, with challenges no longer available, "
"in the form of private events with the people of your choice."
msgstr ""
"チャレンジができなくなった過去のCTFを、好きな人とプライベートイベントの形で再"
"びチャレンジできる可能性。"
#: resources/templates/resources/donate.html:18
msgid ""
"Ex: you played Welcome CTF 2021, and want to play it again with your friends "
"during one weekend."
msgstr ""
"例Welcome CTF 2021 に一度チャレンジして、週末に友達ともう一度チャレンジした"
"いと思っている方。"
#: resources/templates/resources/donate.html:19
msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
msgstr ""
"または、Welcome CTF 2021 への参加資格がなかったため、チャレンジできなかった"
"方。"
#: resources/templates/resources/donate.html:22
msgid "More advantages may come later, and you can submit us your ideas."
msgstr ""
"もっと多くの利点があるかもしれませんし、あなたのアイデアを私たちに提供してい"
"ただくことも可能です。"
#: resources/templates/resources/donate.html:23
msgid ""
"However, we will not organize limited time CTF for members only, as this "
"will be equivalent to organize paid events, and we want 42CTF to remain FREE "
"for all."
msgstr ""
"しかし、メンバーのみ参加できる期間限定CTFを開催することはありません。これは、"
"有料のイベントを開催することと同義であり、私たちは42CTFがすべての人にとって無"
"料であることを望んでいます。"
#: resources/templates/resources/donate.html:26
msgid "Donate to 42CTF"
msgstr "42CTFに寄付する"
#: resources/templates/resources/donate.html:27
msgid ""
"You can donate to 42CTF or pay your membership with the following means:"
msgstr ""
"42CTFへのご寄付やメンバーシップのお支払いは、以下の手段で行うことができます"
#: resources/templates/resources/donate.html:44
msgid ""
"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:46
msgid ""
"If you're paying for your membership, don't forget to send us your first and "
"last name, as well as your 42CTF pseudo."
msgstr ""
"メンバーシップをお支払いになる場合は、氏名と42CTFのアカウント名を忘れずにお送"
"りください。"
#: resources/templates/resources/donate.html:47
msgid ""
"We will only use thoe data to keep track of our members and grant you "
"advantages, and we will never communicate them to any third party."
msgstr ""
"これらのデータは、メンバーの管理と特典の付与のためにのみ使用し、第三者に提供"
"することはありません。"
#: resources/templates/resources/donate.html:50
msgid "What will we do with your money ?"
msgstr ""
#: resources/templates/resources/donate.html:51
msgid ""
"Hosting a website - and especially a CTF platform - costs money:\n"
" more precisely, it costs us <b>50 euros per month</b>.<br>\n"
" If we had <b>40 members</b> each year, it would be enough to "
"cover the hosting of 42CTF.<br>\n"
" With the additional money, we could for example offer prizes "
"for limited-time events, but we will update this page as soon as we reach "
"this threshold :)"
msgstr ""
#: resources/templates/resources/edit.html:7
msgid "Edit this page"
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 "おすすめのツール"
#: resources/templates/resources/tools.html:10
msgid "To get you started, we built a VM that you can simply import in"
msgstr "手始めに、Virtual BoxでインストールするだけのVMを構築しました"
#: resources/templates/resources/tools.html:10
msgid "with a bunch of useful tools."
msgstr "便利なツールを使用しました。"
#: resources/templates/resources/tools.html:11
msgid "You can dowload this OVA"
msgstr "このOVAはこちらからダウンロードできます"
#: resources/templates/resources/tools.html:11
msgid "here"
msgstr "こちら"
#: resources/templates/resources/tools.html:13
msgid "Here are the tools installed on the VM:"
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 "ReversingのほとんどはELFバイナリで、Mac OSやWindowsでは動作しません。"
#: resources/templates/resources/tools.html:25
msgid "Additionnaly, you will need the following languages interpreters:"
msgstr "さらに、以下の言語のインタプリタが必要です。"
#: resources/templates/resources/translate.html:7
msgid "Translate 42CTF"
msgstr "42CTFを翻訳"
#: resources/templates/resources/translate.html:10
msgid "42CTF source code is publicly available on this"
msgstr "42CTFのソースコードはこのサイトで公開されています。"
#: resources/templates/resources/translate.html:11
msgid ""
"Translation does not require any programming skill and is a good way to "
"contribute if you want to help us, by making the platform always more "
"accessible."
msgstr ""
"翻訳にはプログラミングのスキルは必要ありません。プラットフォームをより使いや"
"すくすることで、私たちに貢献したいとお考えの方には良い方法です。"
#: resources/templates/resources/translate.html:12
msgid "We have a"
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 ""
"You will need to fork the git repository, make your changes, push them, and "
"then open a pull request so that we can merge your contributions into our "
"repository."
msgstr ""
"gitリポジトリをフォークしていただき、変更を加えてプッシュし、プルリクエストを"
"作成していただくことで、皆さんの貢献を私たちのリポジトリにマージすることがで"
"きます。"
#: resources/templates/resources/translate.html:15
msgid "Don't hesitate to reach for help on"
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-02 19:22+0100\n"
"POT-Creation-Date: 2022-03-13 18:04+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,196 +20,209 @@ msgstr ""
"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
"%100>=11 && n%100<=14)? 2 : 3);\n"
#: resources/templates/resources/42ctf.html:9
#: resources/templates/resources/resources.html:12
#: resources/templates/resources/42ctf.html:7
msgid "What is 42CTF ?"
msgstr ""
#: resources/templates/resources/42ctf.html:12
#: resources/templates/resources/42ctf.html:10
msgid "A short introduction to CTF"
msgstr ""
#: resources/templates/resources/42ctf.html:13
#: resources/templates/resources/42ctf.html:11
msgid ""
"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."
msgstr ""
#: resources/templates/resources/42ctf.html:14
msgid "The challenges require participants to find sort of passwords called \\"
#: resources/templates/resources/42ctf.html:12
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:17
#: resources/templates/resources/42ctf.html:15
msgid "Functionment of 42CTF"
msgstr ""
#: resources/templates/resources/42ctf.html:18
#: resources/templates/resources/42ctf.html:16
msgid "42CTF is what we call a permanent CTF."
msgstr ""
#: resources/templates/resources/42ctf.html:19
#: resources/templates/resources/42ctf.html:17
msgid "Except from the"
msgstr ""
#: resources/templates/resources/42ctf.html:19
#: resources/templates/resources/42ctf.html:17
msgid "events"
msgstr ""
#: resources/templates/resources/42ctf.html:19
#: resources/templates/resources/42ctf.html:17
msgid "challenges are available on the platform without time limitations."
msgstr ""
#: resources/templates/resources/42ctf.html:20
#: resources/templates/resources/42ctf.html:18
msgid "The registration on 42CTF is open to everyone, 42 students or not."
msgstr ""
#: resources/templates/resources/42ctf.html:21
#: 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 ""
#: resources/templates/resources/42ctf.html:24
#: resources/templates/resources/42ctf.html:22
msgid "42CTF Team"
msgstr ""
#: resources/templates/resources/42ctf.html:25
#: resources/templates/resources/42ctf.html:23
msgid "42CTF is managed by 42 students."
msgstr ""
#: resources/templates/resources/42ctf.html:26
#: resources/templates/resources/42ctf.html:24
msgid "You can meet the team on"
msgstr ""
#: resources/templates/resources/42ctf.html:27
#: resources/templates/resources/42ctf.html:25
msgid ""
"Challenges are created by various contributors, not necessarily 42 students."
msgstr ""
#: resources/templates/resources/42ctf.html:28
#: 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 ""
#: resources/templates/resources/create_challenge.html:9
#: resources/templates/resources/resources.html:28
#: resources/templates/resources/create_challenge.html:7
msgid "Create new challenges"
msgstr ""
#: resources/templates/resources/create_challenge.html:12
#: resources/templates/resources/create_challenge.html:10
msgid "If you want to create new challenges for 42CTF, send us a message on "
msgstr ""
#: resources/templates/resources/create_challenge.html:13
#: resources/templates/resources/create_challenge.html:11
msgid "If your challenge is offline, then you don't have to ask us in advance."
msgstr ""
#: resources/templates/resources/create_challenge.html:14
#: 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 ""
#: resources/templates/resources/create_challenge.html:15
#: resources/templates/resources/create_challenge.html:13
msgid ""
"We may be able to help you or to give you resources such as dockerfiles."
msgstr ""
#: resources/templates/resources/create_challenge.html:16
#: resources/templates/resources/create_challenge.html:14
msgid "We plan to make those resources publicly available in a near future."
msgstr ""
#: resources/templates/resources/donate.html:9
#: resources/templates/resources/resources.html:31
#: resources/templates/resources/donate.html:7
msgid "Donate"
msgstr ""
#: resources/templates/resources/donate.html:12
#: resources/templates/resources/donate.html:10
msgid "Become a 42CTF member"
msgstr ""
#: resources/templates/resources/donate.html:13
#: resources/templates/resources/donate.html:11
msgid ""
"42CTF is a non-profit organization with a legal status under the french law "
"(Association loi 1901)."
msgstr ""
#: resources/templates/resources/donate.html:14
#: resources/templates/resources/donate.html:12
msgid "You can support us by becoming a member and paying a fee of 15 euros."
msgstr ""
#: resources/templates/resources/donate.html:15
#: resources/templates/resources/donate.html:13
msgid "Membership is then granted for 1 year."
msgstr ""
#: resources/templates/resources/donate.html:17
#: resources/templates/resources/donate.html:15
msgid "When you become a member, you gain the following advantages:"
msgstr ""
#: resources/templates/resources/donate.html:18
#: 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:19
#: resources/templates/resources/donate.html:17
msgid ""
"The possibility to play again past CTF, with challenges no longer available, "
"in the form of private events with the people of your choice."
msgstr ""
#: resources/templates/resources/donate.html:20
#: resources/templates/resources/donate.html:18
msgid ""
"Ex: you played Welcome CTF 2021, and want to play it again with your friends "
"during one weekend."
msgstr ""
#: resources/templates/resources/donate.html:21
#: resources/templates/resources/donate.html:19
msgid "Or you didn't play Welcome CTF 2021 because you were not eligible."
msgstr ""
#: resources/templates/resources/donate.html:24
#: 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:25
#: resources/templates/resources/donate.html:23
msgid ""
"However, we will not organize limited time CTF for members only, as this "
"will be equivalent to organize paid events, and we want 42CTF to remain FREE "
"for all."
msgstr ""
#: resources/templates/resources/donate.html:28
#: resources/templates/resources/donate.html:26
msgid "Donate to 42CTF"
msgstr ""
#: resources/templates/resources/donate.html:29
#: resources/templates/resources/donate.html:27
msgid ""
"You can donate to 42CTF or pay your membership with the following means:"
msgstr ""
#: resources/templates/resources/donate.html:43
#: resources/templates/resources/donate.html:44
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:45
#: resources/templates/resources/donate.html:46
msgid ""
"If you're paying for your membership, don't forget to send us your first and "
"last name, as well as your 42CTF pseudo."
msgstr ""
#: resources/templates/resources/donate.html:46
#: resources/templates/resources/donate.html:47
msgid ""
"We will only use thoe data to keep track of our members and grant you "
"advantages, and we will never communicate them to any third party."
msgstr ""
#: resources/templates/resources/edit.html:9
#: resources/templates/resources/resources.html:30
#: resources/templates/resources/donate.html:50
msgid "What will we do with your money ?"
msgstr ""
#: resources/templates/resources/donate.html:51
msgid ""
"Hosting a website - and especially a CTF platform - costs money:\n"
" more precisely, it costs us <b>50 euros per month</b>.<br>\n"
" If we had <b>40 members</b> each year, it would be enough to "
"cover the hosting of 42CTF.<br>\n"
" With the additional money, we could for example offer prizes "
"for limited-time events, but we will update this page as soon as we reach "
"this threshold :)"
msgstr ""
#: resources/templates/resources/edit.html:7
msgid "Edit this page"
msgstr ""
@ -219,101 +232,83 @@ msgid ""
"request to your favorite"
msgstr ""
#: resources/templates/resources/resources.html:10
msgid "Getting started"
msgstr ""
#: resources/templates/resources/resources.html:13
#: resources/templates/resources/tools.html:9
#: resources/templates/resources/tools.html:7
msgid "Recommended Tools"
msgstr ""
#: resources/templates/resources/resources.html:20
msgid "Technical documentation"
msgstr ""
#: resources/templates/resources/resources.html:21
msgid "No docs available, contact us if you want to write some :)"
msgstr ""
#: resources/templates/resources/resources.html:26
msgid "Contribute"
msgstr ""
#: resources/templates/resources/resources.html:29
#: resources/templates/resources/translate.html:9
msgid "Translate 42CTF"
msgstr ""
#: resources/templates/resources/tools.html:12
#: resources/templates/resources/tools.html:10
msgid "To get you started, we built a VM that you can simply import in"
msgstr ""
#: resources/templates/resources/tools.html:12
#: resources/templates/resources/tools.html:10
msgid "with a bunch of useful tools."
msgstr ""
#: resources/templates/resources/tools.html:13
#: resources/templates/resources/tools.html:11
msgid "You can dowload this OVA"
msgstr ""
#: resources/templates/resources/tools.html:13
#: resources/templates/resources/tools.html:11
msgid "here"
msgstr ""
#: resources/templates/resources/tools.html:15
#: resources/templates/resources/tools.html:13
msgid "Here are the tools installed on the VM:"
msgstr ""
#: resources/templates/resources/tools.html:24
#: 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 ""
#: resources/templates/resources/tools.html:25
#: 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 ""
#: resources/templates/resources/tools.html:27
#: resources/templates/resources/tools.html:25
msgid "Additionnaly, you will need the following languages interpreters:"
msgstr ""
#: resources/templates/resources/translate.html:12
#: resources/templates/resources/translate.html:7
msgid "Translate 42CTF"
msgstr ""
#: resources/templates/resources/translate.html:10
msgid "42CTF source code is publicly available on this"
msgstr ""
#: resources/templates/resources/translate.html:13
#: resources/templates/resources/translate.html:11
msgid ""
"Translation does not require any programming skill and is a good way to "
"contribute if you want to help us, by making the platform always more "
"accessible."
msgstr ""
#: resources/templates/resources/translate.html:14
#: resources/templates/resources/translate.html:12
msgid "We have a"
msgstr ""
#: resources/templates/resources/translate.html:14
#: resources/templates/resources/translate.html:12
msgid ""
"describing how to translate pages with the Django internalization module."
msgstr ""
#: resources/templates/resources/translate.html:15
#: 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:16
#: resources/templates/resources/translate.html:14
msgid ""
"You will need to fork the git repository, make your changes, push them, and "
"then open a pull request so that we can merge your contributions into our "
"repository."
msgstr ""
#: resources/templates/resources/translate.html:17
#: resources/templates/resources/translate.html:15
msgid "Don't hesitate to reach for help on"
msgstr ""

View File

@ -1,17 +1,15 @@
{% extends 'base.html' %}
{% block content %}
{% load i18n %}
{% get_current_language as lang %}
<div class="row">
<div class="col-sm-12 col-md-9">
<div class="col-sm-12 col-md-6">
<div class="ctf-block">
<div class="ctf-head">
<h3>{% trans "What is 42CTF ?" %}</h3>
<center><h3>{% trans "What is 42CTF ?" %}</h3></center>
</div>
<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>
@ -30,5 +28,4 @@
</div>
</div>
</div>
{% endblock %}

View File

@ -1,12 +1,10 @@
{% extends 'base.html' %}
{% block content %}
{% load i18n %}
{% get_current_language as lang %}
<div class="row">
<div class="col-sm-12 col-md-9">
<div class="col-sm-12 col-md-6">
<div class="ctf-block">
<div class="ctf-head">
<h3>{% trans "Create new challenges" %}</h3>
<center><h3>{% trans "Create new challenges" %}</h3></center>
</div>
<div class="ctf-body">
{% trans "If you want to create new challenges for 42CTF, send us a message on " %}<a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a> !<br><br>
@ -18,5 +16,4 @@
</div>
</div>
</div>
{% endblock %}

View File

@ -1,12 +1,10 @@
{% extends 'base.html' %}
{% block content %}
{% load i18n %}
{% get_current_language as lang %}
<div class="row">
<div class="col-sm-12 col-md-9">
<div class="col-sm-12">
<div class="ctf-block">
<div class="ctf-head">
<h3>{% trans "Donate" %}</h3>
<center><h3>{% trans "Donate" %}</h3></center>
</div>
<div class="ctf-body">
<h4>{% trans "Become a 42CTF member" %}</h4>
@ -25,29 +23,37 @@
{% trans "However, we will not organize limited time CTF for members only, as this will be equivalent to organize paid events, and we want 42CTF to remain FREE for all." %}<br>
<br><br>
<h4>{% trans "Donate to 42CTF" %}</h4>
<center><h4>{% trans "Donate to 42CTF" %}</h4>
{% trans "You can donate to 42CTF or pay your membership with the following means:" %}<br>
<a href="https://www.patreon.com/42ctf" target="_blank" class="patreon li-patreon">
<!-- <div class="patreon-content"> -->
<!-- <a href="https://www.patreon.com/42ctf" target="_blank" class="patreon li-patreon">
<span class="svg-box">
<svg viewBox="0 0 569 546" xmlns="http://www.w3.org/2000/svg"><g><circle cx="362.589996" cy="204.589996" data-fill="1" id="Oval" r="204.589996"></circle><rect data-fill="2" height="545.799988" id="Rectangle" width="100" x="0" y="0"></rect></g></svg>
</span>
<span class="patreon-text">
Patreon
</span>
<!-- </div> -->
</a>
</a> -->
<a href="https://www.paypal.com/donate/?hosted_button_id=M6YBYZ63MQGAY" target="_blank">
<img src="/static/img/paypal.png" width="200">
</a><br>
<img src="/static/img/paypal.png" width="200" style="margin-top: -10px;">
</a>
<!-- <a href="https://www.helloasso.com/associations/42ctf/adhesions/adhesion" target="_blank">
<img src="/static/img/hello_asso.png" width="180" style="margin-top: -10px;">
</a> -->
</center>
<br>
{% trans "If you would like us to add another payment method or if you want to pay in cash, send us a message !" %}<br><br>
{% trans "If you're paying for your membership, don't forget to send us your first and last name, as well as your 42CTF pseudo." %}
{% trans "We will only use thoe data to keep track of our members and grant you advantages, and we will never communicate them to any third party." %}
<br><br>
<h4>{% trans "What will we do with your money ?" %}</h4>
{% blocktranslate %}Hosting a website - and especially a CTF platform - costs money:
more precisely, it costs us <b>50 euros per month</b>.<br>
If we had <b>40 members</b> each year, it would be enough to cover the hosting of 42CTF.<br>
We currently have {{nb_members}} members. <br>
With the additional money, we could for example offer prizes for limited-time events, but we will update this page as soon as we reach this threshold :){% endblocktranslate %}
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -1,18 +1,19 @@
{% extends 'base.html' %}
{% block content %}
{% load i18n %}
{% get_current_language as lang %}
<div class="row">
<div class="col-sm-12 col-md-9">
<div class="col-sm-12 col-md-6">
<div class="ctf-block">
<div class="ctf-head">
<h3>{% trans "Edit this page" %}</h3>
<center><h3>{% trans "Edit this page" %}</h3></center>
</div>
<div class="ctf-body">
{% trans "More information coming soon, but as you can guess it involves making a pull request to your favorite" %} <a href="https://github.com/Danhia/42CTF/">repository</a> ;)
<br>
<br>
{% trans "More information coming soon, but as you can guess it involves making a pull request to your favorite" %} <a href="https://gitea.42ctf.org/42CTF/website">repository</a> ;)
<br>
<br>
<br>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -3,38 +3,23 @@
{% load i18n %}
{% get_current_language as lang %}
<div class="row">
<div class="col-lg-9 col-sm-12 news-card">
<div class="card news-card">
<ul class="list-group">
<li class="list-group-item active">{% trans "Getting started" %}</li>
<li class="list-group-item">
<a href="{% url 'resources:42ctf' %}">{% trans "What is 42CTF ?" %}</a></br>
<a href="{% url 'resources:tools' %}">{% trans "Recommended Tools" %}</a>
</li>
</ul>
</div>
<div class="card news-card">
<ul class="list-group">
<li class="list-group-item active">{% trans "Technical documentation" %}</li>
<li class="list-group-item">{% trans "No docs available, contact us if you want to write some :)" %}</li>
</ul>
</div>
<div class="card news-card">
<ul class="list-group">
<li class="list-group-item active">{% trans "Contribute" %}</li>
<li class="list-group-item">
<a href="{% url 'resources:create_challenge' %}">{% trans "Create new challenges" %}</a></br>
<a href="{% url 'resources:translate' %}">{% trans "Translate 42CTF" %}</a></br>
<a href="{% url 'resources:edit' %}">{% trans "Edit this page" %}</a></br>
<a href="{% url 'resources:donate' %}">{% trans "Donate" %}</a>
</li>
</ul>
</div>
</div>
{% block 42ctf %}
{% include "./42ctf.html" %}
{% endblock %}
{% block tools %}
{% include "./tools.html" %}
{% endblock %}
{% block translate %}
{% include "./translate.html" %}
{% endblock %}
{% block create_challenge %}
{% include "./create_challenge.html" %}
{% endblock %}
{% block edit %}
{% include "./edit.html" %}
{% endblock %}
{% block donate %}
{% include "./donate.html" %}
{% endblock %}
</div>
{% endblock %}

View File

@ -1,12 +1,10 @@
{% extends 'base.html' %}
{% block content %}
{% load i18n %}
{% get_current_language as lang %}
<div class="row">
<div class="col-sm-12 col-md-9">
<div class="col-sm-12 col-md-6">
<div class="ctf-block">
<div class="ctf-head">
<h3>{% trans "Recommended Tools" %}</h3>
<center><h3>{% trans "Recommended Tools" %}</h3></center>
</div>
<div class="ctf-body">
{% trans "To get you started, we built a VM that you can simply import in" %} <a href="https://www.virtualbox.org/wiki/Downloads">Virtual Box</a> {% trans "with a bunch of useful tools." %}<br>
@ -27,9 +25,10 @@
{% trans "Additionnaly, you will need the following languages interpreters:" %}<br>
- python3<br>
- lua<br>
<br>
<br>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -1,17 +1,15 @@
{% extends 'base.html' %}
{% block content %}
{% load i18n %}
{% get_current_language as lang %}
<div class="row">
<div class="col-sm-12 col-md-9">
<div class="col-sm-12">
<div class="ctf-block">
<div class="ctf-head">
<h3>{% trans "Translate 42CTF" %}</h3>
<center><h3>{% trans "Translate 42CTF" %}</h3></center>
</div>
<div class="ctf-body">
{% trans "42CTF source code is publicly available on this"%} <a href="https://github.com/Danhia/42CTF/">github</a>.<br>
{% trans "42CTF source code is publicly available on this"%} <a href="https://gitea.42ctf.org/42CTF/website">git</a>.<br>
{% trans "Translation does not require any programming skill and is a good way to contribute if you want to help us, by making the platform always more accessible." %}<br><br>
{% trans "We have a" %} <a href="https://github.com/Danhia/42CTF/wiki/Internationalization">wiki</a> {% trans "describing how to translate pages with the Django internalization module." %}<br>
{% trans "We have a" %} <a href="https://gitea.42ctf.org/42CTF/website/wiki/Internationalization">wiki</a> {% trans "describing how to translate pages with the Django internalization module." %}<br>
{% trans "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 ;)" %}
{% trans "You will need to fork the git repository, make your changes, push them, and then open a pull request so that we can merge your contributions into our repository." %}<br><br>
{% trans "Don't hesitate to reach for help on" %} <a class="footer_imgs" href="https://discord.gg/DwZqPpA" target="_blank"><img src="/static/img/discord.png" width="30"></a>
@ -19,5 +17,4 @@
</div>
</div>
</div>
{% endblock %}

View File

@ -5,10 +5,4 @@ app_name = "resources"
urlpatterns = [
path('', views.resources, name='resources'),
path('42ctf', views.ctf42, name='42ctf'),
path('tools', views.tools, name='tools'),
path('create_challenge', views.create_challenge, name='create_challenge'),
path('translate', views.translate, name='translate'),
path('edit', views.edit, name='edit'),
path('donate', views.donate, name='donate'),
]

View File

@ -1,26 +1,9 @@
from django.shortcuts import render
from django.core.paginator import Paginator
from accounts.models import UserProfileInfo
from django.contrib.auth.models import timezone
# Create your views here.
def resources(request):
return render(request, 'resources/resources.html')
def ctf42(request):
return render(request, 'resources/42ctf.html')
def tools(request):
return render(request, 'resources/tools.html')
def create_challenge(request):
return render(request, 'resources/create_challenge.html')
def translate(request):
return render(request, 'resources/translate.html')
def edit(request):
return render(request, 'resources/edit.html')
def donate(request):
return render(request, 'resources/donate.html')
nb_members = UserProfileInfo.objects.filter(member=True, member_until__gt=timezone.now()).count()
return render(request, 'resources/resources.html', {'nb_members':nb_members})

View File

@ -1,31 +1,24 @@
from collections import defaultdict
from django.core.management.base import BaseCommand, CommandError
from accounts import models as acc_models
from accounts.models import UserProfileInfo
from ctfs import models as ex_models
class Command(BaseCommand):
help = 'Recomputes the score and ranking caches from the solutions'
help = 'Recomputes the score cache from the solutions'
def handle(self, *args, **options):
all_sols = ex_models.CTF_flags.objects.select_related().filter(ctf__event=None)
all_sols = ex_models.CTF_flags.objects.select_related().filter(ctf__event=None, ctf__disabled=False)
all_users = UserProfileInfo.objects.all()
scores = defaultdict(int)
for sol in all_sols:
scores[sol.user] += sol.ctf.points
li = [(s, u) for (u, s) in scores.items()]
li2 = []
old_rank = None
old_score = None
rank = 0
for (s, u) in li:
rank += 1
if s == old_score:
li2.append((u, s, old_rank))
else:
old_score = s
old_rank = rank
li2.append((u, s, rank))
for u in all_users:
if u.user not in scores.keys():
u.score = 0
u.save()
for (u, s, r) in li2:
u.userprofileinfo.score = s
for u in scores:
u.userprofileinfo.score = scores[u]
u.userprofileinfo.save()

View File

@ -50,10 +50,12 @@ pre {
padding-left: 15px;
font-weight: bolder;
}
.dropdown-menu {
background-color: #1d1d1d;
border: none;
border-radius: 0;
min-width:inherit;
}
.dropdown-item {
color: #d9d9d9;
@ -62,8 +64,9 @@ pre {
background-color: #1d1d1d;
color: #fff;
}
.flag_link {
margin-right: 6px;
.nav-item{
padding-right: 15px;
padding-left: 15px;
}
.flag_img {
margin-top: 10px;
@ -367,6 +370,13 @@ footer {
.bottom-sm { order: 3 }
}
@media screen and (min-width: 992px) {
.container { display: flex; flex-flow: column; }
.top-md { order: 1; }
.middle-md { order: 2; }
.bottom-md { order: 3 }
}
.ctf-link {
color: #fff;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

11
src/statics/img/ja.svg Normal file
View File

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-jp" viewBox="0 0 640 480">
<defs>
<clipPath id="jp-a">
<path fill-opacity=".7" d="M-88 32h640v480H-88z"/>
</clipPath>
</defs>
<g fill-rule="evenodd" stroke-width="1pt" clip-path="url(#jp-a)" transform="translate(88 -32)">
<path fill="#fff" d="M-128 32h720v480h-720z"/>
<circle cx="523.1" cy="344.1" r="194.9" fill="#d30000" transform="translate(-168.4 8.6) scale(.76554)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 470 B

View File

@ -57,8 +57,6 @@
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'scoreboard:scoreboard' %}">{% translate "Scoreboard" %}</a>
<li class="nav-item">
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'events:events' %}">{% translate "Events" %}</a>
</li>
@ -67,27 +65,23 @@
</li>
</ul>
<ul class="navbar-nav ">
<!-- <li class="nav-item dropdown">
<a href="https://www.patreon.com/42ctf" target="_blank" class="patreon li-patreon">
<div class="patreon-content">
<span class="svg-box">
<svg viewBox="0 0 569 546" xmlns="http://www.w3.org/2000/svg"><g><circle cx="362.589996" cy="204.589996" data-fill="1" id="Oval" r="204.589996"></circle><rect data-fill="2" height="545.799988" id="Rectangle" width="100" x="0" y="0"></rect></g></svg>
</span>
<span class="patreon-text">
Patreon
</span>
</div>
</a>
</li> -->
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as languages %}
{% for lang_code, lang_name in languages %}
<li class="nav-item dropdown">
<a class="flag_link" href="{% url 'set_language' lang_code %}?next={{request.path|slice:"3:"}}">
<img class="flag_img" src="{% static "img/"|add:lang_code|add:".svg" %}" alt="flag {{ lang_name }}"/>
{% get_current_language as LANGUAGE_CODE %}
<a class="nav-link" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img class="flag_img" src="{% static "img/"|add:LANGUAGE_CODE|add:".svg" %}" alt="flag {{ LANGUAGE_CODE }}" style="margin-top: -5px;"/>
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
{% get_available_languages as languages %}
{% for lang_code, lang_name in languages %}
<a class="dropdown-item" href="{% url 'set_language' lang_code %}?next={{request.path|slice:"3:"}}">
<img class="flag_img" src="{% static "img/"|add:lang_code|add:".svg" %}" alt="flag {{ lang_name }}"/>
</a>
{% endfor %}
</div>
</li>
{% endfor %}
{% if request.user.is_authenticated %}
<li class="nav-item dropdown">
<a href="{% url 'accounts:edit' %}" class="nav-link">{{ request.user.username }}</a>
@ -116,26 +110,23 @@
</div>
<footer class="container">
<div class="row">
<div class="col-md-4">
<div class="col-lg-4 col-12">
<a href="https://discord.gg/DwZqPpA">
<img width="250px" src="https://discordapp.com/api/guilds/606162827274616845/widget.png?style=banner2">
<img width="250px" src="https://discordapp.com/api/guilds/606162827274616845/widget.png?style=banner2" style="margin-bottom:5px">
</a>
</div>
<div class="col-md-1 col-xs-1">
<div class="col-lg-1 col-6">
<a href="https://twitter.com/42ctf">
<img width="50px" src="{% static "img/twitter.png" %}">
</a>
</div>
<div class="col-md-2 footer-text col-xs-2">
<p>42ctf@protonmail.com <br>Made with <img src="{% static "img/smoke.png" %}" width="20px" style="margin-top:-5px"> by <a href="https://ix-56h.github.io/">ix-56h</a> - <a href="{% url "cgu" %}">CGU</a></p>
</div>
<div class="col-md-1 col-xs-1">
<div class="col-lg-1 col-6 middle-md">
<a href="https://fr.linkedin.com/company/42ctf">
<img width="50px" src="{% static "img/linkedin.png" %}" style="margin-bottom:5px">
</a>
</div>
<div class="col-md-4">
<a href="https://www.patreon.com/42ctf" target="_blank" class="patreon">
<div class="col-lg-4 col-12 bottom-md">
<!-- <a href="https://www.patreon.com/42ctf" target="_blank" class="patreon">
<div class="patreon-content">
<span class="svg-box">
<svg viewBox="0 0 569 546" xmlns="http://www.w3.org/2000/svg"><g><circle cx="362.589996" cy="204.589996" data-fill="1" id="Oval" r="204.589996"></circle><rect data-fill="2" height="545.799988" id="Rectangle" width="100" x="0" y="0"></rect></g></svg>
@ -144,8 +135,14 @@
{% trans "Become a Patron!" %}
</span>
</div>
</a> -->
<a href="https://www.paypal.com/donate/?hosted_button_id=M6YBYZ63MQGAY" target="_blank">
<img src="/static/img/paypal.png" width="250" style="margin-top: -20px;">
</a>
</div>
<div class="col-lg-2 footer-text col-sm-12">
<p>42ctf@protonmail.com <br>Made with <img src="{% static "img/smoke.png" %}" width="20px" style="margin-top:-5px"> by <a href="https://ix-56h.github.io/">ix-56h</a> - <a href="{% url "cgu" %}">CGU</a></p>
</div>
</div>
</footer>
<!-- Optional JavaScript -->