diff --git a/packages/hydrooj/src/handler/problem.ts b/packages/hydrooj/src/handler/problem.ts index 99ba1cf8f..ffe9e273c 100644 --- a/packages/hydrooj/src/handler/problem.ts +++ b/packages/hydrooj/src/handler/problem.ts @@ -608,6 +608,7 @@ export class ProblemManageHandler extends ProblemDetailHandler { export class ProblemEditHandler extends ProblemManageHandler { async get() { this.response.body.additional_file = sortFiles(this.pdoc.additional_file || []); + this.response.body.statementLangs = this.ctx.i18n.langs(false); this.response.template = 'problem_edit.html'; } diff --git a/packages/hydrooj/src/lib/i18n.ts b/packages/hydrooj/src/lib/i18n.ts index c7d626b7a..6608d9281 100644 --- a/packages/hydrooj/src/lib/i18n.ts +++ b/packages/hydrooj/src/lib/i18n.ts @@ -20,6 +20,15 @@ export class I18nService extends Service { this.load('ja', { __flag: '🇯🇵', __id: 'ja', __langname: '日本語' }); } + langs(interfaceOnly = false) { + const langs: Record = {}; + for (const lang in translations) { + if (interfaceOnly && !translations[lang].find((i) => i.__interface)) continue; + langs[lang] = this.get('__langname', lang); + } + return langs; + } + load(lang: string, content: Record) { this.ctx.effect(() => { translations[lang] ||= []; diff --git a/packages/ui-default/templates/layout/html5.html b/packages/ui-default/templates/layout/html5.html index 243e7e8fd..1ba82b5f0 100644 --- a/packages/ui-default/templates/layout/html5.html +++ b/packages/ui-default/templates/layout/html5.html @@ -40,7 +40,7 @@ {% if process.env.DEV %} - + {% else %} {% endif %} diff --git a/packages/ui-default/templates/problem_edit.html b/packages/ui-default/templates/problem_edit.html index 43ce7ea25..1136ea309 100644 --- a/packages/ui-default/templates/problem_edit.html +++ b/packages/ui-default/templates/problem_edit.html @@ -52,11 +52,9 @@
  • {{ _('__langname') }}
  • - {% for k, v in model.setting.SETTINGS_BY_KEY['viewLang'].range %} - {% if k != handler.user.viewLang %} -
  • {{ v }}
  • - {% endif %} - {% endfor %} + {% for k, v in statementLangs %}{% if k != handler.user.viewLang %} +
  • {{ v }}
  • + {% endif %}{% endfor %}