The IOI Task Translation System provides a web interface for translating the tasks (problems) into various languages during the International Olympiads in Informatics. The system was initially developed and first used in IOI 2017 in Tehran, Iran.
- Markdown editor with mathematical expressions support
- Support for right-to-left and southeastern languages
- Embedded printing system
- User-friendly editing environment with parallel view
- PDF generation with custom fonts
- Revision history with diff mode
- Handy notification system
- Full-featured admin page
- Support for multiple contests
- Dockerized and easy to develop and deploy
Read the documentation here.
- Install Docker and Docker Compose.
- Clone the project to your machine.
- Run
docker compose up -d
.
At this point, the app will be running at http://localhost:9000/
. You may optionally perform the following tasks:
- To create initial administrator users and groups, run
docker compose exec app bash
, and then in the shell, runpython3 manage.py loaddata initial_data.json
. Then, exit from the shell by typingexit
. - To add countries, languages, and users, use the CSV importer in the admin interface. Sample data is provided in
data/
. - You can get access to the system logs by running
docker compose logs
. To follow the logs from now on, rundocker compose logs -f --tail=0
. - To stop the app, run
docker compose stop
.
- Go to IAM & Admin → Service Accounts in the Google Cloud Console.
- Click “Create Service Account”.
- Enter a name (e.g.
ioi-translation-bot
) and an optional description → Create. - Assign the single role: Cloud Translation API User (
roles/cloudtranslate.user
). - Click Continue and then Done.
- Open the newly created service account in the list.
- Go to the Keys tab → Add Key → Create new key → JSON.
- Download the key file and save it as:
./secrets/google_service_account.json
. - Replace
CHANGE_ME_GCP_PROJECT_ID
indocker-compose.yml
with your actual GCP project ID and start.
This software is distributed under the MIT license, and uses third party libraries that are distributed under their own terms (see LICENSE-3RD-PARTY.txt).
Copyright (c), IOI International Technical Committee.
Initiated by the IOI 2017 Host Technical Committee.