CTFd / CTFd/CTFd

i18n translation request for comments

Open
#2,213 3 comments 2 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
6.8k
Forks
2.8k
Avg merge
1d 6h
Merged PRs (30d)
5

Description

this is a long needed feature. game organizers often struggles on internalization, and it's boring and time wasting.

I've started some coding on https://github.com/frankli0324/CTFd/tree/feat/i18n-backend, want some comments.
it's after writing all these (below) that I realized that ColdHeat already added the 3.6 milestone... I think I could help with that?
I think I'll post it anyway...

---

let alone whether this implementation is good or bad, it's needed.

things I've considered:

although CTFd is designed as a flask app, it's splitted into frontend and backend. However CTFd still relies heavily on template rendering. That makes us to take three parts into consideration when adding i18n:

* javascript, which handles the rendering of some backend-irrelevant data.
* Jinja templates, I think we could inject an i18n function into the environment to use in the templates.
* python backend, which returns some of the messages, and that's what I'm working on right now.

for the first part, maybe CTFd could consider it a job for theme developers, but it would be nice if the core theme could provide some i18n abilities.

I've attempted to take the i18n entirely to the frontend in #1083, but it seems that it's a bad idea.

I believe that CTFd could easily achieve:

* letting the game admin set a default language for all users
* let the user override the language

with this work done.

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the existing work in the linked feat/i18n-backend branch and the three areas named in the issue: JavaScript, Jinja templates, and the Python backend. The stated goals are an organizer-selected default language and a user language override, with translation support across the application.

Written by the indexing model from the issue text.

Assessment

Tech stack
flask, javascript, python
Domain
full-stack, internationalization
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.