From 1aeaf14a038f967d0151dbc31917ada4d812839f Mon Sep 17 00:00:00 2001 From: undefined Date: Sat, 9 Jan 2021 22:44:38 +0800 Subject: [PATCH] =?UTF-8?q?core:=20=E6=94=AF=E6=8C=81=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E7=BA=A7=E8=AF=AD=E8=A8=80=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/hydrooj/src/interface.ts | 1 + packages/hydrooj/src/lib/i18n.ts | 2 +- packages/hydrooj/src/model/setting.ts | 3 ++- packages/hydrooj/src/ui.ts | 9 ++++++--- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/hydrooj/src/interface.ts b/packages/hydrooj/src/interface.ts index 65f307577..a5c5ad6b8 100644 --- a/packages/hydrooj/src/interface.ts +++ b/packages/hydrooj/src/interface.ts @@ -32,6 +32,7 @@ export interface SystemKeys { 'server.xff': string, 'server.worker': number, 'server.port': number, + 'server.language': string, 'session.keys': string[], 'session.secure': boolean, 'session.expire_seconds': number, diff --git a/packages/hydrooj/src/lib/i18n.ts b/packages/hydrooj/src/lib/i18n.ts index 907cc3ef6..40558fa3b 100644 --- a/packages/hydrooj/src/lib/i18n.ts +++ b/packages/hydrooj/src/lib/i18n.ts @@ -43,7 +43,7 @@ String.prototype.rawformat = function rawFormat(object) { }; String.prototype.translate = function translate(...languages: string[]) { - if (!languages.length) languages = ['zh_CN']; + languages.push(global.Hydro.model.system.get('server.language')); for (const language of languages) { if (!language) continue; if (locales[language]) { diff --git a/packages/hydrooj/src/model/setting.ts b/packages/hydrooj/src/model/setting.ts index 18a4aba2b..31022da8a 100644 --- a/packages/hydrooj/src/model/setting.ts +++ b/packages/hydrooj/src/model/setting.ts @@ -81,7 +81,7 @@ export const SystemSetting = (...settings: _Setting[]) => { }; PreferenceSetting( - Setting('setting_display', 'viewLang', langRange, 'zh_CN', 'select', 'UI Language'), + Setting('setting_display', 'viewLang', langRange, null, 'select', 'UI Language'), Setting('setting_display', 'timeZone', timezones, 'Asia/Shanghai', 'select', 'Timezone'), Setting('setting_usage', 'codeLang', builtin.LANG_TEXTS, 'c', 'select', 'Default Code Language'), Setting('setting_usage', 'codeTemplate', null, '', 'textarea', 'Default Code Template', @@ -141,6 +141,7 @@ SystemSetting( Setting('setting_server', 'server.cdn', null, '/', 'text', 'CDN Prefix', 'Ends with /'), Setting('setting_server', 'server.port', null, 8888, 'number', 'Server Port'), Setting('setting_server', 'server.xff', null, null, 'text', 'IP Header', 'e.g. x-forwarded-for (lowercase)'), + Setting('setting_server', 'server.language', langRange, 'zh_CN', 'select', 'Default display language'), Setting('setting_session', 'session.keys', null, [String.random(32)], 'text', 'session.keys', null, FLAG_HIDDEN), Setting('setting_session', 'session.secure', null, false, 'boolean', 'session.secure'), Setting('setting_session', 'session.saved_expire_seconds', null, 3600 * 24 * 30, 'number', 'Saved session expire seconds'), diff --git a/packages/hydrooj/src/ui.ts b/packages/hydrooj/src/ui.ts index 83db23f65..1e92f7adb 100644 --- a/packages/hydrooj/src/ui.ts +++ b/packages/hydrooj/src/ui.ts @@ -13,6 +13,8 @@ declare module 'terminal-kit/Terminal' { } } +const useTerminal = cluster.isMaster && process.stdout.isTTY && !argv.legacy; + export namespace Progress { export class Progress { constructor(public args) { @@ -31,7 +33,8 @@ export namespace Progress { } export function create(args) { - return (process.stdout.isTTY && !argv.legacy) + // TODO handle worker process + return useTerminal ? terminal.progressBar(args) : new Progress(args); } @@ -44,7 +47,7 @@ async function terminate() { } catch (e) { hasError = true; } - if (cluster.isMaster && process.stdout.isTTY && !argv.legacy) { + if (useTerminal) { terminal.hideCursor(false); terminal.styleReset(); terminal.resetScrollingRegion(); @@ -55,7 +58,7 @@ async function terminate() { } process.on('SIGINT', terminate); -if (cluster.isMaster && process.stdout.isTTY && !argv.legacy) { +if (useTerminal) { terminal.clear(); terminal.grabInput(); terminal.hideCursor();