From 94874107b6979c1dd1ff47a204c54ce3b4b21258 Mon Sep 17 00:00:00 2001 From: MeowOS Date: Mon, 31 Aug 2026 22:24:49 +0800 Subject: [PATCH] =?UTF-8?q?fix(ncm/ui):=20=E6=96=87=E6=A1=88=E4=B8=AD?= =?UTF-8?q?=E6=96=87=E5=8C=96+=E4=BA=8B=E5=AE=9E=E6=80=A7=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E4=BF=AE=E6=AD=A3=20=E2=80=94=20=E9=9F=B3=E8=B4=A8?= =?UTF-8?q?=E6=A1=A3=E4=BD=8D=E5=AF=B9=E9=BD=90=E5=AE=98=E6=96=B9=E5=8F=A3?= =?UTF-8?q?=E5=BE=84(Hi-Res/=E6=97=A0=E6=8D=9F/=E6=9E=81=E9=AB=98/?= =?UTF-8?q?=E8=BE=83=E9=AB=98/=E6=A0=87=E5=87=86)=E3=80=81=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E9=A1=B5topbar/sheet/=E7=A1=AE=E8=AE=A4=E6=A1=86?= =?UTF-8?q?=E4=B8=AD=E6=96=87=E3=80=81=E9=A1=B5=E8=84=9A=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E6=94=B9=E5=86=99=E5=87=86=E7=A1=AE;=20?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E9=A1=B5=E9=A1=B5=E8=84=9A=E3=80=8C=E5=B7=A6?= =?UTF-8?q?=E5=8F=B3=E6=BB=91=E5=88=87=E6=AD=8C=E3=80=8D=E6=94=B9=E3=80=8C?= =?UTF-8?q?=E5=B7=A6=E7=BC=98=E5=8F=B3=E6=BB=91=E8=BF=94=E5=9B=9E=20?= =?UTF-8?q?=E3=83=BB=20=E2=9F=B3=20=E5=88=87=E6=A8=AA=E5=B1=8F=E3=80=8D?= =?UTF-8?q?=E3=80=81=E7=A9=BA=E6=80=81/=E6=AD=8C=E8=AF=8D=E6=80=81/?= =?UTF-8?q?=E9=A1=B6=E6=A0=8F=E4=B8=AD=E6=96=87;=20=E6=AD=8C=E5=8D=95/?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E7=A9=BA=E6=80=81=E4=B8=8E=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=A1=B5=E7=8A=B6=E6=80=81=E5=85=A8=E4=B8=AD=E6=96=87=E3=80=82?= =?UTF-8?q?=E4=BA=8C=E8=BF=9B=E5=88=B6=E9=9A=8F=20246=20=E9=87=8D=E9=93=BE?= =?UTF-8?q?=E5=90=8E=E7=83=AD=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- patch_v2/ncm_app/app/ui/login.c | 14 +++++++------- patch_v2/ncm_app/app/ui/player.c | 8 ++++---- patch_v2/ncm_app/app/ui/playlist.c | 8 ++++---- patch_v2/ncm_app/app/ui/search.c | 10 +++++----- patch_v2/ncm_app/app/ui/settings.c | 26 +++++++++++++------------- 5 files changed, 33 insertions(+), 33 deletions(-) diff --git a/patch_v2/ncm_app/app/ui/login.c b/patch_v2/ncm_app/app/ui/login.c index ac34b1b..9861d61 100644 --- a/patch_v2/ncm_app/app/ui/login.c +++ b/patch_v2/ncm_app/app/ui/login.c @@ -66,12 +66,12 @@ static void login_draw(void *ctx) meow_ui_fill_rect(ox + x*m, oy + y*m, m, m, qr_fg); } else { meow_ui_text_center(W/2, qy + qc/2 - 10, - g_err ? "no network - tap to retry" : "fetching QR key...", 20, th->dim); + g_err ? "网络异常,点按重试" : "正在获取二维码...", 20, th->dim); } /* 状态文字:成功/等待用红(day red / night red_lit),失败红字提示。 */ const char *st = login_status_str(g_st.login_state); - if (g_st.login_state == NCM_LOGIN_OK && g_done) st = "success"; + if (g_st.login_state == NCM_LOGIN_OK && g_done) st = "登录成功"; uint32_t scol = (g_st.login_state == NCM_LOGIN_OK) ? pa->red : th->dim; meow_ui_text_center(W/2, 476, st, 20, scol); @@ -88,11 +88,11 @@ static void login_repaint(void) const char *login_status_str(int state) { switch (state) { - case NCM_LOGIN_PENDING: return "waiting for scan..."; - case NCM_LOGIN_SCANNED: return "scanned - confirm on phone"; - case NCM_LOGIN_OK: return "signed in!"; - case NCM_LOGIN_EXPIRED: return "QR expired - refreshing"; - default: return "error, tap to retry"; + case NCM_LOGIN_PENDING: return "等待扫码..."; + case NCM_LOGIN_SCANNED: return "已扫码,请在手机上确认"; + case NCM_LOGIN_OK: return "登录成功"; + case NCM_LOGIN_EXPIRED: return "二维码已过期,正在刷新"; + default: return "出错了,点按重试"; } } diff --git a/patch_v2/ncm_app/app/ui/player.c b/patch_v2/ncm_app/app/ui/player.c index 207dcbd..fedded5 100644 --- a/patch_v2/ncm_app/app/ui/player.c +++ b/patch_v2/ncm_app/app/ui/player.c @@ -190,7 +190,7 @@ static void plr_draw_dyn(void *ctx) const ncm_pal_t *pa = ncm_palette(g_dark); int sc = cur_song(); const ncm_song_t *s = (sc >= 0) ? &g_st.songs[sc] : NULL; - const char *nm = s ? s->name : "nothing playing"; + const char *nm = s ? s->name : "暂无播放"; const char *ar = s ? s->art_name : ""; if (g_landscape) { @@ -234,7 +234,7 @@ static void plr_draw_dyn(void *ctx) if (n == 0) { /* 二期:歌词后台加载,状态区分「加载中 / 真的无词」 */ meow_ui_text_center(lcx, center_y - 10, - lyric_state() == 2 ? "no lyric" : "loading lyric...", + lyric_state() == 2 ? "暂无歌词" : "歌词加载中…", 20, th->onSurfaceVariant); } else { @@ -257,7 +257,7 @@ static void plr_draw_dyn(void *ctx) /* 页脚提示(用「・」U+30FB 而非 U+00B7「·」:common 字库按 GB2312 解码 A1A4 得 U+30FB, * 不含 U+00B7 → 后者在设备上是豆腐块。REPORT §11 二期。) */ char foot[64]; - snprintf(foot, sizeof foot, "左右滑切歌 ・ 点顶部切横屏"); + snprintf(foot, sizeof foot, "左缘右滑返回 ・ ⟳ 切横屏"); meow_ui_text_center(r_cont.x + r_cont.w / 2, r_cont.y + r_cont.h - APP_FOOTER_H, foot, 20, th->onSurfaceVariant); } @@ -369,7 +369,7 @@ static void plr_page_create(meow_view *v, void *ctx) ((player_ctrl *)ctx)->view = v; player_compute_geom(); meow_ui_activity_push(ACT_PLAYER); /* owner=ACT_PLAYER */ - g_tb = ncm_topbar_create("Now Playing", 1, "\xe2\x86\xbb"); /* 返回 + ⟳ 布局 */ + g_tb = ncm_topbar_create("正在播放", 1, "\xe2\x86\xbb"); /* 返回 + ⟳ 布局 */ meow_ui_activity_pop(); g_custom_disc = meow_draw_custom_register(10, g_disc_r.x, g_disc_r.y, g_disc_r.w, g_disc_r.h, plr_draw_disc, NULL); diff --git a/patch_v2/ncm_app/app/ui/playlist.c b/patch_v2/ncm_app/app/ui/playlist.c index 7323786..31d3161 100644 --- a/patch_v2/ncm_app/app/ui/playlist.c +++ b/patch_v2/ncm_app/app/ui/playlist.c @@ -155,10 +155,10 @@ static void pl_draw_empty(void *ctx) (void)ctx; if (meow_ui_activity_active() != ACT_PLAYLIST) return; if (g_load_err == 0 && g_st.song_count != 0) return; - if (g_plloading) { ncm_draw_empty(r_list, "LOADING", "正在加载曲目..."); return; } - if (g_load_err == NCM_ERR_AUTH) ncm_draw_empty(r_list, "SESSION EXPIRED", "请重新登录"); - else if (g_load_err) ncm_draw_empty(r_list, "LOAD FAILED", "点按重试"); - else ncm_draw_empty(r_list, "NO TRACKS", "这个歌单是空的"); + if (g_plloading) { ncm_draw_empty(r_list, "加载中", "正在加载曲目..."); return; } + if (g_load_err == NCM_ERR_AUTH) ncm_draw_empty(r_list, "登录已过期", "请重新登录"); + else if (g_load_err) ncm_draw_empty(r_list, "加载失败", "点按重试"); + else ncm_draw_empty(r_list, "暂无歌曲", "这个歌单是空的"); } static void pl_draw_footer(void *ctx) diff --git a/patch_v2/ncm_app/app/ui/search.c b/patch_v2/ncm_app/app/ui/search.c index 6d810a6..01657f9 100644 --- a/patch_v2/ncm_app/app/ui/search.c +++ b/patch_v2/ncm_app/app/ui/search.c @@ -56,11 +56,11 @@ static void sr_draw_empty(void *ctx) (void)ctx; if (meow_ui_activity_active() != ACT_SEARCH) return; if (g_st.search_count != 0 && g_st.search_err == 0) return; - if (g_loading) { ncm_draw_empty(r_list, "SEARCHING", "正在搜索..."); return; } - if (g_st.search_err == NCM_ERR_AUTH) ncm_draw_empty(r_list, "SESSION EXPIRED", "请重新登录"); - else if (g_st.search_err) ncm_draw_empty(r_list, "SEARCH FAILED", "点「搜索」重试"); - else if (!g_query[0]) ncm_draw_empty(r_list, "NO KEYWORD", "输入关键词点「搜索」"); - else ncm_draw_empty(r_list, "NO RESULTS", "未找到相关歌曲"); + if (g_loading) { ncm_draw_empty(r_list, "搜索中", "正在搜索..."); return; } + if (g_st.search_err == NCM_ERR_AUTH) ncm_draw_empty(r_list, "登录已过期", "请重新登录"); + else if (g_st.search_err) ncm_draw_empty(r_list, "搜索失败", "点「搜索」重试"); + else if (!g_query[0]) ncm_draw_empty(r_list, "输入关键词", "输入后点「搜索」"); + else ncm_draw_empty(r_list, "没有结果", "未找到相关歌曲"); } static void sr_draw_footer(void *ctx) diff --git a/patch_v2/ncm_app/app/ui/settings.c b/patch_v2/ncm_app/app/ui/settings.c index 2ffd590..bd78588 100644 --- a/patch_v2/ncm_app/app/ui/settings.c +++ b/patch_v2/ncm_app/app/ui/settings.c @@ -28,10 +28,10 @@ static const char *level_name(int lv) { switch (lv) { case NCM_LEVEL_HIRES: return "Hi-Res"; - case NCM_LEVEL_LOSSLESS:return "Lossless"; - case NCM_LEVEL_EXHIGH: return "Exhigh"; - case NCM_LEVEL_HIGHER: return "Higher"; - default: return "Standard"; + case NCM_LEVEL_LOSSLESS:return "无损"; + case NCM_LEVEL_EXHIGH: return "极高"; + case NCM_LEVEL_HIGHER: return "较高"; + default: return "标准"; } } @@ -98,8 +98,8 @@ static void settings_draw(void *ctx) /* 品牌红页脚小字。 */ int ny = y + SETTINGS_ROWS * (g_row_h + 8) + 4; - meow_ui_text(x, ny, "解锁完整音质请登录网易云黑胶会员", 20, th->onSurfaceVariant); - meow_ui_text(x, ny + 24, "品牌红 © MeowOS · NCM", 20, pa->red); + meow_ui_text(x, ny, "Hi-Res/无损需黑胶会员,不支持时自动降级", 20, th->onSurfaceVariant); + meow_ui_text(x, ny + 24, "网易云音乐 · MeowOS 移植版", 20, pa->red); } static int row_at(int x, int y) @@ -150,10 +150,10 @@ int settings_on_tap(int x, int y) if (row < 0) return 0; if (row == 0) { /* 音质:Top 档选择,单曲不可用时 core 逐档降级 */ - static const char *lbls[5] = { "Hi-Res", "Lossless", "Exhigh", "Higher", "Standard" }; + static const char *lbls[5] = { "Hi-Res", "无损", "极高", "较高", "标准" }; static const int lvls[5] = { NCM_LEVEL_HIRES, NCM_LEVEL_LOSSLESS, NCM_LEVEL_EXHIGH, NCM_LEVEL_HIGHER, NCM_LEVEL_STANDARD }; - meow_sheet *s = meow_sheet_create("Music Quality", 0); + meow_sheet *s = meow_sheet_create("选择音质", 0); for (int i = 0; i < 5; i++) meow_sheet_add_item(s, lbls[i]); int op = meow_sheet_open(s); meow_sheet_free(s); @@ -169,7 +169,7 @@ int settings_on_tap(int x, int y) static const int gbs[] = { 1, 2, 5, 10, 20, 30, 50, 100 }; static const char *labels[] = { "1 GB", "2 GB", "5 GB", "10 GB", "20 GB", "30 GB", "50 GB", "100 GB" }; - meow_sheet *s = meow_sheet_create("Cache Limit", 0); + meow_sheet *s = meow_sheet_create("缓存上限", 0); for (int i = 0; i < 8; i++) meow_sheet_add_item(s, labels[i]); meow_sheet_add_item(s, "自定义..."); int op = meow_sheet_open(s); @@ -184,7 +184,7 @@ int settings_on_tap(int x, int y) return 1; } if (row == 2) { /* 清理缓存 */ - meow_dialog *d = meow_dialog_create(MEOW_DLG_CONFIRM, "Clear Cache?"); + meow_dialog *d = meow_dialog_create(MEOW_DLG_CONFIRM, "清理缓存?"); char msg[160]; char usetxt[24]; fmt_bytes(g_cache_used, usetxt, sizeof usetxt); @@ -203,9 +203,9 @@ int settings_on_tap(int x, int y) return 1; } if (row == 3) { /* 退出登录 */ - meow_dialog *d = meow_dialog_create(MEOW_DLG_CONFIRM, "Sign out?"); + meow_dialog *d = meow_dialog_create(MEOW_DLG_CONFIRM, "退出登录?"); const char *msgs[1]; - msgs[0] = "Playback will stop.\nYou'll need to scan a QR code again."; + msgs[0] = "将停止播放并清除登录态,\n下次使用需重新扫码。"; meow_dialog_set_items(d, msgs, 1, -1); int yes = meow_dialog_confirm(d); meow_dialog_free(d); @@ -246,7 +246,7 @@ static void st_page_create(meow_view *v, void *ctx) ((settings_ctrl *)ctx)->view = v; r_cont = ncm_content_rect(); meow_ui_activity_push(ACT_SETTINGS); /* owner=ACT_SETTINGS */ - g_tb = ncm_topbar_create("Settings", 1, NULL); + g_tb = ncm_topbar_create("设置", 1, NULL); meow_ui_activity_pop(); g_row_h = 60; g_custom_id = meow_draw_custom_register(1, r_cont.x, r_cont.y, r_cont.w, r_cont.h,